FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Rheingold am 02 November 2017, 11:53:41

Titel: CUL-Überwachung
Beitrag von: Rheingold am 02 November 2017, 11:53:41
Hi,

ich möchte mit FHEM meine angeschlossenen CULs überwachen. Mein aktueller Ansatz ist wie folgt:

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:


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 :)
Titel: Antw:CUL-Überwachung
Beitrag von: Frank_Huber am 02 November 2017, 13:17:49
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. :-)
Titel: Antw:CUL-Überwachung
Beitrag von: Rheingold am 04 November 2017, 11:11:23
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  ::)