Hallo,
ich habe eine Beschattungssteuerung, die ab einer bestimmten Uhrzeit und bis zu einer bestimmten Uhrzeit jede Stunde prüfen soll, ob die Kriterien für eine Beschattung erfüllt sind. Das DOIF scheint auch zu triggern, erzeugt jedoch eine Fehlermeldung deren Ursache ich nicht finde. Vielleicht sieht jemand den Fehler, der ja da sein muss.
Mein DOIF mit Erklärung. Dieser Teil "([06:00-18:00,+00:60:00])" ist der, der den Fehler erzeugt.:
((([?Wetter_Pro:fc0_tempMax] > 22 and ([?Wetter_Pro:fc0_weatherDay] =~ "sonnig" or [?Wetter_Pro:fc0_weatherDay] =~ "heiter" or [?Wetter_Pro:fc0_weatherDay] =~ "unterschiedlich bewölkt"))
or [EG_UniSen_06:temperature] >= 24 or [?Wetter_Pro:fc0_tempMax] > 26) and ($month >= 4 || $month <= 10) and ([06:00-18:00,+00:60:00]) and [?du_Beschattung_Haus_Mittag] ne "ja")
(set du_Beschattung_Haus_Mittag ja)
## Beschattung notwendig wenn Vorhersage Aussentemp. > 22 °C UND (heiter oder sonnig oder unterschiedlich bewölkt) ODER Aussentemp. > 26 °C ODER WZ-Temp >= 24°C und immer nur zwischen April
und Oktober, Überprüfung jede Stunde, wenn Dummy Beschatten nicht auf ja (sonst jede Stunde trigger)
Test: Ab 6:00 jede Stunde prüfen Alt:([11:30-19:00,+:60|1234] and !$we) or [11:40-19:00,+:60|57])
DOELSEIF ([du_Tageslicht] eq "dunkel") (set du_Beschattung_Haus_Mittag nein) ## Bei Sonnenuntergang Merker zurücksetzen
und die Fehlermeldung:
READINGS:
2019-09-22 10:07:59 Device EG_UniSen_06
2019-09-21 19:35:22 cmd 2
2019-09-21 19:35:22 cmd_event du_Tageslicht
2019-09-21 19:35:22 cmd_nr 2
2019-09-22 10:07:59 e_EG_UniSen_06_temperature 23.0
2019-09-22 06:46:34 e_du_Tageslicht_STATE hell
2019-09-21 09:09:56 mode enabled
2019-09-21 19:35:22 state Dummy
2019-09-21 18:00:00 timer_01_c01 22.09.2019 06:00:00
2019-09-21 18:00:00 timer_02_c01 22.09.2019 18:00:00
2019-09-22 06:00:00 timer_03_c01 error: Wrong timespec 00:60:00: either HH:MM:SS or {perlcode}
Grüße Jürgen
,+3600 oder ,+01:00, schon mal ne 60 auf der Digitaluhr gesehen? ;)
60 auf einer Digitaluhr ist durchaus unüblich, stimmt. :D
Aber 60 Minuten werden als 1 Stunde, auch in der Programmierung, verwendet. Deshalb bin ich gar nicht auf die Idee gekommen, statt 00:60 auch 01:00 zu schreiben. Ich teste es gleich mal.
Zitat von: bmwfan am 22 September 2019, 16:17:15
60 auf einer Digitaluhr ist durchaus unüblich, stimmt. :D
Aber 60 Minuten werden als 1 Stunde, auch in der Programmierung, verwendet. Deshalb bin ich gar nicht auf die Idee gekommen, statt 00:60 auch 01:00 zu schreiben. Ich teste es gleich mal.
Ein Beispiel wo im Format HH:MM:SS 60 min angegeben werden ist mir noch nicht untergekommen. Sekunden sind in FHEM als Grundeinheit üblich, z.b. bei sleep und mit Sekunden funktioniert es auch, also mit 60 min = 60 min x 60 s/min = 3600 s.
Habs umgestellt und siehe da, es funktioniert problemlos.
Danke und Gruß Jürgen
Abseits vom gelösten Problem:
Zitat von: bmwfan am 22 September 2019, 10:24:26 ($month >= 4 || $month <= 10)
trifft das nicht immer zu?
Nach etwas überlegen muss ich Dir zustimmen. Hier muß ein logisches UND und kein ODER hinein. Hat trotzdem funktioniert aber vermutlich nur deswegen, da ich auch Temperaturbafragen mit eingebaut habe.
Ich stelle es richtig und schau, ob es dann immer noch funktioniert.
Danke