Hi,
ich möchte mit FHEM meine angeschlossenen CULs überwachen. Mein aktueller Ansatz ist wie folgt:
- wenn ein CUL ausfällt bekomme ich eine Push-Nachricht
- wenige Sekunden später versuche ich mit einem Befehl die Verbindung zum CUL neu aufzubauen
- Bei dem erfolgreichen Wiederaufbau der Verbindung bekomme ich ebenfalls eine Push-Nachricht.
Gelöst ist es wie folgt (und funktioniert):
define CLU433_Monitor DOIF ([CUL433]ne"Initialized")(set pushmsg msg title='Smart Home' 'CUL 433 ausgefallen';; sleep 10;; set CUL433 reopen)\
DOELSEIF([CUL433]eq"Initialized") (set pushmsg msg title='Smart Home' 'CUL 433 wieder verbunden')
Ich möchte dies jedoch wie folgt ändern und benötige dazu ein bisschen Hilfe:
- wenn ein CUL ausfällt, soll FHEM 30 Sekunden warten (u.a. um auch beim Neustart keine unnätigen Meldungen zu produzieren)
- Wenn dann ein CUL noch immer nicht funktioniert, soll ein "reopen" gesendet werden
- ist dies erfolgreich, soll ich NICHT benachrichtigt werden --> Ende
- kann keine Verbindung zum CUL aufgebaut werden, soll eine PUSH-Nachricht geschickt werden
Wie muss ich vorgehen um das DOIF mit weiteren IF-Schleifen zu verschachteln und ggf. zu escapen (wenn Verbindung hergestellt wurde)?
Idee (keine Ahnung ob sie so funktioniert)
define CLU433_Monitor DOIF
([CUL433]ne"Initialized")
(sleep 30;;
(IF ([CUL433] ne "Initialized")
(set CUL433 reopen;; sleep 10;;
IF([CUL433]ne"Initialized")(set pushmsg msg title='Smart Home' 'CUL 433 ausgefallen')
)
)
)
Ich bin auf eure Meinung zu meinem konzeptionellen Ansatz gespannt. Bestimmt kann der Code auch noch verbessert werden :)
trenne die Befehle in eigene Klammern auf,
dann mit Attribut "Wait" die Wartezeiten definieren.
mit Attribut "do" - "resetwait" wird der Wait abgebrochen
define CLU433_Monitor DOIF ([CUL433]ne"Initialized") (set CUL433 reopen) (set pushmsg msg title='Smart Home' 'CUL 433 ausgefallen')\
DOELSEIF([CUL433]eq"Initialized") (set pushmsg msg title='Smart Home' 'CUL 433 wieder verbunden')
attr CLU433_Monitor wait 0,30:0
attr CLU433_Monitor do resetwait
ungetestet und btw: Tipfehler CLU anstatt CUL. :-)
Hi,
danke für die Hilfe bisher. Habe deinen Code mal versucht und er klappt (fast).
Mit dem Code wartet FHEM nun ob eine Verbindung aufgebaut werden kann. Erfolgt dies nicht innerhalb 30 Sekunden, kommt die Fehlermeldung per Push. Soweit so gut :)
Wird die Verbindung innerhalb der Zeit aufgebaut, kommt trotzdem eine Push-Nachricht mit der Erfolgsmeldung (was eigentlich unnötig ist). Lösche ich einfach die komplette Zeile mit dem DOELSEIF, kommt die Fehlermeldung sofort, wenn die Verbindung abbricht. Muss ich etwas mit dem wait-Befehl anpassen?
Danke auch für den Hinweis zum Tippfehler ::)