Hallo zusammen,
ab und an kommt es vor, dass das LIVISI/Innogy-Binding von OpenHAB zwar den Status "ONLINE" anzeigt, jedoch geänderte Werte in der Innogy-Welt nicht mehr an OpenHAB zurückgemeldet werden. Um dies zu verhindern, kann man einen sog. "WatchDog" implementieren. Dieser geht her und schaltet regelmäßig einen Innogy-Zustand von "Nein" auf "Ja". Auf dem SHC gibt es dann wiederrum ein Szenario, das den Zustand sofort wieder auf "Nein" zurückstellt. Passiert dies innerhalb einer bestimmten Zeitspanne nicht, kann OpenHAB davon ausgehen, dass die Verbindung "eingeschlafen" ist, und entsprechende Meldungen ausgeben oder Aktionen starten (z. B. auch den Neustart des Bindings).
Die Umsetzung geht folgendermaßen:
Zuerst definiert ihr auf Eurem SHC einen neuen Zustand "Watchdog"
Anschließend definiert ihr auf dem SHC eine Szenario, welches sinngemäß folgendes macht:
Wenn Zustand "Watchdog" geändert wird auf "JA" dann Zustand "Watchdog" setzten auf "NEIN"
Alles weitere müsst ihr nun in OpenHAB eine entsprechende Regel zu erstellen, die regelmäßig ausgeführt wird.
Diese setzt regelmäßig den "Watchdog" auf "Ja" und überwacht, dass dieser wieder auf "Nein" zurückgesetzt wird.
In dem folgenden Beispiel wird davon ausgegangen, dass der Zustand "WatchDog" aus dem SHC als Item mit der Bezeichnung "Zustand_WatchDog" im Binding eingebunden ist. Dann benötigt ihr folgende Rule:
rule "WatchDog"
when
Time cron "10 0/15 * * * ?" // Alle 15 Minuten (auf die 10er Sekunde)
then
logInfo( "Innogy", "WatchDog gestartet" )
Zustand_WatchDog.sendCommand(ON)
logInfo( "Innogy", "WatchDog gesetzt" )
Thread::sleep(10000) //10 Sekunden
if (Zustand_WatchDog.state == ON) {
//Keine Rückmeldungen mehr
logInfo( "Innogy", "WatchDog - Keine Rückmeldung innerhalb der vorgegebenen Zeit" )
//Hier eine Aktion angeben
} else {
logInfo( "Innogy", "WatchDog - Rückmeldungen OK" )
}
logInfo( "Innogy", "WatchDog beendet" )
end
Display More
An der Stelle //Hier eine Aktion angeben können dann Befehle eingefügt werden, die ausgeführt werden sollen, wenn keine Rückmeldungen erfolgt sind. Beispielsweise ein Binding-Neustart, eine Sprachausgabe, ein E-Mail oder ähnliches.
Viel Spaß beim Nachbauen!
Gruß Ralph