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.
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
Du meinst bei meinem Dummy? Was genau muss ich ändern?
Danke.
verwende set (http://fhem.de/commandref_DE.html#dummy) anstatt.
Machst du in deinem Watchdog ja auch schon ;)
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 :-(
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 ::)
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?
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
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.
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.
Ok sorry habe ich jetzt verstanden.
Kann mir jemand sagen was an meinem watchdog falsch ist?
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
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?
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
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?
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
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)
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
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))
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
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.