Hallo ihr, ein DOIF welches jahrelang lief, schaltet nun neuerdings falsch. Seit welchem Update weiß ich nicht genau, da einer der Trigger Temperaturabhängig ist und es nunmal jetzt erst Sommer wurde.
Dieses List habe ich gemacht, nachdem der waittimer den Wechsel in cmd_2 angekündigt hatte, obwohl die Bedingung "e_Container_SENSOR_XtenderTransfer_sensor closed" cmd_1 hätte bestehen lassen sollen.
Internals:
DEF ([Container_TEMPFEUCHTESENSOR:temperature] > 23 and [Astro:SunAz] > 100 and [Astro:SunAz] < 270 and [Astro:SunAlt] > 28 and ([?AnwesenheitHaupt:statStateDaypresent] gt "01:00:00" or [AnwesenheitHaupt:state] eq "present") and [Container_SENSOR_XtenderTransfer:sensor] eq "closed")
(set KLIMA_AnAusTimer on)
DOELSE (set KLIMA_AnAusTimer off)
FUUID 5c86875d-f33f-6bb4-0add-1580258b007324cc
MODEL FHEM
NAME Container_XTENDER_Schalter_KLIMAAnAusDOIF
NOTIFYDEV Container_SENSOR_XtenderTransfer,global,Container_TEMPFEUCHTESENSOR,AnwesenheitHaupt,Astro
NR 1052
NTFY_ORDER 50-Container_XTENDER_Schalter_KLIMAAnAusDOIF
STATE cmd_1
TYPE DOIF
VERSION 22030 2020-05-25 14:10:16
READINGS:
2020-06-15 15:00:40 Device AnwesenheitHaupt
2020-06-15 13:26:46 cmd 1
2020-06-15 13:26:46 cmd_event Container_SENSOR_XtenderTransfer
2020-06-15 13:26:46 cmd_nr 1
2020-06-15 15:00:40 e_AnwesenheitHaupt_state present
2020-06-15 14:58:38 e_Astro_SunAlt 60.9
2020-06-15 14:58:38 e_Astro_SunAz 237
2020-06-15 14:47:49 e_Container_SENSOR_XtenderTransfer_sensor closed
2020-06-15 14:40:46 e_Container_TEMPFEUCHTESENSOR_temperature 23.3
2020-06-03 12:23:54 last_cmd cmd_1
2020-06-13 15:22:08 mode enabled
2020-06-15 13:26:46 state cmd_1
2020-06-15 14:47:49 wait_timer 15.06.2020 15:02:49 cmd_2 Container_SENSOR_XtenderTransfer
Regex:
accu:
cond:
AnwesenheitHaupt:
0:
state ^AnwesenheitHaupt$:^state:
Astro:
0:
SunAlt ^Astro$:^SunAlt:
SunAz ^Astro$:^SunAz:
Container_SENSOR_XtenderTransfer:
0:
sensor ^Container_SENSOR_XtenderTransfer$:^sensor:
Container_TEMPFEUCHTESENSOR:
0:
temperature ^Container_TEMPFEUCHTESENSOR$:^temperature:
attr:
cmdState:
wait:
0:
120
1:
900
waitdel:
condition:
0 ::ReadingValDoIf($hash,'Container_TEMPFEUCHTESENSOR','temperature') > 23 and ::ReadingValDoIf($hash,'Astro','SunAz') > 100 and ::ReadingValDoIf($hash,'Astro','SunAz') < 270 and ::ReadingValDoIf($hash,'Astro','SunAlt') > 28 and (::ReadingValDoIf($hash,'AnwesenheitHaupt','statStateDaypresent') gt "01:00:00" or ::ReadingValDoIf($hash,'AnwesenheitHaupt','state') eq "present") and ::ReadingValDoIf($hash,'Container_SENSOR_XtenderTransfer','sensor') eq "closed"
do:
0:
0 set KLIMA_AnAusTimer on
1:
0 set KLIMA_AnAusTimer off
helper:
DEVFILTER ^global$|^Container_SENSOR_XtenderTransfer$|^Astro$|^Container_TEMPFEUCHTESENSOR$|^AnwesenheitHaupt$
NOTIFYDEV global|Container_SENSOR_XtenderTransfer|Astro|Container_TEMPFEUCHTESENSOR|AnwesenheitHaupt
event present,statStateDaypresent: 12:22:44
globalinit 1
last_timer 0
sleepdevice Container_SENSOR_XtenderTransfer
sleepsubtimer 0
sleeptimer 1
timerdev AnwesenheitHaupt
timerevent present,statStateDaypresent: 12:22:44
triggerDev AnwesenheitHaupt
timerevents:
present
statStateDaypresent: 12:22:44
timereventsState:
state: present
statStateDaypresent: 12:22:44
triggerEvents:
present
statStateDaypresent: 12:22:44
triggerEventsState:
state: present
statStateDaypresent: 12:22:44
internals:
perlblock:
readings:
all Container_TEMPFEUCHTESENSOR:temperature Astro:SunAz Astro:SunAlt AnwesenheitHaupt:state Container_SENSOR_XtenderTransfer:sensor
trigger:
uiState:
uiTable:
Attributes:
devStateIcon disabled:general_aus@red:initialize initialize:general_an@yellow:disable initialized:general_an@yellow:disable cmd_1:general_an@green:disable cmd_2:general_an@yellow:disable
group System
icon frost
room System,Anwesenheit
sortby 003
wait 120:900
Nachdem das DOIF dann tatsächlich auf cmd_2 gegangen ist, dieses List:
Internals:
DEF ([Container_TEMPFEUCHTESENSOR:temperature] > 23 and [Astro:SunAz] > 100 and [Astro:SunAz] < 270 and [Astro:SunAlt] > 28 and ([?AnwesenheitHaupt:statStateDaypresent] gt "01:00:00" or [AnwesenheitHaupt:state] eq "present") and [Container_SENSOR_XtenderTransfer:sensor] eq "closed")
(set KLIMA_AnAusTimer on)
DOELSE (set KLIMA_AnAusTimer off)
FUUID 5c86875d-f33f-6bb4-0add-1580258b007324cc
MODEL FHEM
NAME Container_XTENDER_Schalter_KLIMAAnAusDOIF
NOTIFYDEV Container_SENSOR_XtenderTransfer,global,Container_TEMPFEUCHTESENSOR,AnwesenheitHaupt,Astro
NR 1052
NTFY_ORDER 50-Container_XTENDER_Schalter_KLIMAAnAusDOIF
STATE cmd_2
TYPE DOIF
VERSION 22030 2020-05-25 14:10:16
READINGS:
2020-06-15 15:00:40 Device AnwesenheitHaupt
2020-06-15 15:02:50 cmd 2
2020-06-15 15:02:50 cmd_event Container_SENSOR_XtenderTransfer
2020-06-15 15:02:50 cmd_nr 2
2020-06-15 15:00:40 e_AnwesenheitHaupt_state present
2020-06-15 14:58:38 e_Astro_SunAlt 60.9
2020-06-15 14:58:38 e_Astro_SunAz 237
2020-06-15 14:47:49 e_Container_SENSOR_XtenderTransfer_sensor closed
2020-06-15 14:40:46 e_Container_TEMPFEUCHTESENSOR_temperature 23.3
2020-06-03 12:23:54 last_cmd cmd_1
2020-06-13 15:22:08 mode enabled
2020-06-15 15:02:50 state cmd_2
2020-06-15 15:02:49 wait_timer no timer
Regex:
accu:
cond:
AnwesenheitHaupt:
0:
state ^AnwesenheitHaupt$:^state:
Astro:
0:
SunAlt ^Astro$:^SunAlt:
SunAz ^Astro$:^SunAz:
Container_SENSOR_XtenderTransfer:
0:
sensor ^Container_SENSOR_XtenderTransfer$:^sensor:
Container_TEMPFEUCHTESENSOR:
0:
temperature ^Container_TEMPFEUCHTESENSOR$:^temperature:
attr:
cmdState:
wait:
0:
120
1:
900
waitdel:
condition:
0 ::ReadingValDoIf($hash,'Container_TEMPFEUCHTESENSOR','temperature') > 23 and ::ReadingValDoIf($hash,'Astro','SunAz') > 100 and ::ReadingValDoIf($hash,'Astro','SunAz') < 270 and ::ReadingValDoIf($hash,'Astro','SunAlt') > 28 and (::ReadingValDoIf($hash,'AnwesenheitHaupt','statStateDaypresent') gt "01:00:00" or ::ReadingValDoIf($hash,'AnwesenheitHaupt','state') eq "present") and ::ReadingValDoIf($hash,'Container_SENSOR_XtenderTransfer','sensor') eq "closed"
do:
0:
0 set KLIMA_AnAusTimer on
1:
0 set KLIMA_AnAusTimer off
helper:
DEVFILTER ^global$|^Container_SENSOR_XtenderTransfer$|^Astro$|^Container_TEMPFEUCHTESENSOR$|^AnwesenheitHaupt$
NOTIFYDEV global|Container_SENSOR_XtenderTransfer|Astro|Container_TEMPFEUCHTESENSOR|AnwesenheitHaupt
event present,statStateDaypresent: 12:22:44
globalinit 1
last_timer 0
sleepdevice Container_SENSOR_XtenderTransfer
sleepsubtimer -1
sleeptimer -1
timerdev AnwesenheitHaupt
timerevent present,statStateDaypresent: 12:22:44
triggerDev AnwesenheitHaupt
DOIF_eventa:
cmd_nr: 2
cmd: 2
cmd_event: Container_SENSOR_XtenderTransfer
cmd_2
DOIF_eventas:
cmd_nr: 2
cmd: 2
cmd_event: Container_SENSOR_XtenderTransfer
state: cmd_2
timerevents:
present
statStateDaypresent: 12:22:44
timereventsState:
state: present
statStateDaypresent: 12:22:44
triggerEvents:
present
statStateDaypresent: 12:22:44
triggerEventsState:
state: present
statStateDaypresent: 12:22:44
internals:
perlblock:
readings:
all Container_TEMPFEUCHTESENSOR:temperature Astro:SunAz Astro:SunAlt AnwesenheitHaupt:state Container_SENSOR_XtenderTransfer:sensor
trigger:
uiState:
uiTable:
Attributes:
devStateIcon disabled:general_aus@red:initialize initialize:general_an@yellow:disable initialized:general_an@yellow:disable cmd_1:general_an@green:disable cmd_2:general_an@yellow:disable
group System
icon frost
room System,Anwesenheit
sortby 003
wait 120:900
die Bedingungen für cmd_2 sind weiterhin nicht gegeben, oder anders gesagt, cmd_1 sollte weiterhin wahr sein. Was übersehe ich?
Danke und Grüße
H.
Das Event kommt von:
2020-06-15 15:02:50 cmd_event Container_SENSOR_XtenderTransfer
Der Inhalt wurde aber nicht aktualisiert:
2020-06-15 14:47:49 e_Container_SENSOR_XtenderTransfer_sensor closed
Du müsstest mal loggen was da vom Container_SENSOR_XtenderTransfer genau kommt.
Edit: ich sehe gerade, dass um 14:47:49 das wait angestoßen wurde - > hier alles ok
Ich kann mir jetzt keinen Reim drauf machen, warum der DOELSE-Fall wahr wurde. Da die Bedingung von Perl ausgewertet wird und an der Stelle im DOIF nichts geändert wurde, wird man sich an das Problem herantasten müssen. Evtl. ohne wait testen.
Hallo Damian, ja, der event kommt von [Container_SENSOR_XtenderTransfer:sensor] ... halbstündlich, da für den Log regelmäßig ein add-Event erzeugt wird.
aber das sollte eben das DOIF, da cmd_1 die Bedingung "... and [Container_SENSOR_XtenderTransfer:sensor] eq "closed" enthält, in cmd_1 belassen. Ich verstehe nicht, was das DOIF dazu veranlasst in cmd_2 zu wollen.
Was sein könnte, aber das ist eine spätere Nebenbeobachtung, ist, dass der Part "[Container_TEMPFEUCHTESENSOR:temperature] > 23" so in etwa in der Zeit nicht mehr erfüllt war, allerdings finde ich in dem List keinerlei Bezug dazu.
Wo würde ich im List sehen, dass "[Container_TEMPFEUCHTESENSOR:temperature] > 23" der Grund ist? Bzw. ist es nachvollziehbar, dass das der Grund ist wenns nunmal nicht angezeigt wird? Gott, mal wieder schwer zu beschreiben.
ja, ich habe meinen Beitrag gerade aktualisiert:
Zitat
Ich kann mir jetzt keinen Reim drauf machen, warum der DOELSE-Fall wahr wurde. Da die Bedingung von Perl ausgewertet wird und an der Stelle im DOIF nichts geändert wurde, wird man sich an das Problem herantasten müssen. Evtl. ohne wait testen.
Zitat von: holle75 am 15 Juni 2020, 20:14:26
Wo würde ich im List sehen, dass "[Container_TEMPFEUCHTESENSOR:temperature] > 23" der Grund ist? Bzw. ist es nachvollziehbar, dass das der Grund ist wenns nunmal nicht angezeigt wird? Gott, mal wieder schwer zu beschreiben.
oder anders gesagt, "Container_TEMPFEUCHTESENSOR" ist in seinen Events eingeschränkt (nur alle 0,5 Grad) .... wenn jetzt das add-event den "Container_SENSOR_XtenderTransfer"-Event triggert, sollten alle Stati von alles Devices überprüft werden, Bedingung von "Container_TEMPFEUCHTESENSOR" wäre nicht mehr wahr, aber "Container_SENSOR_XtenderTransfer" wird als Trigger gelistet ???? ... und der alte Event (23.3) von "Container_TEMPFEUCHTESENSOR" steht noch im List?
Könnte das sein?
Zitat von: holle75 am 15 Juni 2020, 20:24:57
oder anders gesagt, "Container_TEMPFEUCHTESENSOR" ist in seinen Events eingeschränkt (nur alle 0,5 Grad) .... wenn jetzt das add-event den "Container_SENSOR_XtenderTransfer"-Event triggert, sollten alle Stati von alles Devices überprüft werden, Bedingung von "Container_TEMPFEUCHTESENSOR" wäre nicht mehr wahr, aber "Container_SENSOR_XtenderTransfer" wird als Trigger gelistet ???? ... und der alte Event (23.3) von "Container_TEMPFEUCHTESENSOR" steht noch im List?
Könnte das sein?
ja, wenn natürlich nicht alle Änderungen der angegebenen Devices ein Event produzieren, dann sieht man eben nicht die ganze Wahrheit.
Yay, danke dir. Halbe Wahrheit reicht mir, solange ich sie mir erklären kann :)