DOIF: lesen von Readings; Trägheit ?

Begonnen von Bartimaus, 24 März 2015, 09:25:27

Vorheriges Thema - Nächstes Thema

Bartimaus

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 ??

LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Bartimaus

Hi,

ok, werde ich die Klingel mal mit dem Eventmonitor analysieren.

Kannst Du auch was zu Punkt 1 sagen ?
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Bartimaus

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.
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Bartimaus

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 ?
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

herrmannj

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

Bartimaus

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  :-[
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Pfriemler

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 ...?
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

herrmannj

Zitat@jörg: müsste doch schon Klingel\soff heißen, nicht Klingel\sOFF ...?
korrekt. Sorry.

Bartimaus

Ok, danke. Habe mal eingebaut und werde testen
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Bartimaus

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 ?
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Bartimaus

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
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Bartimaus

#14
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 ?
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly