[Gelöst] Watchdog ReStart

Begonnen von Hackstall, 19 Juni 2022, 00:29:03

Vorheriges Thema - Nächstes Thema

Hackstall

Hi,

ich habe ein Problem mit dem Watchdog Device:

Ich möchte gerne fehlende Messages per Meldung an Telegram schicken.
Das funktioniert leider nur einmal. Ich habe den Watchdog so verstanden dass wenn
über ein Zeitintervall kein Event gekommen ist dann schlägt der Watchdog zu und via Trigger oder AutoRestart wird
der Watchdog wieder scharf geschaltet. Das passiert bei mir nicht der Watdchdog zeigt beim Restart nicht die Zeit an sondern immer Defined.

Ich habe mit SAME und sowohl Trigger als auch AutoRestart alles versucht. Es klappt nur einmal.

Meine Implementierung;

define WDG_UG_HK_C02_Rauchmelder watchdog UG_HK_C02_Rauchmelder:battery:.* 00:05:00 UG_HK_C02_Rauchmelder:battery:.* set teleBotAK msg @Andreas_Krause ACHTUNG: UG_HK_C0_RauchmelderWDG liefert keine Daten mehr
setuuid WDG_UG_HK_C02_Rauchmelder 62ae221e-f33f-4db7-f0c6-be249a16ac30780d
attr WDG_UG_HK_C02_Rauchmelder DbLogExclude .*
attr WDG_UG_HK_C02_Rauchmelder activateOnStart 1
attr WDG_UG_HK_C02_Rauchmelder autoRestart 1
attr WDG_UG_HK_C02_Rauchmelder group Grp-System-WDG
attr WDG_UG_HK_C02_Rauchmelder icon dog_silhouette
attr WDG_UG_HK_C02_Rauchmelder room 9.6_System
attr WDG_UG_HK_C02_Rauchmelder verbose 0


oder aber auch:

define WDG_UG_HK_C02_Rauchmelder watchdog UG_HK_C02_Rauchmelder:battery:.* 00:05:00 SAME set teleBotAK msg @Andreas_Krause ACHTUNG: UG_HK_C0_RauchmelderWDG liefert keine Daten mehr;;trigger WDG_UG_HK_C02_Rauchmelder .
setuuid WDG_UG_HK_C02_Rauchmelder 62ae221e-f33f-4db7-f0c6-be249a16ac30780d
attr WDG_UG_HK_C02_Rauchmelder DbLogExclude .*
attr WDG_UG_HK_C02_Rauchmelder activateOnStart 1
attr WDG_UG_HK_C02_Rauchmelder group Grp-System-WDG
attr WDG_UG_HK_C02_Rauchmelder icon dog_silhouette
attr WDG_UG_HK_C02_Rauchmelder room 9.6_System
attr WDG_UG_HK_C02_Rauchmelder verbose 0


list ist:

Internals:
   CMD        set teleBotAK msg @Andreas_Krause ACHTUNG: UG_HK_C0_RauchmelderWDG liefert keine Daten mehr
   DEF        UG_HK_C02_Rauchmelder:battery:.* 00:05:00 UG_HK_C02_Rauchmelder:battery:.* set teleBotAK msg @Andreas_Krause ACHTUNG: UG_HK_C0_RauchmelderWDG liefert keine Daten mehr
   FUUID      62ae221e-f33f-4db7-f0c6-be249a16ac30780d
   NAME       WDG_UG_HK_C02_Rauchmelder
   NOTIFYDEV  WDG_UG_HK_C02_Rauchmelder,UG_HK_C02_Rauchmelder
   NR         2991
   NTFY_ORDER 50-WDG_UG_HK_C02_Rauchmelder
   RE1        UG_HK_C02_Rauchmelder:battery:.*
   RE2        UG_HK_C02_Rauchmelder:battery:.*
   STATE      defined
   TO         300
   TYPE       watchdog
   READINGS:
     2022-06-18 22:57:25   Activated       activated
     2022-06-18 23:02:25   Reset           reset
     2022-06-18 23:02:25   Triggered       triggered
     2022-06-18 22:57:25   triggeredByDev  WDG_UG_HK_C02_Rauchmelder
     2022-06-18 22:57:25   triggeredByEvent .
Attributes:
   DbLogExclude .*
   activateOnStart 1
   autoRestart 1
   group      Grp-System-WDG
   icon       dog_silhouette
   room       9.6_System
   verbose    0


Danke für Eure Hilfe

Gruss Andreas

DetlefR

Hallo Andreas,

der Watchdog zeigt solange "defined" an, bis der erste Event aufgetreten ist. D.h. wenn der Rauchmelder ausgefallen ist, dann kommt erst dann die nächste Meldung wenn er mindestens einmal "battery" gesendet hat.

Gruß Detlef

PS: Für gleiche Trigger gibt es "SAME"define WDG_UG_HK_C02_Rauchmelder watchdog UG_HK_C02_Rauchmelder:battery:.* 00:05:00 SAME

Hackstall

Ah danke das erklärt das Verhalten.

Kann man denn den Watchdog so programmieren dass er von selbst wieder startet und bei Ablauf wieder meinen Output erzeugt.

Ich hatte in der Commandref gelesen dass es mit dem . Operator funktionieren müsste,.
Hier wurde auch neu gestartet aber mein Befehl nicht mehr ausgeführt.

Danke Andreas

DetlefR

Das mit dem Punkt habe ich noch nicht ausprobiert.
Für regelmäßige Überprüfungen benutze ich einen Timer.
Als Beispiel:
defmod at_jedestunde at +*01:00:00 {\
WriteStatefile();;\
watch_em();;\
return undef;;\
}
attr at_jedestunde alignTime 15:15

und watch_em steht in 99_myUtils.
sub watch_em(){
foreach my $em(devspec2array("TYPE=MQTT_DEVICE:FILTER=NAME=mqtt_d_dhaem.*")) {
if (ReadingsAge($em,"relay0",3678)>3600){
my $msg="Seit längerem keine Meldungen von $em";
send_telegram($msg);
}
}
}

Hackstall

Hallo,

danke für Eure Antworten aber so ganz gefielen mir die Lösungen nicht.
Somit habe ich noch etwas weiter herumgedoktert und folgend Lösung gefunden:

Die u.g. Implementierung startet den Watchdog immer wieder sofern irgend ein Event im System empfangen wurde.
Sollte innerhalb des Status und einer Zeitdauer von 1h keine Message vom ESP32 Device empfange werden so wird eine Message ausgegeben oder
eine Reovery gestartet.


define WDG_ESP32_CAM_IoT_KG_VK_Gas watchdog .* 01:00:00 ESP32_CAM_IoT_KG_VK_Gas.*  {sendMsg("TELEGRAM","Andreas","ACHTUNG: ESP32_CAM_IoT_KG_VK_Gas liefert keine Daten mehr");;}
attr WDG_ESP32_CAM_IoT_KG_VK_Gas activateOnStart 1
attr WDG_ESP32_CAM_IoT_KG_VK_Gas autoRestart 1
attr WDG_ESP32_CAM_IoT_KG_VK_Gas group Grp-System-WDG
attr WDG_ESP32_CAM_IoT_KG_VK_Gas icon dog_silhouette
attr WDG_ESP32_CAM_IoT_KG_VK_Gas regexp1WontReactivate 1
attr WDG_ESP32_CAM_IoT_KG_VK_Gas room System


DetlefR

watchdog .*

Das geht natürlich immer. ;D

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!