Receiver auto on/off via openHAB
Verfasst: Fr 20. Nov 2020, 17:41
Hallo zusammen,
leider fährt mein Coolstream Tank hin und wieder nicht komplett hoch.
Er bleibt dann immer bei "Starting..." im Display stehen.
Nun habe ich mir mittels einem Shelly PlugS Zwischenstecker und openHAB einen kleinen Workaround gebaut:
Der Ablauf:
Der Coolstream wird über den Shelly Zwischenstecker eingeschaltet.
Sollte der Coolstream nicht komplett hochfahren wird nach 180s wieder abgeschaltet und nach 10s wieder ein.
Es gibt max. 3 Versuche dann wird abgebrochen und nicht weiter versucht einzuschalten.
Ist dies der Fall bekomme ich eine Nachricht aufs mobile Endgerät.
In aller Regel fährt jedoch der Coolstream beim zweiten Versuch komplett hoch.
Welche Hardware benötigt ?
openHab auf einem Raspi 3b+
Shelly PlugS Zwischenstecker (quasi ein Relais mit Wlan)
Der Rest ist Software
Zunächst muss ja openHAB mitbekommen ob der Coolstream überhaupt komplett hochgefahren ist oder nicht.
Hierzu habe ich ein Perl Script welches mir die Uhrzeit vom Coolstream holt wenn er komplett hochgefahren ist:
gettime.pl:
Dieses Script wird alle 60s von openHAB aufgerufen.
Hierzu muss man den Aufruf als "thing" in openHAB definieren.
exec.things:
Der Output dieses Scripts, also die aktuelle Uhrzeit im Coolstream, wird dann in ein Item "CoolstreamTime" geschrieben
coolstream.items:
Damit openHAB den Shelly Zwischenstecker ansprechen kann muss hierzu auch ein Item definiert werden:
shelly.items:
Damit ich diese Automatik auch aktivieren und deaktivieren kann braucht es noch ein zusätzliches "Schalter" Item:
So und nun das eigentliches Programm bzw. "Rules" wird das in openHAB genannt:
Viel Spass damit!
leider fährt mein Coolstream Tank hin und wieder nicht komplett hoch.
Er bleibt dann immer bei "Starting..." im Display stehen.
Nun habe ich mir mittels einem Shelly PlugS Zwischenstecker und openHAB einen kleinen Workaround gebaut:
Der Ablauf:
Der Coolstream wird über den Shelly Zwischenstecker eingeschaltet.
Sollte der Coolstream nicht komplett hochfahren wird nach 180s wieder abgeschaltet und nach 10s wieder ein.
Es gibt max. 3 Versuche dann wird abgebrochen und nicht weiter versucht einzuschalten.
Ist dies der Fall bekomme ich eine Nachricht aufs mobile Endgerät.
In aller Regel fährt jedoch der Coolstream beim zweiten Versuch komplett hoch.
Welche Hardware benötigt ?
openHab auf einem Raspi 3b+
Shelly PlugS Zwischenstecker (quasi ein Relais mit Wlan)
Der Rest ist Software
Zunächst muss ja openHAB mitbekommen ob der Coolstream überhaupt komplett hochgefahren ist oder nicht.
Hierzu habe ich ein Perl Script welches mir die Uhrzeit vom Coolstream holt wenn er komplett hochgefahren ist:
gettime.pl:
Code: Alles auswählen
#!/usr/bin/perl
$boxcall = `curl -s http://192.168.2.116/control/gettime`;
if ($boxcall =~ /^\d{2}:\d{2}:\d{2}/) {
print $boxcall;
} else {
print "offline";
}
Hierzu muss man den Aufruf als "thing" in openHAB definieren.
exec.things:
Code: Alles auswählen
Thing exec:command:gettime [command="/etc/openhab2/scripts/./gettime.pl", interval=60, timeout=5] // Coolstream hole aktuelle Uhrzeit
coolstream.items:
Code: Alles auswählen
String CoolstreamTime "Coolstream Tank Uhrzeit: [%s]" {channel="exec:command:gettime:output"}
shelly.items:
Code: Alles auswählen
Switch ShellyPlugS_06 "Shelly SAT [%s]" <poweroutlet> {http=">[ON:POST:http://192.168.2.46/relay/0?turn=on] >[OFF:POST:http://192.168.2.46/relay/0?turn=off]"}
Code: Alles auswählen
Switch Coolstream_Autorestart "Coolstream Autorestart [%s]" <switch>
Code: Alles auswählen
// https://openhabforum.de/viewtopic.php?f=13&t=4190&start=10
// globale Variablen zu Beginn der Datei definieren
var Timer tCheck = null // Timer für Receivercheck
var Integer iTry = 1 // Zähler Startversuche
rule "Satreceiver Startup Check"
when
Item ShellyPlugS_06 changed to ON // SAT eingeschaltet
then
if (Coolstream_Autorestart.state!=ON) { // Wenn Autorestart nicht an, Abbruch
logInfo("satreceiver","Coolstream Autorestart nicht Aktiv, Abbruch.")
return;
}
//if (ShellyPlugS_05_Proxy.state!=ON) { // Wenn Denon nicht an, Abbruch
//logInfo("satreceiver","Denon noch nicht eingeschaltet, Abbruch.")
// return;
//}
logInfo("satreceiver","Coolstream eingeschaltet, warte auf hochfahren.")
if(tCheck !== null) // Timer läuft bereits
return; // also Abbruch
iTry = 1 // Zähler initialisieren
tCheck = createTimer(now.plusSeconds(180), [| // lege Timer an
if(ShellyPlugS_06.state==ON && Coolstream_Autorestart.state==ON) { // Falls Receiver An und Autorestart Ein
if(CoolstreamTime.toString.contains("offline")){ // Falls Offline
iTry = iTry + 1 // Zähler erhöhen
logInfo("satreceiver","Coolstream offline, schalte aus.")
logInfo("satreceiver","{}. Versuch in 10 Sekunden.",iTry)
ShellyPlugS_06.sendCommand(OFF) // Receiver OFF
tCheck.reschedule(now.plusSeconds(10)) // und in 10 Sekunden einschalten
} else { // Falls Online
tCheck = null // Timer löschen
}
} else if(iTry < 4){ // Falls Receiver Aus und noch nicht Maximum erreicht
ShellyPlugS_06.sendCommand(ON) // Receiver ON
logInfo("satreceiver","Coolstream {}. Startversuch.",iTry)
tCheck.reschedule(now.plusSeconds(180)) // und in 180 Sekunden erneut prüfen
} else {
logWarn("satreceiver","Coolstream: Kein weiterer Startversuch!")
sendBroadcastNotification("Satreceiver Startup: Coolstream ist nicht sauber hochgefahren" + " um " + now.toString("HH:mm") + " Uhr") //Allgemeine Warnung an alle
tCheck = null // Timer löschen
}
])
end