FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: HenrikAachen am 29 November 2016, 14:42:16

Titel: watchdog
Beitrag von: HenrikAachen am 29 November 2016, 14:42:16
Hallo,

ich habe einen watchdog angelegt:
dummy_anwesenheit:on 00:00:10 SAME set dummy_anwesenheit off; trigger watchdogAnwesenheit .

Mein Dummy kriegt durch notify immer wieder ein "on" wenn im Haus sich jemand bewegt z.B.:

defmod dummy_anwesenheit dummy
attr dummy_anwesenheit event-on-update-reading state

setstate dummy_anwesenheit on
setstate dummy_anwesenheit 2016-11-29 14:32:09 state on


Der watchdog soll nun, wenn dummy_anwesenheit (hier im Beispiel schon nach 10 Sekunden) nicht aktualisiert wurde durch ein weiteres "on", die Anwesenheit auf off stellen.

Wo ist mein Denkfehler?
Danke.

Titel: Antw:watchdog
Beitrag von: Otto123 am 29 November 2016, 14:59:23
Hi,

ich denke hier
Zitatsetstate

setstate <devspec> <value>

Der Befehl setzt den STATE Eintrag des Gerätes direkt, ohne Ereignisse zu generieren oder ein Signal an das Gerät zu senden. Dieser Eintrag ist maßgebend für die Status-Anzeige in diversen Frontends. Dieser Befehl wird auch im statefile benutzt.
Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.

Gruß Otto
Titel: Antw:watchdog
Beitrag von: HenrikAachen am 29 November 2016, 16:43:01
Du meinst bei meinem Dummy? Was genau muss ich ändern?
Danke.
Titel: Antw:watchdog
Beitrag von: Benni am 29 November 2016, 16:58:45
verwende set (http://fhem.de/commandref_DE.html#dummy) anstatt.
Machst du in deinem Watchdog ja auch schon ;)
Titel: Antw:watchdog
Beitrag von: HenrikAachen am 29 November 2016, 17:35:37
Sorry ich verstehe es noch nicht.
Geht es darum wie ich meinen Dummy auf in setze?
Wo muss ich das Set setzen und anstatt was?

Sorry noch Anfänger :-(
Titel: Antw:watchdog
Beitrag von: Benni am 29 November 2016, 17:44:39
Ja, es geht darum, wie du deinen dummy setzt.

Normalerweise sollte einem dummy der Wert per set zugewiesen werden, so wie es auch in der Doku zum Dummy (http://fhem.de/commandref_DE.html#dummy) geschrieben steht.

Ich weiß nicht, wo die Leute immer das mit dem setstate her haben  ::)
Titel: Antw:watchdog
Beitrag von: HenrikAachen am 29 November 2016, 18:08:02
Hi,

ja das war die Raw definition.
Meinen Dummy setze ich dann aber richtig.

defmod set_anwesenheit_on notify bwm_eltern:on|bwm_untergeschoss:on|bwm_kinder:on|bwm_wohnzimmer:on|WZ_TV_Steckdose_an:on|TV_Steckdose_SZ:on set dummy_anwesenheit on
attr set_anwesenheit_on group Hilfsmodul
attr set_anwesenheit_on room Szenen

setstate set_anwesenheit_on 2016-11-29 18:04:46
setstate set_anwesenheit_on 2016-11-27 21:45:46 state active


Dann müsste doch alles passen eigentlich was ich mache oder?
Titel: Antw:watchdog
Beitrag von: Benni am 29 November 2016, 18:09:57
Zitat von: HenrikAachen am 29 November 2016, 18:08:02


...
setstate set_anwesenheit_on 2016-11-29 18:04:46
setstate set_anwesenheit_on 2016-11-27 21:45:46 state active



Aber hier verwendest du doch immer noch setstate
Titel: Antw:watchdog
Beitrag von: HenrikAachen am 29 November 2016, 18:15:44
Das steht in der RAW.

Warum macht er das?
Ich habe es doch nicht so angelegt.

defmod set_anwesenheit_on notify bwm_eltern:on|bwm_untergeschoss:on|bwm_kinder:on|bwm_wohnzimmer:on|WZ_TV_Steckdose_an:on|TV_Steckdose_SZ:on set dummy_anwesenheit on


Die Setstate sind die Readings anscheinend. Ich sehe das nur im RAW.
Titel: Antw:watchdog
Beitrag von: KölnSolar am 29 November 2016, 21:50:54
ZitatWarum macht er das?
Das ist nur eine Form der Anzeige des aktuellen Status. Wird so beim shutdown in der fhem.save gespeichert, damit nach dem reboot das device/reading seinen vorherigen Stand bekommt.
Du solltest Deine Fragen aber nicht so stellen, so hast Du alle verwirrt. Beim nächsten mal das Ergebnis von "list <device>" einstellen oder nur die define und attr Zeilen aus der "raw definition" Ansicht.
Titel: Antw:watchdog
Beitrag von: HenrikAachen am 30 November 2016, 19:25:37
Ok sorry habe ich jetzt verstanden.

Kann mir jemand sagen was an meinem watchdog falsch ist?
Titel: Antw:watchdog
Beitrag von: KölnSolar am 30 November 2016, 19:57:48
hatte mir das gar nicht genau angesehen und wollte nur das Missverständnis zwischen Euch aufklären.
Wenn ich das so richtig sehe, ist die watchdog-definition OK. Aber meines Erachtens ist Dein Problem das
attr dummy_anwesenheit event-on-update-reading state
Probier es mal ohne. Wenn man event gesteuert arbeitet, hilft oft ein Blick in den event monitor, ob dort die events überhaupt so auftauchen, wie man sich das vorstellt.
Grüße Markus
Titel: Antw:watchdog
Beitrag von: HenrikAachen am 30 November 2016, 20:12:41
Hi,

Es geht ja, dass meine Bewegungsmelder den Dummy bei jeder Bewegung erneut auf On setzen.
Der Watchdog soll nun, wenn 55 min keine Neue Bewegung kommt, den Dummy auf Off setzen.

Da der Dummy geht, kann mein Fehler doch nur der Watchdog sein?
Titel: Antw:watchdog
Beitrag von: Otto123 am 30 November 2016, 22:03:04
Zitatevent-on-update-reading
Wenn nicht gesetzt, erzeugt jede Veränderung eines "readings" ein Ereignis, welches z.B. von notify oder FileLog berücksichtigt wird. Wenn gesetzt erzeugen nur Aktualisierungen der eingetragenen "readings" ein Ereignis.
Also wenn Du es setzt, bekommt das watchdog keinen Trigger mehr.

Gruß Otto
Titel: Antw:watchdog
Beitrag von: HenrikAachen am 01 Dezember 2016, 17:42:06
Anbei nochmal meine Konfigs.

Mein Watchdog soll den Dummy auf Off setzen, wenn innerhalb 55min keine neue Anwesenheit erkannt wurde.
Das Notify soll dann wenn Dummy Off und Anwesenheit an und Aufstehen an ist -> Aktion z.B. Szene Haus schlafen.

Habe ich noch einen Fehler drin?
Titel: Antw:watchdog
Beitrag von: Otto123 am 01 Dezember 2016, 17:56:19
Also meine Vermutung war ja, das Problem liegt beim dummy. Den sehe ich jetzt nicht. Bei einem list <Devicename> sieht man generell mehr als auf Bildern.

Dein notify geht so gar nicht:Hinweise:
<Suchmuster> ist entweder der Name des auslösenden ("triggernden") Gerätes oder die Kombination aus Gerät und auslösendem Ereignis (Event) Gerätename:Event.
Das <Suchmuster> muss exakt (!) entweder dem Gerätenamen entsprechen oder der Zusammenfügung aus Gerätename:Event. Events lassen sich mit "inform" in Telnet oder durch Beobachtung des "Event-Monitors" in FHEMWEB ermitteln.

Was Du gemacht hast ist kein Suchmuster sondern eine logische Verknüpfung A && B && C die Du als Auslösebedingung haben möchtest.
Ein notify kannst Du triggern und anschließend mit Perl Abfragen einbauen. Durch geschicktes RegEx kannst Du auch den Trigger schon als Verknüpfung bauen.

Eventuell ist das was Du willst für Dich einfacher mit einem DOIF  (http://fhem.de/commandref_DE.html#DOIF)zu machen.

Gruß Otto
Titel: Antw:watchdog
Beitrag von: HenrikAachen am 01 Dezember 2016, 18:36:54
Hallo Otto,

ok verstehe ich.
Meine Aufgabe besteht ja aus mehreren Teilen.

1. Ist mein Watchdog nun richtig, dass er wenn nach 55min kein erneutes "on" gekommen ist, er Anwesenheit auf off stellt?
Internals:
   CMD        set dummy_anwesenheit off; trigger watchdogAnwesenheit .
   DEF        dummy_anwesenheit:on 00:50:00 SAME set dummy_anwesenheit off; trigger watchdogAnwesenheit .
   NAME       watchdogAnwesenheit
   NR         106
   NTFY_ORDER 50-watchdogAnwesenheit
   RE1        dummy_anwesenheit:on
   RE2        dummy_anwesenheit:on
   STATE      Next: 19:03:04
   TO         3000
   TYPE       watchdog
   Readings:
     2016-12-01 18:13:04   Activated       activated
     2016-12-01 15:24:21   Triggered       triggered
Attributes:
   group      Hilfsmodul
   room       Szenen


2. Wenn der dummy_anwesenheit auf off gestellt wird:


Internals:
   NAME       dummy_anwesenheit
   NR         103
   STATE      on
   TYPE       dummy
   Readings:
     2016-12-01 18:13:04   state           on
Attributes:
   devStateIcon on:HOME_Status.1 off:HOME_Status.3
   event-on-update-reading state
   eventMap   1
   group      Hilfsmodul
   room       Szenen



3. Ein Notify mir bei dem dummy_anwesenheit=off das sz_abwesenheit auf on setzt (wenn anwesend on und aufstehen on ist):

Internals:
   DEF        dummy_anwesenheit:off && sz_anwesenheit:on && Aufstehen:on set sz_abwesendmelden on
   NAME       ntf_anwesenheit_off
   NOTIFYDEV  dummy_anwesenheit
   NR         107
   NTFY_ORDER 50-ntf_anwesenheit_off
   REGEXP     dummy_anwesenheit:off
   STATE      2016-12-01 15:24:21
   TYPE       notify
   Readings:
     2016-11-30 20:53:03   state           active
Attributes:
   group      Hilfsmodul
   icon       HOME_Status.0
   room       Szenen


Sehe ich es richtig, dass 1) und 2) ok sind. Ich aber bei 3) ein DOIF einbauen soll?

Beispiel:
(ist mein erster DOIF, Syntax habe ich erraten):

define di_anwesenheit DOIF ([sz_anwesenheit] eq "on" and [Aufstehen] eq "on" and [dummy_anwesenheit] eq "off" (set dummy_anwesenheit off)

Titel: Antw:watchdog
Beitrag von: Otto123 am 01 Dezember 2016, 20:50:09
Hi,

das DOIF sieht gut aus, sollte klappen.
Dein watchdog sieht auch gut, aber ich hatte verstanden es funktioniert nicht.

Ich denke, es funktioniert nicht weil der dummy das  attr event-on-update-reading state gesetzt hat.

Gruß Otto
Titel: Antw:watchdog
Beitrag von: HenrikAachen am 01 Dezember 2016, 21:18:01
Kriege im DOIF noch ein Error:

error
perl error in condition: InternalDoIf($hash,'sz_anwesenheit','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on" and InternalDoIf($hash,'Aufstehen','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on" and InternalDoIf($hash,'dummy_anwesenheit','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "off" (set dummy_anwesenheit off): syntax error at (eval 2011) line 1, near ""off" ("

Konfig vom Doif:

([sz_anwesenheit] eq "on" and [Aufstehen] eq "on" and [dummy_anwesenheit] eq "off" (set dummy_anwesenheit off))
Titel: Antw:watchdog
Beitrag von: Otto123 am 01 Dezember 2016, 21:28:07
Da ist eine Klammer falsch:
   
([sz_anwesenheit] eq "on" and [Aufstehen] eq "on" and [dummy_anwesenheit] eq "off") (set dummy_anwesenheit off)

Immer (Bedingung)(Kommando) !

Gruß Otto
Titel: Antw:watchdog
Beitrag von: HenrikAachen am 01 Dezember 2016, 22:18:41
Klar, mist sitze schon zu lange hier. Super. Ich lass es jetzt mal Testweise laufen und melde mich wenn der Watchdog nicht geht. Vielen Dank.