[gelöst] Watchdog schaltet trotz, dass er inactive ist

Begonnen von Bastian0302, 21 Mai 2017, 00:59:24

Vorheriges Thema - Nächstes Thema

Bastian0302

Guten Tag zusammen.

Ich hab ein Problem mit dem Watchdog. Soweit tut er was er soll. Aber wenn ich ihn auf "inactive" setze nach dem regexp1 erfüllt wurde, zählt er trotzdem noch die Zeit runter und führt wenn regexp2 nicht erfüllt wurden ist den Befehl (command) aus. Und setzt sich durch "autorestart 1" auf defined zurück.

Gibt es eine Attribut welches dies verhindert?

Ich hatte ihn jetzt eine Weile nicht mehr benutzt und bin der Meinung, dass dieses Verhalten erst mit dem neuen Update kam.

Danke schon einmal im Voraus.
Raspbarry Pi 3, Panstamp NRG 2, Cul 433Mhz Sender/Empfänger, Mcp23017 Ein/Ausgabebaugruppe, TabletUi, Doorpi mit Nextion/RFID und Integration in Fhem, Sonos

amenomade

Machst Du set watchdog_name inactive oder attr watchdog_name disable 1 ?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Benni

#2
Ich kenne jetzt leider dein Geamtkonstrukt nicht genau...

Du könntest aber dort, wo du den Watchdog auf inaktiv setzt, ihn vorher noch per

trigger watchdog_name .
manuell auf Ausgangsstellung bringen, ggf. auch Zustandsabhängig.

Wobei ich eigentlich schon auch erwarten würde, dass der Watchdog komplett deaktiviert wird, egal in welchem Zustand er sich gerade befindet. (Ich hab's jetzt nicht selbst überprüft)

Ob set inactive oder attr disable sollte m.E. funktionell keinen Unterschied machen. Lediglich die Auswirkungen auf den Speichermechanismus sind unterschiedlich (Stw.: Rotes Fragezeichen / statefile)
(s.u. -> Noch 'n update)

Update: Ich habe das eben mal schnell durchgespielt und das Verhalten ist tatsächlich so wie beschrieben. Mein Workaround mit zusätzlichem trigger . funktioniert auch wie erwartet.

Wie schon gesagt, ich halte es tendenziell für einen Bug.
Rudi sollte hier normalerweise mitlesen ... schau mer mal ;D

Noch 'n update: Bei attr disable scheint das Problem tatsächlich nicht zu bestehen, dort verhält sich der watchdog wie erwartet und bricht die Ausführung zustandsunabhängig komplett ab.

Bastian0302

#3
Guten Tag zusammen und Danke für die schnelle Hilfe.

Mein Watchdog:
Wohnzimmer_Bewegungsmelder_Zeit watchdog Wohnzimmer_Bewegungsmelder:on.* 00:00:15 Lampe_Dachschraege:off.* {Licht_Bewegungsmelder("Wohnzimmer_Bewegungsmelder","Lampe_Dachschraege")}

Im Prinzip benutze ich ihn als on-for-timer, den man auch eigentlich vor Ablauf der Zeit deaktivieren können sollte..

Ich setze ihn über ein Befehl in 99_myUtils auf {fhem("set Wohnzimmer_Bewegungsmelder_Zeit inactive")} und dies kann zu jedem Zeitpunkt stattfinden.

Ich werde mal die Lösung mit dem "trigger Wohnzimmer_Bewegungsmelder_Zeit" versuchen.

Update:

Mit "trigger Wohnzimmer_Bewegungsmelder_Zeit . ; set Wohnzimmer_Bewegungsmelder_Zeit inactive"  macht er genau das was ich will.


Danke sehr.

Schönen Sonntag noch :)
Raspbarry Pi 3, Panstamp NRG 2, Cul 433Mhz Sender/Empfänger, Mcp23017 Ein/Ausgabebaugruppe, TabletUi, Doorpi mit Nextion/RFID und Integration in Fhem, Sonos

rudolfkoenig

Inactive hat bisher verhindert, dass der Watchdog neue Events bekommt, zusammen mit disable und dsabledForIntervals. Falls der Timer zugeschlagen hat, wurde bisher nur disable geprueft.

Ich finde das ist ein Bug. Ab sofort wird beim Ausfuehren des Codes auch auf disabledForIntervals und inactive geprueft. Achtung: in manchen Situationen kann der Watchdog deswegen sich anders verhalten.

Bastian0302

Oki danke für die Hilfe.

Also wird dies später noch behoben und es funktioniert dann auch mit "set device inactive"?

Raspbarry Pi 3, Panstamp NRG 2, Cul 433Mhz Sender/Empfänger, Mcp23017 Ein/Ausgabebaugruppe, TabletUi, Doorpi mit Nextion/RFID und Integration in Fhem, Sonos

rudolfkoenig

Die Aenderung ist ab sofort im SVN, und morgen etwa ab 8 per update in FHEM verfuegbar.

Bastian0302

#7
Wow geht das schnell :o

Großes Lob mal an der Stelle an alle, die da so engagiert dran arbeiten.
Raspbarry Pi 3, Panstamp NRG 2, Cul 433Mhz Sender/Empfänger, Mcp23017 Ein/Ausgabebaugruppe, TabletUi, Doorpi mit Nextion/RFID und Integration in Fhem, Sonos

Rampler

Hallo zusammen,
kann es sein, dass der Fehler wieder auftritt ?
Jedenfalls bewirkt ein  "inactive" nicht, dass der watchdog abgebrochen wird. Die Befehle im watchdog werden trotzdem ausgeführt, lediglich ein neues triggern wird verhindert.
Während des sleep 15 wird der watchdog inactiviert, die Befehle dahinter werden trotzdem ausgeführt.

GA.torkontakt:open 00:01 GA.torkontakt:closed {if
(ReadingsVal('GA.tor','autoclose',0)  eq "1" &&
 ReadingsVal('FL.EG.gong.mp3.muteswitch','state','') eq "off")
{fhem("set Alarm_sir_ext on-for-timer 0.1 ; sleep 15 ; set set GA.taster on-for-timer 1 ;
define Check_if_really_closed at +00:00:45 {if(Value('GA.torkontakt') ne 'closed') {fhem('set FL.EG.gong.mp3 playTone 42')}
                                         else {fhem('set FL.EG.gong.mp3 playTone 15')}}")}
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

betateilchen

#9
Zitat von: Rampler am 11 Juni 2023, 12:17:23Während des sleep 15 wird der watchdog inactiviert, die Befehle dahinter werden trotzdem ausgeführt.

Das ist kein Fehler, denn alles was hier drinsteht

{fhem("set Alarm_sir_ext on-for-timer 0.1 ; sleep 15 ; set set GA.taster on-for-timer 1 ;
define Check_if_really_closed at +00:00:45 {if(Value('GA.torkontakt') ne 'closed') {fhem('set FL.EG.gong.mp3 playTone 42')}

ist für den watchdog ein einziger "Befehl", der zum Zeitpunkt des sleep 15 bereits vollständig ausgeführt wurde. Von dem sleep in Deinem perl Code bekommt der watchdog nichts mehr mit.

Und FHEM kann nicht unterscheiden, woher ein Ausführungsteil stammt, der nach den 15 Sekunden zur Abarbeitung eingeplant ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!