Guten Morgen,
ich habe viele *at und notify durch DOIF ersetzt. Soweit so gut.
Zwei Sachen sind mir aufgefallen:
1. Ich habe in einem DOIF im DOELSEIF als Bedingung das Reading des State's aus der *.holiday eingebunden. Das funktioniert soweit auch.
Nur gestern habe ich die *.holiday um 16:00Uhr editiert, und einen Eintrag hinzugefügt. Das DOIF hat bei der standardmässigen Ausführung um 22:30Uhr dieses State/Reading ignoriert, weil der State des *.holiday nur um 00:01 Uhr einmalig eingelesen wurde. Ist das so korrekt ?
2. Ich habe einen FS20KSE (Klingelsensor). Bei betätigen der Klingel werde ich hierüber durch ein Notify per Push informiert.
Allerdings bekomme ich pro Klingelvorgang bis zu 3 Pushnachrichten, weil der Sensor dabei bis zu 3 mal den State ändert. (on/off/off).
Dieses Notify wollte ich durch ein DOIF ersetzen, dabei triggere ich nur den "off"-Befehl. Zusätzlich habe ich das Attribut "repeatsame = 1" hinzugefügt.
Das funktioniert soweit auch, nur halt nicht immer, sprich sehr unzuverlässig.
Während das Notify mein Handy quasi mit Pushnachrichten penetriert, reagiert das DOIF DEUTLICH träger mit nur einer Zuverlässigkeit von nur ca. 50%. Kann das sein ??
Zitat von: Bartimaus am 24 März 2015, 09:25:27
Guten Morgen,
ich habe viele *at und notify durch DOIF ersetzt. Soweit so gut.
Zwei Sachen sind mir aufgefallen:
1. Ich habe in einem DOIF im DOELSEIF als Bedingung das Reading des State's aus der *.holiday eingebunden. Das funktioniert soweit auch.
Nur gestern habe ich die *.holiday um 16:00Uhr editiert, und einen Eintrag hinzugefügt. Das DOIF hat bei der standardmässigen Ausführung um 22:30Uhr dieses State/Reading ignoriert, weil der State des *.holiday nur um 00:01 Uhr einmalig eingelesen wurde. Ist das so korrekt ?
2. Ich habe einen FS20KSE (Klingelsensor). Bei betätigen der Klingel werde ich hierüber durch ein Notify per Push informiert.
Allerdings bekomme ich pro Klingelvorgang bis zu 3 Pushnachrichten, weil der Sensor dabei bis zu 3 mal den State ändert. (on/off/off).
Dieses Notify wollte ich durch ein DOIF ersetzen, dabei triggere ich nur den "off"-Befehl. Zusätzlich habe ich das Attribut "repeatsame = 1" hinzugefügt.
Das funktioniert soweit auch, nur halt nicht immer, sprich sehr unzuverlässig.
Während das Notify mein Handy quasi mit Pushnachrichten penetriert, reagiert das DOIF DEUTLICH träger mit nur einer Zuverlässigkeit von nur ca. 50%. Kann das sein ??
Grundsätzlich kann man sagen, dass in fhem nichts verloren geht. DOIF wirft auch nichts weg. Es sind meistens logische Probleme, die man aber nur im Einzelnen analysieren kann - mit Eventmonitor und viel Geduld.
Gruß
Damian
Hi,
ok, werde ich die Klingel mal mit dem Eventmonitor analysieren.
Kannst Du auch was zu Punkt 1 sagen ?
Zitat von: Bartimaus am 24 März 2015, 10:56:57
Hi,
ok, werde ich die Klingel mal mit dem Eventmonitor analysieren.
Kannst Du auch was zu Punkt 1 sagen ?
intern wird $we abgefragt, die Mechanismen zum Setzen von $we liegen außerhalb von DOIF. Wird wohl so sein, dass $we nach Mitternacht gesetzt wird.
Gruß
Damian
Aha, ok. Hatte mich nur gewundert, weil wenn ich den State eines Dummy abfrage, so wird dieser quasi live getriggert. Muss man halt nur wissen.
Dies ist das Event wenn ich einmal kurz die Klingel betätige:
2015-03-24 11:40:35 FS20 Klingel off
2015-03-24 11:40:35 FS20 Klingel RSSI: -66.5
2015-03-24 11:40:35 FS20 Klingel RAWMSG: 810b04xx0101a001b2cc000000
2015-03-24 11:40:37 FS20 Klingel off
2015-03-24 11:40:37 FS20 Klingel RSSI: -66.5
2015-03-24 11:40:37 FS20 Klingel RAWMSG: 810b04xx0101a001b2cc000000
Dies ist das notify für die PushNachricht:
Klingel IF ([Klingel:state] eq "off") (set PushiPhone message PalimPalim)
Ich sehe also im Event 2 x "off". Bekomme aber 3 statt 2 PushNachrichten. Kann mir jemand erklären wieso ?
Zitat von: Bartimaus am 24 März 2015, 11:58:31
Dies ist das Event wenn ich einmal kurz die Klingel betätige:
2015-03-24 11:40:35 FS20 Klingel off
2015-03-24 11:40:35 FS20 Klingel RSSI: -66.5
2015-03-24 11:40:35 FS20 Klingel RAWMSG: 810b04xx0101a001b2cc000000
2015-03-24 11:40:37 FS20 Klingel off
2015-03-24 11:40:37 FS20 Klingel RSSI: -66.5
2015-03-24 11:40:37 FS20 Klingel RAWMSG: 810b04xx0101a001b2cc000000
Hi,
das notify selber sollte NUR auf "off" triggern .. "Klingel:\sOFF" ... (hint: regex). Zusammen mit "event-on" kannst Du das auf eine push msg reduzieren. Das "IF" entfällt ...
vg
jörg
Zitat von: herrmannj am 24 März 2015, 12:11:40
Hi,
.... "Klingel:\sOFF" ... (hint: regex)....
vg
jörg
Hallo Jörg,
danke für Deine Hilfe, den Teil den ich nicht so wirklich verstehe habe ich mal in Deinem Zitat belassen :-[
http://lmgtfy.com/?q=regex+%5Cs (http://lmgtfy.com/?q=regex+%5Cs)
Du kannst aber auch "Klingel.off" schreiben (. steht für beliebiges Zeichen, andere als ein Space kommen an der Stelle aber nicht vor).
@jörg: müsste doch schon Klingel\soff heißen, nicht Klingel\sOFF ...?
Zitat@jörg: müsste doch schon Klingel\soff heißen, nicht Klingel\sOFF ...?
korrekt. Sorry.
Ok, danke. Habe mal eingebaut und werde testen
Funktioniert leider nicht.
Klingel:\soff
oder
Klingel\soff
liefert "natürlich" ein
2015-03-25 17:59:25 FS20 Klingel RSSI: -64
2015-03-25 17:59:25 FS20 Klingel RAWMSG: 810b04xx0101a001b2cc000000
im EventMonitor, dann reagiert das Notify nicht mehr, weil die Klingel kein "off" mehr generiert. ("on" wird nicht geliefert)
Nehme ich das Regexp wieder raus, und arbeite nur mit "event-on-**-reading" = off, bekomme ich 2 Pushnachrichten, weil 2 x off von der Klingel erzeugt wird.
Weitere Ideen ?
Zitat von: Bartimaus am 25 März 2015, 18:06:43
Weitere Ideen ?
Wenn du immer! zwei mal "off" innerhalb einer Sekunde bekommst, dann könntest du auch definieren:
define di_push DOIF ([Klingel:?off]) (set PushiPhone message PalimPalim)
attr di_push waitsame 1
attr di_push do always
Gruß
Damian
Danke Dir.
Das scheint bis jetzt zu funktionieren
Mit ?off und waitsame+Do always hatte ich im DOIF bis jetzt nicht "gearbeitet".
Feldtest läuft ;D
Hab jetzt nochmal getestet, aber dieses DOIF
([Garagentor:?toggle] or [Garagentor:?on] or [Garagentor:?off])
(set PushiPhone message Do_Garagentor wurde bewegt)
reagiert nicht auf dieses Event:
Events:
2015-04-15 17:54:05 FS20 Garagentor toggle
Das steht im Reading:
Readings
cmd_event
Garagentor
2015-04-15 17:45:25
cmd_nr
1
2015-04-15 17:45:25
e_Garagentor_events
toggle
2015-04-15 17:54:05
error
set PushiPhone message Do_Garagentor wurde bewegt: OK! Do Garagentor wurde bewegt
2015-04-15 17:45:25
state
cmd_1
2015-04-15 17:45:25
Warum nicht ?
Edith: Die or-Bedingung funktioniert hier nicht. Jedes einzelne Event funktioniert jew. einzeln in einem DOIF.
Bug oder feature ?
Zitat von: Bartimaus am 15 April 2015, 18:00:34
Hab jetzt nochmal getestet, aber dieses DOIF
([Garagentor:?toggle] or [Garagentor:?on] or [Garagentor:?off])
(set PushiPhone message Do_Garagentor wurde bewegt)
reagiert nicht auf dieses Event:
Events:
2015-04-15 17:54:05 FS20 Garagentor toggle
Das steht im Reading:
Readings
cmd_event
Garagentor
2015-04-15 17:45:25
cmd_nr
1
2015-04-15 17:45:25
e_Garagentor_events
toggle
2015-04-15 17:54:05
error
set PushiPhone message Do_Garagentor wurde bewegt: OK! Do Garagentor wurde bewegt
2015-04-15 17:45:25
state
cmd_1
2015-04-15 17:45:25
Warum nicht ?
Weil du wahrscheinlich kein do always definiert hast.
Gruß
Damian
Yip, danke, das war es..... ::)