[Gelöst]Watchdog löst nicht aus

Begonnen von dirk.k, 15 Juli 2017, 18:44:16

Vorheriges Thema - Nächstes Thema

dirk.k

Hallo,
ich schalte OTA Updates  über einen MQTT Wert frei. Die Sensoren (ESP8266) laufen dann in einer Schleife und verzichten auf den Deep-Sleep.
Nun vergesse ich gelegentlich OTA wieder abzuschalten, was sehr auf die Batterien geht.
ich wollte das nun mittels watchdog verbessern.
Doch der erstellt watchdog startet nicht.
defmod watchdogS3SetOTPState watchdog WeMos_S3.setOTAState:on 00:00:15 SAME set WeMos_S3 setOTAState off;; trigger watchdogS3SetOTPState .

setze ich als trigger einen . startet der watchdog sofort und schaltet mir das OTA update ordentlich ab:
defmod watchdogS3SetOTPState watchdog . 00:00:15 SAME set WeMos_S3 setOTAState off;; trigger watchdogS3SetOTPState .

kann mir jemand helfen das richtig zu konfigurieren? Was habe ich falsch gemacht?



amenomade

Schwierig zu verstehen, was du willst.

Dein watchdog bedeutet im Moment:
"Wenn das Gerät WeMos_S3.setOTAState NICHT jede 15 Sekunden ein neues Event "on" generiert, schalte off."

Ist das was du willst?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

dirk.k

Das hast du ganz richtig verstanden, nur die 15 Sekunden sind zum testen. realistisch sind 30 Minuten wenn es funktioniert.
Das Ziel:
Wenn das Event "WeMos_S3.setOTAState = on" erfolgt, soll es nach 30 Minuten genau diesen Wert wieder auf "off" setzen, außer wenn der Timer neu gestartet wird.

Nur der Start passiert nicht, der Timer (watchdog) läuft nicht los!

Setze ich als Startevent den ".", läuft der watchdog sofort nach dem Speichern los und schaltet nach zeit 15Sekunden den Wert auf "off"

Ich denke, daß an meiner Definition des Startevent etwas falsch ist...
WeMos_S3.setOTAState:on

WeMos_S3 ist das Device
setOTAState ein Attribut
on der Wert

hier mal noch die zugehörige Definition von  WeMos_S3:
defmod WeMos_S3 MQTT_DEVICE
attr WeMos_S3 IODev mqtt
attr WeMos_S3 alias Sensor 3
attr WeMos_S3 publishSet_setOTAState fhem/sensors/3425514/setOTAState
attr WeMos_S3 stateFormat Temperatur °C, Luftfeuchtigkeit %, Batterie V. BatterieStatus
attr WeMos_S3 subscribeReading_Batterie fhem/sensors/3425514/batterie_voltage
attr WeMos_S3 subscribeReading_BatterieStatus fhem/sensors/3425514/batterie
attr WeMos_S3 subscribeReading_Luftfeuchtigkeit fhem/sensors/3425514/humidity
attr WeMos_S3 subscribeReading_OTA-IP fhem/sensors/3425514/OTA-IP
attr WeMos_S3 subscribeReading_OTAStatus fhem/sensors/3425514/OTAState
attr WeMos_S3 subscribeReading_Temperatur fhem/sensors/3425514/temp_c

In der Readingsgroup kann ich mittels "commads" manuell ein und aus-schalten:
attr rgOTAStatus commands { 'setOTAState.on' => 'set $DEVICE setOTAState off', 'setOTAState.off' => 'set $DEVICE setOTAState on' }
... und genau dafür möchte ich jetzt noch einen Timer der das Abschalten automatisiert.



amenomade

Kenne MQTT weniger, aber kannst Du bitte ein "list WeMos_S3 " posten?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

dirk.k

klar, kein Problem:
Internals:
   CFGFN
   IODev      mqtt
   NAME       WeMos_S3
   NR         161
   STATE      Temperatur °C, Luftfeuchtigkeit %, 3.02 V. OK
   TYPE       MQTT_DEVICE
   qos        2
   retain     1
   READINGS:
     2017-07-15 23:44:49   Batterie        3.02
     2017-07-15 23:44:49   BatterieStatus  OK
     2017-07-15 23:44:48   OTA-IP          192.168.0.217
     2017-07-15 23:44:49   OTAStatus       off
     2017-07-15 23:44:49   WLANRSSI        -74
     2017-07-15 18:22:29   setOTAState     off
     2017-07-15 23:44:49   transmission-state incoming publish received
   message_ids:
   publishSets:
     setOTAState:
       topic      fhem/sensors/3425514/setOTAState
       values:
   sets:

     setOTAState
   subscribe:
     fhem/sensors/3425514/
     fhem/sensors/3425514/batterie_voltage
     fhem/sensors/3425514/batterie
     fhem/sensors/3425514/humidity
     fhem/sensors/3425514/OTA-IP
     fhem/sensors/3425514/OTAState
     fhem/sensors/3425514/temp_c
     fhem/sensors/3425514/WLANRSSI
   subscribeExpr:
     ^fhem\/sensors\/3425514\/$
     ^fhem\/sensors\/3425514\/batterie_voltage$
     ^fhem\/sensors\/3425514\/batterie$
     ^fhem\/sensors\/3425514\/humidity$
     ^fhem\/sensors\/3425514\/OTA-IP$
     ^fhem\/sensors\/3425514\/OTAState$
     ^fhem\/sensors\/3425514\/temp_c$
     ^fhem\/sensors\/3425514\/WLANRSSI$
   subscribeReadings:
     fhem/sensors/3425514/OTA-IP OTA-IP
     fhem/sensors/3425514/OTAState OTAStatus
     fhem/sensors/3425514/WLANRSSI WLANRSSI
     fhem/sensors/3425514/batterie BatterieStatus
     fhem/sensors/3425514/batterie_voltage Batterie
     fhem/sensors/3425514/humidity Luftfeuchtigkeit
     fhem/sensors/3425514/temp_c Temperatur
Attributes:
   IODev      mqtt
   alias      Sensor 3
   autoSubscribeReadings fhem/sensors/3425514/
   publishSet_setOTAState fhem/sensors/3425514/setOTAState
   qos        exactly-once
   retain     1
   room       Training
   stateFormat Temperatur °C, Luftfeuchtigkeit %, Batterie V. BatterieStatus
   subscribeReading_Batterie fhem/sensors/3425514/batterie_voltage
   subscribeReading_BatterieStatus fhem/sensors/3425514/batterie
   subscribeReading_Luftfeuchtigkeit fhem/sensors/3425514/humidity
   subscribeReading_OTA-IP fhem/sensors/3425514/OTA-IP
   subscribeReading_OTAStatus fhem/sensors/3425514/OTAState
   subscribeReading_Temperatur fhem/sensors/3425514/temp_c
   subscribeReading_WLANRSSI fhem/sensors/3425514/WLANRSSI

rudolfkoenig

Solche Probleme sollte man immer zusammen mit den Events melden, selbst die Readings koennen (theoretisch) abweichen. Ich gehe davon aus, dass das Event nicht "setOTAState:on" sondern "setOTAState on" ist, das : gehoert normalerweise zwischen Geraetename und Event. Falls man unsicher ist, dann sollte man den Event monitor starten, und den watchdog mit "Create/Modify Device" anlegen. Damit wird wenigstens der erste Regexp richtig angelegt. Den zweiten Regexp muss man weiterhin aus dem gewuenschten Event selbst ableiten, aber auch diesen sollte man im Event monitor zunaechst sehen, um Ungenauigkeiten zu vermeiden.

dirk.k

DANKE, der Hinweis mit dem Evertmonitor und das Gerät von dort zu erstellen brachte die Lösung.
Auf diese Schreibweise bin ich bei allen Versuchen nicht gekommen.
defmod watchdogS3SetOTPState watchdog WeMos_S3:setOTAState:.on 00:00:15 SAME set WeMos_S3 setOTAState off;; trigger watchdogS3SetOTPState .