FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: maci am 21 Dezember 2017, 19:51:41

Titel: Ersuche um Codeüberprüfung
Beitrag von: maci am 21 Dezember 2017, 19:51:41
Hallo,

Ich hatte bisher einen ganz einfachen Code für meine Weihnachtskerze beim Hauseingang.

Diesen Code habe ich nun überarbeitet.
Nach der Art, dass im Monat 12 die Tageszahl *100 zu den Sekunden dazugerechnet wird.
Im Monat 1 die Tageszahl *100 von den Sekunden abgezogen wird.
Zusätzlich dass am 24. 12. und am 31. 12. die Kerze länger brennt

Da der Code aber ohne langes Testen funktionieren soll, ersuche ich um eine Überprüfung.
Bitte und Danke!
Internals:
   DEF        ([Weihnachtskerze] eq "on" and [{sunset("REAL")}])  (set Kerze_Hauseingang on)
DOELSEIF ([Weihnachtskerze] eq "on" and ($month=12 and $mday=24) and [{sunset("REAL",+35000)}] )  (set Kerze_Hauseingang off)
DOELSEIF ([Weihnachtskerze] eq "on" and ($month=12 and $mday=31) and [{sunset("REAL",+31400)}] )  (set Kerze_Hauseingang off)
DOELSEIF ([Weihnachtskerze] eq "on" and ($month=12) and (!$mday=24) and (!$mday=31) and [{sunset("REAL",+(21500+$mday*100),"22:00","24:00")}]) (set Kerze_Hauseingang off)
DOELSEIF ([Weihnachtskerze] eq "on" and ($month=1) and [{sunset("REAL",+(21500-$mday*100),"21:00","23:00")}]) (set Kerze_Hauseingang off)
   NAME       di_Kerze_hauseingang
   NR         1161
   NTFY_ORDER 50-di_Kerze_hauseingang
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2017-12-21 19:49:49   cmd             0
     2017-12-21 19:49:49   state           initialized
     2017-12-21 19:49:49   timer_01_c01    22.12.2017 16:05:19
     2017-12-21 19:49:49   timer_02_c02    22.12.2017 01:48:09
     2017-12-21 19:49:49   timer_03_c03    22.12.2017 00:48:09
     2017-12-21 19:49:49   timer_04_c04    21.12.2017 22:38:09
     2017-12-21 19:49:49   timer_05_c05    21.12.2017 21:28:09
   condition:
     0          InternalDoIf($hash,'Weihnachtskerze','STATE') eq "on" and DOIF_time_once($hash,0,$wday)
     1          InternalDoIf($hash,'Weihnachtskerze','STATE') eq "on" and ($month=12 and $mday=24) and DOIF_time_once($hash,1,$wday)
     2          InternalDoIf($hash,'Weihnachtskerze','STATE') eq "on" and ($month=12 and $mday=31) and DOIF_time_once($hash,2,$wday)
     3          InternalDoIf($hash,'Weihnachtskerze','STATE') eq "on" and ($month=12) and (!$mday=24) and (!$mday=31) and DOIF_time_once($hash,3,$wday)
     4          InternalDoIf($hash,'Weihnachtskerze','STATE') eq "on" and ($month=1) and DOIF_time_once($hash,4,$wday)
   days:
   devices:
     0           Weihnachtskerze
     1           Weihnachtskerze
     2           Weihnachtskerze
     3           Weihnachtskerze
     4           Weihnachtskerze
     all         Weihnachtskerze
   do:
     0:
       0          set Kerze_Hauseingang on
     1:
       0          set Kerze_Hauseingang off
     2:
       0          set Kerze_Hauseingang off
     3:
       0          set Kerze_Hauseingang off
     4:
       0          set Kerze_Hauseingang off
     5:
   helper:
     globalinit 1
     last_timer 5
     sleeptimer -1
   internals:
     0           Weihnachtskerze:STATE
     1           Weihnachtskerze:STATE
     2           Weihnachtskerze:STATE
     3           Weihnachtskerze:STATE
     4           Weihnachtskerze:STATE
     all         Weihnachtskerze:STATE
   itimer:
   localtime:
     0          1513955119
     1          1513903689
     2          1513900089
     3          1513892289
     4          1513888089
   realtime:
     0          16:05:19
     1          01:48:09
     2          00:48:09
     3          22:38:09
     4          21:28:09
   regexp:
     all:
   state:
     STATE:
   time:
     0          {sunset("REAL")}
     1          {sunset("REAL",+35000)}
     2          {sunset("REAL",+31400)}
     3          {sunset("REAL",+(21500+$mday*100),"22:00","24:00")}
     4          {sunset("REAL",+(21500-$mday*100),"21:00","23:00")}
   timeCond:
     0          0
     1          1
     2          2
     3          3
     4          4
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
   timers:
     0           0
     1           1
     2           2
     3           3
     4           4
   triggertime:
     1513888089:
       localtime  1513888089
       hash:
     1513892289:
       localtime  1513892289
       hash:
     1513900089:
       localtime  1513900089
       hash:
     1513903689:
       localtime  1513903689
       hash:
     1513955119:
       localtime  1513955119
       hash:
Attributes:
   do         always
   room       4.04_Hauseingang

Titel: Antw:Ersuche um Codeüberprüfung
Beitrag von: Ellert am 21 Dezember 2017, 20:26:52
Verstehe ich das richtig, Du möchtest dass jemand Deinen Code für Dich testet, weil Du keine Lust dazu hast?
Titel: Antw:Ersuche um Codeüberprüfung
Beitrag von: maci am 21 Dezember 2017, 20:49:40
Zitat von: Ellert am 21 Dezember 2017, 20:26:52
Verstehe ich das richtig, Du möchtest dass jemand Deinen Code für Dich testet, weil Du keine Lust dazu hast?

Das ist es ganz sicher nicht.

Da ich nicht ganz so fit bin im Code schreiben, wollte ich den überprüft haben.
Er soll einfach gleich laufen.
Aber ist ja egal, dann warte ich einfach ein Jahr und lasse den parallel mitlaufen.
Mein Kerze hat ab sofort wieder den alten Code, der andere schaltet jetzt einen Dummy.
In 12 Monaten weiß ich ob es funktioniert hat.
Ist auch eine Möglichkeit.
Titel: Antw:Ersuche um Codeüberprüfung
Beitrag von: Ellert am 21 Dezember 2017, 21:00:06
Du könntest zum Testen andere Parameter nehmen, die näher zum aktuellen Zeitpunkt liegen, dann musst Du nicht ein Jahr warten, sondern z.B. nur 5 Minuten.
Und selbst testen macht fit.