watchdog wiederholt ausführen

Begonnen von heinzfo, 30 März 2024, 08:31:51

Vorheriges Thema - Nächstes Thema

heinzfo

Hallo

Warum wird dieser watchdog nicht wiederholt ausgeführt, was mache ich falsch?

defmod vpncheck_wd watchdog FB7590:vpn[0-9]_state:.ready 00:05:00 FB7590:vpn[0-9]_state:.not.active {\
fhem "set vpncheck_at execNow"}
attr vpncheck_wd autoRestart 1
attr vpncheck_wd comment print "Element $i of array1: $array1[$i]\n";;\
print "Element $i of array2: $array2[$i]\n";;
attr vpncheck_wd disable 0
attr vpncheck_wd group FritzBox
attr vpncheck_wd icon secur_locked
attr vpncheck_wd room IT_Equipment
attr vpncheck_wd sortby 07

Grüße

rudolfkoenig

Ich habe die Definition eingespielt und mit Hilfe von dummy+trigger ausgeuehrt: bei mir wird der watchdog wiederholt ausgefuehrt.
Mir kommt die Definition aber komisch vor: warum soll im Normalfall(!) "not active" nach ready  kommen?

kadettilac89

Zitat von: heinzfo am 30 März 2024, 08:31:51Hallo

Warum wird dieser watchdog nicht wiederholt ausgeführt, was mache ich falsch?

Poste mal die Events die erzeugt werden. Hast du irgend ein stateformat oder anderes was die Events anders aussehen ließen? Oder einen Filter mit event-on-**-reading?

Zusätzlich mal ein verbose 4 oder 5 beim Monitoring device. Gibt es da irgend was verdächtiges?

heinzfo

#3
Leider löst der gezeigte watchdog jetzt gar nicht mehr :-(
Komischerweise ist der setstate "triggeredByEvent" vpn4_state: ready

2024-03-30 12:40:49 FRITZBOX FB7590 vpn10_state: ready
2024-03-30 12:40:49 FRITZBOX FB7590 vpn10_remote_ip: 123456
2024-03-30 12:40:49 FRITZBOX FB7590 vpn10_last_negotiation: 30-03-2024 12:39:28
2024-03-30 12:41:52 FRITZBOX FB7590 vpn10_state: not active

defmod vpncheck_wd watchdog FB7590:vpn[0-9]_state:.ready 00:05:00 FB7590:vpn[0-9]_state:.not.active {\
fhem "set vpncheck_at execNow"}
attr vpncheck_wd autoRestart 1
attr vpncheck_wd comment print "Element $i of array1: $array1[$i]\n";;\
print "Element $i of array2: $array2[$i]\n";;
attr vpncheck_wd disable 0
attr vpncheck_wd group FritzBox
attr vpncheck_wd icon secur_locked
attr vpncheck_wd room IT_Equipment
attr vpncheck_wd sortby 07

setstate vpncheck_wd defined
setstate vpncheck_wd 2024-03-30 06:58:28 Activated activated
setstate vpncheck_wd 2024-03-30 07:03:28 Reset reset
setstate vpncheck_wd 2024-03-30 07:03:28 Triggered triggered
setstate vpncheck_wd 2024-03-30 12:14:28 state defined
setstate vpncheck_wd 2024-03-30 06:58:28 triggeredByDev FB7590
setstate vpncheck_wd 2024-03-30 06:58:28 triggeredByEvent vpn4_state: ready

kadettilac89

#4
Zitat von: heinzfo am 30 März 2024, 12:45:36Leider löst der gezeigte watchdog jetzt gar nicht mehr :-(
Komischerweise ist der setstate "triggeredByEvent" vpn4_state: ready

2024-03-30 12:40:49 FRITZBOX FB7590 vpn10_state: ready
2024-03-30 12:40:49 FRITZBOX FB7590 vpn10_remote_ip: 123456
2024-03-30 12:40:49 FRITZBOX FB7590 vpn10_last_negotiation: 30-03-2024 12:39:28
2024-03-30 12:41:52 FRITZBOX FB7590 vpn10_state: not active



works as designed. Du hast in der Definition vpn[0-9]. Das event ist aber vpn10 was dein regex nicht abdeckt. 0-9 ist genau ein nummerischer Wert. 10  sind aber 2 Ziffern

Edit: teste mal das hier -- vpn[0-9]{1,2} -- {1,2} sagt, ein oder zwei Vorkommnisse der Bedingung davor oder -- ([1-9]|1[0-9]) -- ungetestet. Ich weiß nicht wie viel hier Perl auflöst

heinzfo

Ja genau  8)

So geht es nun bis vpn15

FB7590:vpn(1[0-5]|[0-9])_state:.ready 00:05:00 FB7590:vpn(1[0-5]|[0-9])_state:.not.active {
fhem "set vpncheck_at execNow"}

Danke :-)

betateilchen

ob diese Art der numerischen Auswertung per regex sinnvoll ist, mag ich jetzt nicht beurteilen, aber zumindest der Ausführungsteil geht noch einfacher:

FB7590:vpn(1[0-5]|[0-9])_state:.ready 00:05:00 FB7590:vpn(1[0-5]|[0-9])_state:.not.active set vpncheck_at execNow
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

heinzfo

#7
Ja das geht  ;)

FB7590:vpn\d{1,2}_state:.ready 00:05 FB7590:vpn\d{1,2}_state:.not\sactive set vpncheck_at execNow

betateilchen

wenn schon, denn schon...

FB7590:vpn\d+_state:.ready 00:05 FB7590:vpn\d+_state:.not\sactive set vpncheck_at execNow
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!