Seit kurzem habe ich den Fehler das DIOF die Rollläden Positionen nicht mehr richtig übernimmt bzw. gar nicht mehr übernimmt.
ZB. Die Markise weist die Position 100 auf
list M_OG1_BAL_P
Internals:
CFGFN /media/hdd/fhem/myprogram/rolllaeden_rasp01_ROLLO.pm
NAME M_OG1_BAL_P
NR 5837
STATE closed
TYPE ROLLO
stoptime 1528801249
READINGS:
2018-06-12 13:00:38 command position-100
2018-06-12 13:00:38 desired_position 100
2018-06-12 13:00:38 drive-type modul
2018-06-12 13:00:38 last_drive drive-down
2018-06-12 13:00:49 position 100
2018-06-12 13:00:49 state closed
Attributes:
alias OG1 Balkon - Markise
autoStop 0
automatic-enabled off
blockMode none
cmdIcon half:remotecontrol/black_btn_MENUDroid open:remotecontrol/black_btn_CHUP closed:remotecontrol/black_btn_CHDOWN stop:remotecontrol/black_btn_STOP
commandDown set M_OG1_BAL off
commandStopDown set M_OG1_BAL off
commandStopUp set M_OG1_BAL on
commandUp set M_OG1_BAL on
devStateIcon open:fts_sunblind_10:closed closed:fts_sunblind:open half:fts_sunblind_50:closed drive-up:control_arrow_up@yellow:stop drive-down:control_arrow_down@yellow:stop position-100:fts_sunblind:open position-90:fts_sunblind_90:closed position-80:fts_sunblind_80:closed position-70:fts_sunblind_70:closed position-60:fts_sunblind_60:closed position-50:fts_sunblind_50:closed position-40:fts_sunblind_40:open position-30:fts_sunblind_30:open position-20:fts_sunblind_20:open position-10:fts_sunblind_10:open position-0:fts_sunblind_0:closed
excessBottom 0
excessTop 0
group OG1 Balkon - Markise
icon fts_sunblind
reactionTime 1
resetTime 1
room OG1,OG1-Balkon,OG1-Kueche,Rolllaeden
secondsDown 30
secondsUp 30
sortby 09
switchTime 1
type normal
webCmd position:half:open:closed:stop
DOIF übernimmt aber die Position nicht.
list OG1_BK_MAST
Internals:
CFGFN /media/hdd/fhem/myprogram/markise_rasp01.pm
DEF ([M_OG1_BAL_P:position] != 100 and [OG1_BK_MA_LOCK] eq "UNLOCK" and
[OG1_BK_SSSS_MD] eq "HELL" and
[ZOBRMD] eq "TROCKEN" and [ZOBWM100D] eq "WINDSTILL" and [bmp180:temperatureof] > 18)
(set OG1_BK_MA_LOCK LOCK)(set M_OG1_BAL_P position 100)(set OG1_BK_MA_LOCK UNLOCK)
DOELSEIF
([M_OG1_BAL_P:position] != 0 and [OG1_BK_MA_LOCK] eq "UNLOCK" and
([ZOBRMD] eq "REGEN" or [ZOBWM100D] eq "WIND"))
(set OG1_BK_MA_LOCK LOCK)(set M_OG1_BAL_P position 0)(set OG1_BK_MA_LOCK UNLOCK)
DOELSEIF
([M_OG1_BAL_P:position] != 0 and [OG1_BK_MA_LOCK] eq "UNLOCK" and
[OG1_BK_SSSS_MD] eq "DUNKEL")
(set OG1_BK_MA_LOCK LOCK)(set M_OG1_BAL_P position 0)(set OG1_BK_MA_LOCK UNLOCK)
MODEL FHEM
NAME OG1_BK_MAST
NR 5625
NTFY_ORDER 50-OG1_BK_MAST
STATE P100
TYPE DOIF
READINGS:
2018-06-12 13:00:49 Device M_OG1_BAL_P
2018-06-12 13:01:14 cmd 1.3
2018-06-12 13:01:14 cmd_event set_cmd_1
2018-06-12 13:01:14 cmd_nr 1
2018-06-12 13:01:14 cmd_seqnr 3
2018-06-12 13:00:38 e_M_OG1_BAL_P_position 70
2018-06-12 13:00:38 e_OG1_BK_MA_LOCK_STATE LOCK
2018-06-12 13:00:25 e_OG1_BK_SSSS_MD_STATE HELL
2018-06-12 13:00:24 e_bmp180_temperatureof 25.7
2018-06-12 13:00:02 mode enabled
2018-06-12 13:01:14 state cmd_1
2018-06-12 13:01:14 wait_timer no timer
Regex:
condition:
0 ReadingValDoIf($hash,'M_OG1_BAL_P','position') != 100 and InternalDoIf($hash,'OG1_BK_MA_LOCK','STATE') eq "UNLOCK" and InternalDoIf($hash,'OG1_BK_SSSS_MD','STATE') eq "HELL" and InternalDoIf($hash,'ZOBRMD','STATE') eq "TROCKEN" and InternalDoIf($hash,'ZOBWM100D','STATE') eq "WINDSTILL" and ReadingValDoIf($hash,'bmp180','temperatureof') > 18
1 ReadingValDoIf($hash,'M_OG1_BAL_P','position') != 0 and InternalDoIf($hash,'OG1_BK_MA_LOCK','STATE') eq "UNLOCK" and (InternalDoIf($hash,'ZOBRMD','STATE') eq "REGEN" or InternalDoIf($hash,'ZOBWM100D','STATE') eq "WIND")
2 ReadingValDoIf($hash,'M_OG1_BAL_P','position') != 0 and InternalDoIf($hash,'OG1_BK_MA_LOCK','STATE') eq "UNLOCK" and InternalDoIf($hash,'OG1_BK_SSSS_MD','STATE') eq "DUNKEL"
devices:
0 M_OG1_BAL_P OG1_BK_MA_LOCK OG1_BK_SSSS_MD ZOBRMD ZOBWM100D bmp180
1 M_OG1_BAL_P OG1_BK_MA_LOCK ZOBRMD ZOBWM100D
2 M_OG1_BAL_P OG1_BK_MA_LOCK OG1_BK_SSSS_MD
all M_OG1_BAL_P OG1_BK_MA_LOCK OG1_BK_SSSS_MD ZOBRMD ZOBWM100D bmp180
do:
0:
0 set OG1_BK_MA_LOCK LOCK
1 set M_OG1_BAL_P position 100
2 set OG1_BK_MA_LOCK UNLOCK
1:
0 set OG1_BK_MA_LOCK LOCK
1 set M_OG1_BAL_P position 0
2 set OG1_BK_MA_LOCK UNLOCK
2:
0 set OG1_BK_MA_LOCK LOCK
1 set M_OG1_BAL_P position 0
2 set OG1_BK_MA_LOCK UNLOCK
3:
helper:
DOIF_Readings_events
DOIF_eventas
event
globalinit 1
last_timer 0
sleepdevice set_cmd_1
sleepsubtimer -1
sleeptimer -1
timerdev
timerevent
timerevents
timereventsState
triggerDev
triggerEvents
triggerEventsState
internals:
0 OG1_BK_MA_LOCK:STATE OG1_BK_SSSS_MD:STATE ZOBRMD:STATE ZOBWM100D:STATE
1 OG1_BK_MA_LOCK:STATE ZOBRMD:STATE ZOBWM100D:STATE
2 OG1_BK_MA_LOCK:STATE OG1_BK_SSSS_MD:STATE
all OG1_BK_MA_LOCK:STATE OG1_BK_SSSS_MD:STATE ZOBRMD:STATE ZOBWM100D:STATE
itimer:
readings:
0 M_OG1_BAL_P:position bmp180:temperatureof
1 M_OG1_BAL_P:position
2 M_OG1_BAL_P:position
all M_OG1_BAL_P:position bmp180:temperatureof
trigger:
uiState:
uiTable:
Attributes:
alias OG1 Balkon - Markise - Automatic
devStateIcon initialize.*:control_minus P100:fts_sunblind P0:fts_sunblind_0
eventMap cmd_1:P100 cmd_1_1:P100 cmd_1_2:P100 cmd_1_3:P100
cmd_2:P0 cmd_2_1:P0 cmd_2_2:P0 cmd_2_3:P0
cmd_3:P0 cmd_3_1:P0 cmd_3_2:P0 cmd_3_3:P0
group OG1 Balkon - Markise
icon fts_sunblind
room OG1-Balkon,OG1-Kueche,Rolllaeden
sortby 08
wait 0,0,35:0,0,35:600,0,35
Mir ist das vor einigen Tagen schon aufgefallen das manche Rollläden nicht die Position angefahren sind diese haben sollten.
Bei der heutigen Funktionsüberprüfung musste ich feststellen das die Position nach dem Speichern des DIOF 1 mal übernommen wird und bei den darauffolgenden Positionswechseln nicht mehr.
Das gleiche trifft auf ein DUMMY Device zu wo ebenfalls das Reading nicht aktualisiert wird bzw. von DOIF verarbeitet wird.
list OG1_BK_MA_LOCK
Internals:
CFGFN /media/hdd/fhem/myprogram/markise_rasp01.pm
NAME OG1_BK_MA_LOCK
NR 5623
STATE UNLOCK
TYPE dummy
READINGS:
2018-06-12 13:01:14 state off
Attributes:
alias OG1 Balkon - Markise - Automatic Sperre
devStateIcon LOCK:time_manual_mode@red UNLOCK:time_manual_mode@0CFB0C
eventMap on:LOCK off:UNLOCK
group OG1 Balkon - Markise
icon fts_sunblind
room OG1-Balkon,OG1-Kueche,Rolllaeden
sortby 07
Die Frage ist, ob Position ein Event liefert. Wenn nicht, dann muss du im abfragenden DOIF auf alle Events des Rollladen triggern. Dazu musst du das Attribut checkReadingEvent 0 im betreffenden DOIF setzen (früher was es der Defaultwert).
Was wäre da falsch? Ich sehe es so:
Um 13:00:38 triggert M_OG1_BAL_P wegen command / desired-position
Zitat2018-06-12 13:00:38 command position-100
2018-06-12 13:00:38 desired_position 100
Reading position ist dabei 70
2018-06-12 13:00:38 e_M_OG1_BAL_P_position 70
> cmd_1.1 => LOCK
> cmd_1.2 => set M_OG1_BAL_P position 100 (kein Einfluss, er ist schon am fahren)
> start timer cmd_1.3 (+35s = 13:01:14)
Um 13:00:49 triggert M_OG1_BAL_P (position 100 erreicht). Da LOCK, ist keine Bedingung wahr => passiert nix
Um 13:01:14, end timer cmd_1.3 => UNLOCK... oder gar nichts (position ist nicht mehr != 100)
@amenomade
Da hast du zum Teil Recht, aber wie auch das Reading position des Rollo Moduls wird auch der Dummy im Reading des DOIFs nicht mehr aktualisiert obwohl EVENTS geliefert werden.
Zitattriggert M_OG1_BAL_P (position 100 erreicht). Da LOCK, ist keine Bedingung wahr => passiert nix
Wenn du das Lock Dummy ansiehst wirst du bemerken das sich das EVENT auf UNLOCK geändert hat, nur bei den DOIF Readings hat sich das EVENT nicht geändert.
Es ist leider bei sehr vielen DOIFs jetzt der Fall das die geänderten Bedingungen und generierten EVENTs in den Readings der DOIFs nicht mehr aktualisiert werden.
Und das ist bei 80 % der definierten DOIFs seit einigen Tagen.
Am Device, Dummy usw. werden nach wie vor alle EVENTs erfasst. DOIF übernimmt nur das erste EVENT des Device, Dummy usw. aber die darauffolgenden EVENTs erfasst DOIF nicht.
@Damian
ZitatDazu musst du das Attribut checkReadingEvent 0 im betreffenden DOIF setzen (früher was es der Defaultwert)
Gut das ist vielleicht die Ursache der ich nachgehen werde.
Dieses Attribut ist nur von der Bezeichnung her irgendwie verwirrend, wenn ich jetzt
das Attribut checkReadingEvent 0 definieren muß damit die Events übernommen werden. 0 heißt für mich in diesem Fall genau das Gegenteil um auf einen Event zu prüfen.
siehe: https://forum.fhem.de/index.php/topic,82523.msg800555.html#msg800555
Wenn du im Eventmonitor "position" nicht findest, dann ist alles nachvollziehbar.
Im Eventmonitor ist position nicht ersichtlich sondern nur
2018-06-14 07:42:15.677 ROLLO R_OG1_WZ_P command: position-50
2018-06-14 07:42:15.677 ROLLO R_OG1_WZ_P desired_position: 50
Das leuchtet mir noch ein, aber warum reagierte DOIF nicht auf die EVENT Änderung des LOCK.
Im Eventmonitor sind LOCK und UNLOCK ersichtlich.
Gibt es eine Such-Möglichkeit um DOIF zu überprüfen ob alle Einträge ein EVENT liefern?
Zitat von: Burny4600 am 14 Juni 2018, 07:50:42
Im Eventmonitor ist position nicht ersichtlich sondern nur
2018-06-14 07:42:15.677 ROLLO R_OG1_WZ_P command: position-50
2018-06-14 07:42:15.677 ROLLO R_OG1_WZ_P desired_position: 50
Das leuchtet mir noch ein, aber warum reagierte DOIF nicht auf die EVENT Änderung des LOCK.
Im Eventmonitor sind LOCK und UNLOCK ersichtlich.
Gibt es eine Such-Möglichkeit um DOIF zu überprüfen ob alle Einträge ein EVENT liefern?
Wenn du in den Readings
2018-06-12 13:00:38 e_OG1_BK_MA_LOCK_STATE LOCK
siehst, dann kannst du davon ausgehen, dass DOIF darauf reagiert hat.
Insbesondere bei STATUS-Abfragen der Art [<Device>] reagiert DOIF auf alle Events des Devices. Bei der Readingangaben [<Device>:state] reagiert DOIF neuerdings nur auf Events des Readings state, es sei denn man setzt das Attribut checkReadingEvent 0.
@Damian für mein Verständnis: wenn ein Device:Reading triggert, aber keine Bedingung wahr ist, schreibt er auch ein Reading e_device_reading?
Zitat von: amenomade am 14 Juni 2018, 09:30:51
@Damian für mein Verständnis: wenn ein Device:Reading triggert, aber keine Bedingung wahr ist, schreibt er auch ein Reading e_device_reading?
Ja.
Zitat von: Burny4600 am 13 Juni 2018, 12:28:08
@amenomade
Da hast du zum Teil Recht, aber wie auch das Reading position des Rollo Moduls wird auch der Dummy im Reading des DOIFs nicht mehr aktuallisiert obwohl EVENTS geliefert werden.Wenn du das Lock Dummy ansiehst weirst du bemerken das sich das EVENT auf UNLOCK geändert hat, nur bei den DOIF Readings hat sich das EVENT nicht geändert.
Folgendes ist dir aber klar?
Zitat von: CommandRef
Standardmäßig unterbindet das DOIF-Modul Selbsttriggerung. D. h. das Modul reagiert nicht auf Events, die es selbst direkt oder indirekt auslöst. Dadurch werden Endlosschleifen verhindert.
https://fhem.de/commandref_DE.html#DOIF_selftrigger
@amenomade
Zitathttps://fhem.de/commandref_DE.html#DOIF_selftrigger
Das hatte ich leider übersehen.
Danke für den Hinweis.