FHEM Forum

FHEM => Automatisierung => Thema gestartet von: ftsinuglarity am 14 Februar 2018, 19:36:33

Titel: [Gelöst] aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: ftsinuglarity am 14 Februar 2018, 19:36:33
Hallo zusammen,

ist der momentane Stand noch, das watchdog nur auf auf ein Event reagieren kann ?

Ich habe zwei Present Devices für das Modem, die bei absent und present unterschiedlich reagieren sollen. Das würde ich gern auf eines reduzieren. Geht noch nicht, richtig ?

Wünschenswert wäre in etwa sowas:
defmod wd_Modem watchdog Modem:absent 00:01:00 Modem:present set Modem off;sleep2;set Modem on reverse tts("Internet Online)

reverse wäre dann die Umkehrung dessen, was vorn steht
Titel: Antw:aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: rudolfkoenig am 14 Februar 2018, 20:47:01
Zitatist der momentane Stand noch, das watchdog nur auf auf ein Event reagieren kann ?
Vermutlich verstehe ich es nicht richtig, aber watchdog reagiert auf beliebige, per Regexp spezifizierbare Events.
Titel: Antw:aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: ftsinuglarity am 14 Februar 2018, 22:42:54
Zitat von: rudolfkoenig am 14 Februar 2018, 20:47:01
Vermutlich verstehe ich es nicht richtig, aber watchdog reagiert auf beliebige, per Regexp spezifizierbare Events.

Die Events können unterschiedlichst sein, aber im Grunde wird nur auf eines reagiert.

define wd watchdog Device:Event1 Z:e:i:t Device:Event2  mach(was)
... reagiert mach(was) auf Event1, wenn nach Z:e:i:t nicht Event2 passiert.

Wenn ich beispielsweise mit einer einfachen Ansage auf Present Devices hören möchte, kann ich sowas formulieren:
define wd_on watchdog  Device:present 00:00:01 Device:absent  MyTTS("Device Online");

Für die Offline Ansage brauche ich in meinem bisherigen Verständnis einen 2. watchdog:
define wd_off watchdog Device:absent 00:01:01 Device:present  MyTTS("Device Offline");

Soweit ich es gelesen habe, geht es nicht, das ich beides in einem Watchdog mach.


Edit: ist ein einfaches Beispiel das man eleganter lösen kann. Mir gings nur um die Verdeutlichung beim watchdog 
Titel: Antw:aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: betateilchen am 14 Februar 2018, 23:25:28
Zitat von: ftsinuglarity am 14 Februar 2018, 22:42:54
Soweit ich es gelesen habe, geht es nicht, das ich beides in einem Watchdog mach.

Du willst doch zwei verschiedene Aktionen auslösen - also macht es auch Sinn, dafür zwei watchdog devices zu definieren.

Vermutlich geht es mir wie Rudi - ich verstehe das eigentliche Problem nicht.
Titel: Antw:aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: ftsinuglarity am 14 Februar 2018, 23:43:52
Zitat von: betateilchen am 14 Februar 2018, 23:25:28
Du willst doch zwei verschiedene Aktionen auslösen - also macht es auch Sinn, dafür zwei watchdog devices zu definieren.
Vermutlich geht es mir wie Rudi - ich verstehe das eigentliche Problem nicht.

2 verschiedene Aktionen, die sich auf ein auslösendes Device beziehen.
Ich versuche meinen Code immer mehr zu vereinfachen und stand/stehe vor einigen Fragen. ZB der, ob ich Aktionen, die sich auf ein Device beziehen, mit watchdog vereinheitlichen kann.
Letztlich gehts mir gar nicht so sehr um die Kürzung des eigentlichen Codes, als mehr um die Übersicht, wo was ausgelöst wird. Die kann man schonmal verlieren bei all dem getrigger.


Edit: ein einfaches "geht nicht" reicht mir vollkommen.
Wenn sowas aus eurer Sicht keinen Sinn macht, in Ordnung:
define wdInternet watchdog Internet:absent 00:01:00 Internet:present play("Internet Offline") reverse play("Internet Online")

reverse würde die Bedingung umdrehen: Internet:present 00:01:00 Internet:absent
Titel: Antw:aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: betateilchen am 15 Februar 2018, 07:51:40
Zitat von: ftsinuglarity am 14 Februar 2018, 23:43:52
Edit: ein einfaches "geht nicht" reicht mir vollkommen.

ok: geht nicht.
Titel: Antw:aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: Benni am 15 Februar 2018, 08:47:50
Zitat von: betateilchen am 15 Februar 2018, 07:51:40
ok: geht nicht.

Zumindest nicht mit watchdog.

Allerdings könnte man sich sowas (ähnliches) mit einem notify (http://commandref.fhem.de/#notify) unter Verwendung eines benannten sleep (http://commandref.fhem.de/#sleep) selbst bauen:

Man nehme ein notify für die Events:


define nyDoubleWatchdog notify Internet:.* {}


Ändere den Perl-Teil im DEF des notify wie folgt ab:


{
    fhem('cancel slpDblWd quiet');
   
    if($EVTPART1 eq 'absent') {
        fhem('sleep 60 slpDblWd;{play(\'Internet Offline\')}');
    } else {
        fhem('sleep 60 slpDblWd;{play(\'Internet Online\')}');
    }
}


Hinweise:

Gruß Benni.
Titel: Antw:aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: Damian am 15 Februar 2018, 09:02:51
Hier ein Beispiel mit DOIF

define di_internet DOIF ([Internet:"absent"]) {play("Internet Offline")} DOELSEIF ([Internet:"present"])  {play("Internet Online")}
attr di_internet wait 60:60


Titel: Antw:aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: betateilchen am 15 Februar 2018, 09:15:23
Zitat von: Benni am 15 Februar 2018, 08:47:50
Zumindest nicht mit watchdog.

Allerdings könnte man sich sowas (ähnliches) mit einem notify (http://commandref.fhem.de/#notify) unter Verwendung eines benannten sleep (http://commandref.fhem.de/#sleep) selbst bauen:

Natürlich kann man sowas bauen. Aber die Frage war ja explizit nach watchdog und nicht nach notify oder DOIF.
Titel: Antw:aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: ftsinuglarity am 15 Februar 2018, 14:56:08
Ersteinmal ein ernstgemeintes Danke für eure Bereidschaft auch auf Fragen zu antworten, die aus eurer Sicht vlt abwegig oder unsinnig erscheinen (ist ja nicht meine erste Frage, die in die Richtung ziehlt) !!

Zur eigentlichen Frage: watchdog dann nicht mit solchen Konstrukten. Die Erweiterung mit reverse (oder irgenwas, war nur ein Vorschlag) scheint eurer Vorstellung von dem was watchdog ist zu widersprechen. Kann ich für mich so stehen lassen. 



Zitat von: betateilchen am 15 Februar 2018, 09:15:23
Natürlich kann man sowas bauen. Aber die Frage war ja explizit nach watchdog und nicht nach notify oder DOIF.

Jups Benni, das Beispiel ließe sich zB mit notify/funktion (DOIF hab ich noch nicht genutzt) sehr einfach machen.
Wie du schon meintest Betateilchen, es ging um ein möglichst einfaches watchdog Beispiel, nicht um den Inhalt.
Titel: Antw:aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: ftsinuglarity am 15 Februar 2018, 15:05:43

Zitat von: Damian am 15 Februar 2018, 09:02:51
attr di_internet wait 60:60




Danke Damian, das kannte ich noch nicht
Titel: Antw:aktueller Stand watchdog mit 2 Ereignisketten
Beitrag von: Benni am 15 Februar 2018, 16:11:00
Zitat von: ftsinuglarity am 15 Februar 2018, 14:56:08
Jups Benni, das Beispiel ließe sich zB mit notify/funktion (DOIF hab ich noch nicht genutzt) sehr einfach machen.
Wie du schon meintest Betateilchen, es ging um ein möglichst einfaches watchdog Beispiel, nicht um den Inhalt.

Geschenkt!  ::)