FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: bmwfan am 22 September 2019, 10:24:26

Titel: Gelöst: Relative Zeitangabe erzeugt Fehlermeldung. Finde den Fehler nicht
Beitrag von: bmwfan am 22 September 2019, 10:24:26
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
Titel: Antw:Relative Zeitangabe erzeugt Fehlermeldung. Finde den Fehler nicht
Beitrag von: Ellert am 22 September 2019, 12:46:48
,+3600 oder ,+01:00, schon mal ne 60 auf der Digitaluhr gesehen?  ;)
Titel: Antw:Relative Zeitangabe erzeugt Fehlermeldung. Finde den Fehler nicht
Beitrag 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.
Titel: Antw:Relative Zeitangabe erzeugt Fehlermeldung. Finde den Fehler nicht
Beitrag von: Ellert am 22 September 2019, 17:29:45
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.
Titel: Gelöst:Relative Zeitangabe erzeugt Fehlermeldung. Finde den Fehler nicht
Beitrag von: bmwfan am 22 September 2019, 17:33:06
Habs umgestellt und siehe da, es funktioniert problemlos.

Danke und Gruß Jürgen
Titel: Antw:Gelöst: Relative Zeitangabe erzeugt Fehlermeldung. Finde den Fehler nicht
Beitrag von: Per am 23 September 2019, 14:59:27
Abseits vom gelösten Problem:
Zitat von: bmwfan am 22 September 2019, 10:24:26 ($month >= 4 || $month <= 10)
trifft das nicht immer zu?
Titel: Antw:Gelöst: Relative Zeitangabe erzeugt Fehlermeldung. Finde den Fehler nicht
Beitrag von: bmwfan am 27 September 2019, 15:31:44
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