FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Bäschdler am 29 April 2018, 11:09:57

Titel: Triggerbedingungen für Watchdog
Beitrag von: Bäschdler am 29 April 2018, 11:09:57
Hallo,

ich versuche mich gerade daran einen watchdog zu generieren der mehrere Eingangsbedingungen beachtet um getriggert zu werden. Zwischenzeitlich bin ich mir nicht sicher ob so was überhaupt geht.

Was ich haben möchte wäre so in der Art: wenn Rauminnentemperatur über 20 Grad UND azimuth grösser 110 Grad UND Wetter schön DANN Watchdog triggern.

Funktionieren tut schon das Wetter (Dummy mit on / off) und die Werte der Raumtemperatur / des Azimuth auslesen.

Was nicht tut ist (jetzt testhalber mit Dummywerten) folgender watchdog:
define wd_zahl watchdog (dy_test_Zahl>250) 00:00:02 (dy_test_Zahl<250) set dy_test on

Später mal sollte da dann so was in der Art
define wd_zahl watchdog ((dy_test_Zahl>250) && (dy_test_Zahl_2>20) && (dy_test_2 on))  00:00:02 (dy_test_Zahl<250) set dy_test on
daraus werden.

Bisher ist aber leider das einzige was ich an's laufen bekommen habe ein Watchdog der auf eine exakte Zahl reagiert.
   
define wd_zahl watchdog (dy_azimuthstep:270) 00:00:02 (dy_azimuthstep:0) set dy_test on


Kann mir jemand sagen was ich falsch mache?

Danke
Titel: Antw:Triggerbedingungen für Watchdog
Beitrag von: rudolfkoenig am 29 April 2018, 11:44:34
Ein Watchdog prueft beim Eintreffen eines Events ob der erste Regexp erfuellt ist, wenn ja, dann startet er einen InternalTimer mit dem Timeout, und wenn innerhalb dieses Zeitfensters _NICHT_ das zweite (ebenfalls per Regexp spezifizierte) Event eintrifft, dann fuehrt er den Befehl aus.

Dein Anwendungsfall ist mAn was komplett anderes, und eher was fuer notify. Dieses muesste auf alle drei Geraete triggern, und in perl die beschriebene Auswertung fahren. Verzoegert starten kann man im perl-Kontext mit fhem("sleep XX;; Befehl")
Titel: Antw:Triggerbedingungen für Watchdog
Beitrag von: Bäschdler am 29 April 2018, 22:05:06
Mit notify habe ich genau dasselbe verhalten:

(dy_test_Zahl:100) set testdummy on
funktioniert

(dy_test_Zahl>100) set testdummy on
funktioniert schon nicht mehr, irgendwas mit && habe ich leider auch nicht an's laufen gebracht.

Ich hatte den watchdog eigentlich nur deshalb gewählt, weil ich diesen nur einmal ausgeführt haben wollte bis ich ihn dann wieder (nach mehreren Stunden) neu triggere. Die Verzögerungszeit habe ich typischerweise auf eine Sekunde und die RegEx2 auf einen Wert der niemals zu diesem Zeitpunkt erreicht werden kann. Wobei ich auch mit einem notify leben könnte da brauche ich dann eben einen dummy mehr den ich mit dem notify setze und der - wenn er gesetzt ist - das erneute triggern des notify verhindert. Aber, wie oben geschrieben, bekomme ich das auch nicht an's laufen.

Aber danke schon mal für den Tipp mit der Verzögerung, den kann ich sicher auch mal brauchen.
Titel: Antw:Triggerbedingungen für Watchdog
Beitrag von: rudolfkoenig am 29 April 2018, 23:19:06
Zitat(dy_test_Zahl>100) set testdummy on
Ich bitte dich den Begriff Regexp nachzuschlagen, und versuchen zu verstehen.
Titel: Antw:Triggerbedingungen für Watchdog
Beitrag von: Bäschdler am 30 April 2018, 13:54:13
Danke für den Hinweis, da war ich ja total falsch abgebogen...

mit (dy_test_Zahl:[1][8][5-9]|[1][9][5-9]) habe ich es jetzt hin bekommen auf die Wertebereiche 185-189 oder 195 - 199 zu triggern.

Leider habe ich nirgends was dazu gefunden ob und wenn ja wie es möglich ist eine Regel aufzubauen die (auf dem Beispiel hier aufbauend) mit einer Zahl zwischen (185-189 oder 195 - 199) UND testdummy:on triggert.

Hat mir da noch jemand einen Tipp?


Danke schon mal.
Titel: Antw:Triggerbedingungen für Watchdog
Beitrag von: rudolfkoenig am 30 April 2018, 14:18:02
Zahlenvergleiche sollte man nicht mit Regexp loesen wollen, es sei denn, es fehlt einem an Knobelaufgaben.
Titel: Antw:Triggerbedingungen für Watchdog
Beitrag von: Bäschdler am 30 April 2018, 14:40:23
Den Zahlenvergleich habe ich ja. Das ist dann bei meiner realen Anwendung tatsächlich nur ein Wertebereich in dem sich die letzte Stelle bei einer 3-stelligen Zahl in einem Bereich von 0 bis 9 bewegt.

Das momentane Problem das ich gerne gelöst haben würde ist die UND Verknüpfung von 2 verschiedenen Variablen.

Also z. B. testdummy1:on UND testdummy2:on als triggerbedingung für den watchdog
Titel: Antw:Triggerbedingungen für Watchdog
Beitrag von: Byte09 am 30 April 2018, 14:42:23
Zitat von: Bäschdler am 29 April 2018, 11:09:57
Hallo,

ich versuche mich gerade daran einen watchdog zu generieren der mehrere Eingangsbedingungen beachtet um getriggert zu werden. Zwischenzeitlich bin ich mir nicht sicher ob so was überhaupt geht.

Was ich haben möchte wäre so in der Art: wenn Rauminnentemperatur über 20 Grad UND azimuth grösser 110 Grad UND Wetter schön DANN Watchdog triggern.

Funktionieren tut schon das Wetter (Dummy mit on / off) und die Werte der Raumtemperatur / des Azimuth auslesen.

Was nicht tut ist (jetzt testhalber mit Dummywerten) folgender watchdog:
define wd_zahl watchdog (dy_test_Zahl>250) 00:00:02 (dy_test_Zahl<250) set dy_test on

Später mal sollte da dann so was in der Art
define wd_zahl watchdog ((dy_test_Zahl>250) && (dy_test_Zahl_2>20) && (dy_test_2 on))  00:00:02 (dy_test_Zahl<250) set dy_test on
daraus werden.

Bisher ist aber leider das einzige was ich an's laufen bekommen habe ein Watchdog der auf eine exakte Zahl reagiert.
   
define wd_zahl watchdog (dy_azimuthstep:270) 00:00:02 (dy_azimuthstep:0) set dy_test on


Kann mir jemand sagen was ich falsch mache?

Danke

Hi , das kannst du relativ kompfortabel mit MSwitch lösen, da du die werte jederzeit im webinterface ändern kannst .
https://forum.fhem.de/index.php/topic,86199.0.html (https://forum.fhem.de/index.php/topic,86199.0.html)

Falls du es probieren möchtest , ich habe es eben in meinem system entsprechend konfiguriert , könnte dir die komplette RAWdefinition schicken.

gruss Byte09