Watchdog wird nur einmal ausgeführt

Begonnen von ahstax, 15 Juli 2019, 13:47:53

Vorheriges Thema - Nächstes Thema

ahstax

Hallo miteinander,

ich habe einen Neigungssensor von Homematic, mit dem ich den Zustand vom Garagentor überwache. Leider scheint gerade dieser Sensor von Homematic keine "eventDlyTime" zu unterstützen, weswegen ich meine Überwachung mit einem (funktionierenden) Notify überarbeiten möchte.

Grundsätzlich soll erkannt werden, dass das Tor geschlossen ist, dass das Tor offen ist und dass das Tor länger als 30 Minuten offen ist. Angezeigt wird das dann auch noch mittels Homematic 16-LED-Anzeige

Ich habe hierzu (funktionierend) aus der Raw-Definition:

# Neigungssensor
defmod NS.HM.Garage CUL_HM 123456

# Zustandsdummy
defmod NS.dummy.Garage dummy
attr NS.dummy.Garage devStateIcon open:fts_garage@orange openLong:fts_garage@red closed:fts_garage_door_100@green

# Notify
defmod NS.notify.Garage notify NS.HM.Garage {\
if ( ReadingsVal('NS.HM.Garage', 'state', 'undef') eq 'open'){\
fhem ("set 9200_tebo_TelegramBot message \@XXX 'Garagentor offen'");;\
fhem ("set ANZ.HM.LED.09 led orange");;\
fhem ("set NS.dummy.Garage open")}\
if ( ReadingsVal('NS.HM.Garage', 'state', 'undef') eq 'closed'){\
fhem ("set 9200_tebo_TelegramBot message \@XXX 'Garagentor geschlossen'");;\
fhem ("set ANZ.HM.LED.09 led green");;\
fhem ("set NS.dummy.Garage closed")}\
}

# Watchdog lang offen
defmod NS.watchdog.Garage.open.long watchdog NS.HM.Garage:open 00:30:00 NS.HM.Garage:closed {\
fhem ("set ANZ.HM.LED.09 led red");;\
fhem ("set NS.dummy.Garage openLong");;\
fhem ("set 9200_tebo_TelegramBot message \@XXX 'Garagentor lang offen'")\
}


Da der Sensor gerne mal mehrfach feuert, bspw wegen der Erschütterungen, möchte ich nun eine Verzögerung einbauen. Versucht habe ich das mit weiteren Watchdogs, so dass nun folgendes hinterlegt ist:


# Neigungssensor
defmod NS.HM.Garage CUL_HM 123456

# Zustandsdummy
defmod NS.dummy.Garage dummy
attr NS.dummy.Garage devStateIcon open:fts_garage@orange openLong:fts_garage@red closed:fts_garage_door_100@green

# offen
defmod NS.watchdog.Garage.open watchdog NS.HM.Garage:open 00:00:02 NS.HM.Garage:closed {\
if ( ReadingsVal('NS.dummy.Garage', 'state', 'undef') eq 'closed'){\
fhem ("set 9200_tebo_TelegramBot message \@XXX 'Garagentor offen'");;\
fhem ("set ANZ.HM.LED.09 led orange");;\
fhem ("set NS.dummy.Garage open")}\
}

# lang offen
defmod NS.watchdog.Garage.open.long watchdog NS.HM.Garage:open 00:30:00 NS.HM.Garage:closed {\
fhem ("set ANZ.HM.LED.09 led red");;\
fhem ("set NS.dummy.Garage openLong");;\
fhem ("set 9200_tebo_TelegramBot message \@Andreas_Hess 'Garagentor lang offen'")\
}

# geschlossen
defmod NS.watchdog.Garage.closed watchdog NS.HM.Garage:closed 00:00:02 NS.HM.Garage:open {\
if ( ReadingsVal('NS.dummy.Garage', 'state', 'undef') eq 'open'){\
fhem ("set 9200_tebo_TelegramBot message \@Andreas_Hess 'Garagentor geschlossen'");;\
fhem ("set ANZ.HM.LED.09 led green");;\
fhem ("set NS.dummy.Garage closed")}\
if ( ReadingsVal('NS.dummy.Garage', 'state', 'undef') eq 'openLong'){\
fhem ("set 9200_tebo_TelegramBot message \@Andreas_Hess 'Garagentor geschlossen'");;\
fhem ("set ANZ.HM.LED.09 led green");;\
fhem ("set NS.dummy.Garage closed")}\
}


Wie im Betreff schon skizziert, funktioniert das genau einmal für Öffnen und einmal für das anschließende Schließen. Dann aber nicht mehr.

In der Hoffnung alle notwendigen Infos bereit gestellt zu haben...:
Kann mir jemand sagen, wo ich welchen Fehler mache?

Sonnige Grüße,
Andreas

Otto123

Hallo Andreas,

watchdog arbeitet an sich genauso:
Zitattrigger <watchdogname> . will activate the trigger if its state is defined, and set it into state defined if its state is active (Next:...) or triggered. You always have to reactivate the watchdog with this command once it has triggered (unless you restart fhem)
https://commandref.fhem.de/#watchdog

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

der-Lolo

Otto123 hat recht - lesen hilft....

Beim jeweiligen watchdog Device solltest Du noch das
Atteribut autoRestart auf 1 setzen...


ahstax

Ja, das wars...

attr NS.watchdog.Garage.XXX autoRestart 1

Danke für Euer Input...!!!