Hallo zusammen,
seit ich vor ca 2 Tagen ein update durchführte, werden die readings in sehr kurzen, unter einer Minute, Abständen dauernd ausgelesen und das cmd neu gesendet. Obwohl sich die readings nicht geändert haben!
Es ist auch kein attr do allway gesetzt.
Bei einem anderen DOIF ändert sich zwar das reading, aber es wird nichts ausgeführt.
Ich weiß, dass ich bei den betroffenen DOIF's nichts geändert habe und diese hatten bis jetzt klaglos funktioniert, darum die Verwunderung und Ratlosigkeit.
Das ist bei eine Rollosteuerung sehr unzufriedenstellen.
Gibt es da Änderungen im DOIF Modul?
Was für eine Datei kann ich aus einem Backup wiederherstellen, um die alte DOIF Version zu bekommen?
Danke
Hi,
ich würde ja denken, es liegt nicht an DOIF sondern am Device welches DOIF triggert. Aber ohne list kann man nur raten.
Zum update: https://wiki.fhem.de/wiki/Update
Mit Hilfe von restoreDir bbzw. restore list siehst Du was aktualisiert wurde und kannst auch selektiv zurück sichern. Aber Vorsicht! CUL_HM z.B. benötigt in sich konsistente Versionsstände von mehreren Modulen!
Tipp: Der Eventmonitor kann Dir helfen, zu beobachten was zeitlich zusammenhängend passiert.
Gruß Otto
das list sieht so aus:
Internals:
DEF (([{sunrise("REAL",-400,"06:35:00","07:00")}-13:30 |8] or [07:32 - 13:30|7])and [PV_WR:AC_Current3:d0]>[PV_trigger_south] and [W044_229:temperature]>=15 and [Wohnzimmer_Thermostat:temperature:d0] >=21 and ($month >= 3 && $month <= 9) and [jemand_da:state] eq "1")
(set alle_Rollo_gleichzeitig_S pos 90)
DOELSEIF
(([{sunrise("REAL",-400,"06:35:00","07:00")}-13:30 |8] or [07:31 - 13:30|7]) and [PV_WR:AC_Current3:d0]>[PV_trigger_south] and [W044_229:temperature]>=15 and [Wohnzimmer_Thermostat:temperature:d0] >=21 and ($month >= 3 && $month <= 9) and [jemand_da:state] eq "0")
(set alle_Rollo_gleichzeitig_S down)
DOELSE (set alle_Rollo_gleichzeitig_S up)
FUUID 5c42eaa6-f33f-fbda-2c50-e24b98a7a9a10f4f
MODEL FHEM
NAME alle_Rollo_S_Sonne
NOTIFYDEV jemand_da,PV_trigger_south,W044_229,PV_WR,global,Wohnzimmer_Thermostat
NR 268
NTFY_ORDER 50-alle_Rollo_S_Sonne
STATE up - 2020-09-23 09:58:20
TYPE DOIF
VERSION 22781 2020-09-17 15:31:13
READINGS:
2020-09-23 10:04:20 Device PV_WR
2020-09-23 09:58:20 cmd 3
2020-09-23 09:58:20 cmd_count 1
2020-09-23 09:58:20 cmd_event PV_WR
2020-09-23 09:58:20 cmd_nr 3
2020-09-23 10:04:20 e_PV_WR_AC_Current3 1328
2020-09-23 10:01:21 e_W044_229_temperature 20.7
2020-09-23 09:51:17 e_Wohnzimmer_Thermostat_temperature 24.9
2020-09-23 09:21:16 e_jemand_da_state 1
2020-09-23 09:48:03 mode enabled
2020-09-23 09:58:20 state up
2020-09-23 09:41:18 timer_01_c01 24.09.2020 06:42:20|8
2020-09-23 09:41:18 timer_02_c01 23.09.2020 13:30:00|8
2020-09-23 09:41:18 timer_03_c01 24.09.2020 07:32:00|7
2020-09-23 09:41:18 timer_04_c01 23.09.2020 13:30:00|7
2020-09-23 09:41:18 timer_05_c02 24.09.2020 06:42:20|8
2020-09-23 09:41:18 timer_06_c02 23.09.2020 13:30:00|8
2020-09-23 09:41:18 timer_07_c02 24.09.2020 07:31:00|7
2020-09-23 09:41:18 timer_08_c02 23.09.2020 13:30:00|7
2020-09-23 10:04:20 wait_timer 23.09.2020 10:09:20 cmd_3 PV_WR
Regex:
accu:
cond:
PV_WR:
0:
AC_Current3 ^PV_WR$:^AC_Current3:
1:
AC_Current3 ^PV_WR$:^AC_Current3:
PV_trigger_south:
0:
&STATE ^PV_trigger_south$
1:
&STATE ^PV_trigger_south$
W044_229:
0:
temperature ^W044_229$:^temperature:
1:
temperature ^W044_229$:^temperature:
Wohnzimmer_Thermostat:
0:
temperature ^Wohnzimmer_Thermostat$:^temperature:
1:
temperature ^Wohnzimmer_Thermostat$:^temperature:
jemand_da:
0:
state ^jemand_da$:^state:
1:
state ^jemand_da$:^state:
attr:
cmdState:
0:
down
1:
down
2:
up
repeatsame:
1
1
1
wait:
0:
0
1:
0
2:
300
waitdel:
condition:
0 (::DOIF_time($hash,0,1,$wday,$hms,"8") or ::DOIF_time($hash,2,3,$wday,$hms,"7"))and ::ReadingValDoIf($hash,'PV_WR','AC_Current3','','d0')>::InternalDoIf($hash,'PV_trigger_south','STATE') and ::ReadingValDoIf($hash,'W044_229','temperature')>=15 and ::ReadingValDoIf($hash,'Wohnzimmer_Thermostat','temperature','','d0') >=21 and ($month >= 3 && $month <= 9) and ::ReadingValDoIf($hash,'jemand_da','state') eq "1"
1 (::DOIF_time($hash,4,5,$wday,$hms,"8") or ::DOIF_time($hash,6,7,$wday,$hms,"7")) and ::ReadingValDoIf($hash,'PV_WR','AC_Current3','','d0')>::InternalDoIf($hash,'PV_trigger_south','STATE') and ::ReadingValDoIf($hash,'W044_229','temperature')>=15 and ::ReadingValDoIf($hash,'Wohnzimmer_Thermostat','temperature','','d0') >=21 and ($month >= 3 && $month <= 9) and ::ReadingValDoIf($hash,'jemand_da','state') eq "0"
days:
0 8
1 8
2 7
3 7
4 8
5 8
6 7
7 7
do:
0:
0 set alle_Rollo_gleichzeitig_S pos 90
1:
0 set alle_Rollo_gleichzeitig_S down
2:
0 set alle_Rollo_gleichzeitig_S up
helper:
DEVFILTER ^global$|^jemand_da$|^W044_229$|^Wohnzimmer_Thermostat$|^PV_trigger_south$|^PV_WR$
NOTIFYDEV global|jemand_da|W044_229|Wohnzimmer_Thermostat|PV_trigger_south|PV_WR
event AC_Current3: 1328
globalinit 1
last_timer 8
sleepdevice PV_WR
sleepsubtimer 0
sleeptimer 2
timerdev PV_WR
timerevent AC_Current3: 1328
triggerDev PV_WR
timerevents:
AC_Current3: 1328
timereventsState:
AC_Current3: 1328
triggerEvents:
AC_Current3: 1328
triggerEventsState:
AC_Current3: 1328
internals:
all PV_trigger_south:STATE
interval:
0 -1
1 0
2 -1
3 2
4 -1
5 4
6 -1
7 6
intervalfunc:
localtime:
0 1600922540
1 1600860600
2 1600925520
3 1600860600
4 1600922540
5 1600860600
6 1600925460
7 1600860600
perlblock:
readings:
all PV_WR:AC_Current3 W044_229:temperature Wohnzimmer_Thermostat:temperature jemand_da:state
realtime:
0 06:42:20
1 13:30:00
2 07:32:00
3 13:30:00
4 06:42:20
5 13:30:00
6 07:31:00
7 13:30:00
time:
0 {sunrise("REAL",-400,"06:35:00","07:00")}
1 13:30:00
2 07:32:00
3 13:30:00
4 {sunrise("REAL",-400,"06:35:00","07:00")}
5 13:30:00
6 07:31:00
7 13:30:00
timeCond:
0 0
1 0
2 0
3 0
4 1
5 1
6 1
7 1
timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
timers:
0 0 1 2 3
1 4 5 6 7
trigger:
triggertime:
1600860600:
localtime 1600860600
hash:
1600922540:
localtime 1600922540
hash:
1600925460:
localtime 1600925460
hash:
1600925520:
localtime 1600925520
hash:
uiState:
uiTable:
Attributes:
cmdState down|down|up
devStateIcon cmd_1:down:cmd_3 cmd_2:down:cmd_3 cmd_2|initialized:up:cmd_1
repeatsame 1:1:1
room 7.7.Rollo_all
stateFormat {ReadingsVal('alle_Rollo_S_Sonne','state','')." - ".ReadingsTimestamp('alle_Rollo_S_Sonne','state','')}
wait 0:0:300
webCmd down:down:up
Das DOIF wird von allen zusätzlichen Dingen getriggert! Ich vermute dein DOIF ist eigentlich schon immer "Mist" und ein anderes Gerät liefert seit dem Update mehr Events!
Überlege Dir:
- was eine Rollofahrt wirklich starten soll
- und was nur abgefragt werden soll!
Vor die Elemente die nur abgefragt werden sollen setzt Du ein
?Beispiel
define d_test DOIF ([Trigger] eq [?Abfrage])(mach was )
Näheres dazu steht in der Doku von DOIF
Beobachte alle Geräte deines DOIFs im Eventmonitor und mach Dir ein Bild was passiert und was passieren soll.
Gruß Otto
Wieder was dazu gelehrnt!
Wäre das hier so also besser?
Internals:
DEF (([?{sunrise("REAL",-400,"06:35:00","07:00")}-13:30 |8] or [07:32 - 13:30|7])and [PV_WR:AC_Current3:d0]>[PV_trigger_south] and [W044_229:temperature]>=15 and [Wohnzimmer_Thermostat:temperature:d0] >=21 and (?$month >= 3 && $month <= 9) and [?jemand_da:state] eq "1")
(set alle_Rollo_gleichzeitig_S pos 90)
DOELSEIF
(([?{sunrise("REAL",-400,"06:35:00","07:00")}-13:30 |8] or [07:31 - 13:30|7]) and [PV_WR:AC_Current3:d0]>[PV_trigger_south] and [W044_229:temperature]>=15 and [Wohnzimmer_Thermostat:temperature:d0] >=21 and (?$month >= 3 && $month <= 9) and [?jemand_da:state] eq "0")
(set alle_Rollo_gleichzeitig_S down)
Somit wird nur mehr mit den Werten der PV, der Anwesenheit und der zwei Temperaturen getriggert, in einem bestimmten Zeitramen und Datum.
Bei den Variablen ($month) spielt das m.E keine Rolle, bzw. ist es falsch. Also nur die [] sind relevant.
Du musst halt wirklich schauen, wer jetzt Dein "Problem" verursacht. Und welcher Trigger wirklich relevant ist. Ich kann das so nicht sagen.
Ich hätte ja deinen Thermo im Wohnzimmer in Verdacht.
Beim Sonnenaufgang soll nicht getriggert werden?
Bei Sonnenaufgang noch nicht, da ja hier sowieso die Rollo fahren.
Der Beschattungsmodus wird erst danach aktiv und mit dem month, stimmt, da kommt eine Fehlermeldung. Hab es hier wieder raus genommen.
Danke