FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Eddy am 22 Dezember 2017, 11:29:29

Titel: Fehler in DOIF
Beitrag von: Eddy am 22 Dezember 2017, 11:29:29
Hallo Leute,

ich habe offensichtlich einen Fehler in DOIF, komme aber leider nicht drauf. Evtl. kann mir jemand helfen:

Ich habe es schon auf 2 verschiedene Weisen versucht.
Test 1:

defmod DOIF_Rollo_Fenster_Kinderzimmer_OG DOIF (([Rollo_Tageslicht:state] eq "dunkel") or [[Rollo_ab]|8])     ({if (ReadingsVal("Rollo_Fenster_Kinderzimmer_OG", "state", "---") ne "off") {fhem("set Rollo_Fenster_Kinderzimmer_OG off")}})    DOELSEIF (([[Rollo_auf]|8] or [[Rollo_auf_WE]|7]) or ([Rollo_Tageslicht:state] eq "hell"))     ({if (ReadingsVal("Rollo_Fenster_Kinderzimmer_OG", "state", "---") ne "on") {fhem("set Rollo_Fenster_Kinderzimmer_OG on")}})


Test 2:

defmod DOIF_Rollo_Fenster_Kinderzimmer_OG DOIF (([Rollo_Fenster_Kinderzimmer_OG:state] eq "on") and (([Rollo_Tageslicht:state] eq "dunkel") or [[Rollo_ab]|8]))     (set Rollo_Fenster_Kinderzimmer_OG off)    DOELSEIF (([Rollo_Fenster_Kinderzimmer_OG:state] eq "off") and (([[Rollo_auf]|8] or [[Rollo_auf_WE]|7]) or ([Rollo_Tageslicht:state] eq "hell")))     (set Rollo_Fenster_Kinderzimmer_OG on)
Titel: Antw:Fehler in DOIF
Beitrag von: Fixel2012 am 22 Dezember 2017, 11:37:43
Hallo Eddy,

dieses Unter-Forum ist nur für fertigen Code gedacht

Siehe hier: https://forum.fhem.de/index.php/topic,47490.0.html

Unten Link den Thread bitte in das DOIF Forum verschieben, da können dir bezüglich DOIF auch die Profis deine Frage beantworten.
Titel: Antw:Fehler in DOIF
Beitrag von: Eddy am 22 Dezember 2017, 11:40:23
Zitat von: Fixel2012 am 22 Dezember 2017, 11:37:43
Hallo Eddy,

dieses Unter-Forum ist nur für fertigen Code gedacht

Siehe hier: https://forum.fhem.de/index.php/topic,47490.0.html

Unten Link den Thread bitte in das DOIF Forum verschieben, da können dir bezüglich DOIF auch die Profis deine Frage beantworten.

Sorry!
Titel: Antw:Fehler in DOIF
Beitrag von: Fixel2012 am 22 Dezember 2017, 11:41:42
Alles gut  :)
Titel: Antw:Fehler in DOIF
Beitrag von: Ellert am 22 Dezember 2017, 13:13:15
Zitat von: Eddy am 22 Dezember 2017, 11:29:29
Hallo Leute,

ich habe offensichtlich einen Fehler in DOIF, komme aber leider nicht drauf. Evtl. kann mir jemand helfen:

Ich habe es schon auf 2 verschiedene Weisen versucht.
Test 1:

defmod DOIF_Rollo_Fenster_Kinderzimmer_OG DOIF (([Rollo_Tageslicht:state] eq "dunkel") or [[Rollo_ab]|8])     ({if (ReadingsVal("Rollo_Fenster_Kinderzimmer_OG", "state", "---") ne "off") {fhem("set Rollo_Fenster_Kinderzimmer_OG off")}})    DOELSEIF (([[Rollo_auf]|8] or [[Rollo_auf_WE]|7]) or ([Rollo_Tageslicht:state] eq "hell"))     ({if (ReadingsVal("Rollo_Fenster_Kinderzimmer_OG", "state", "---") ne "on") {fhem("set Rollo_Fenster_Kinderzimmer_OG on")}})


Test 2:

defmod DOIF_Rollo_Fenster_Kinderzimmer_OG DOIF (([Rollo_Fenster_Kinderzimmer_OG:state] eq "on") and (([Rollo_Tageslicht:state] eq "dunkel") or [[Rollo_ab]|8]))     (set Rollo_Fenster_Kinderzimmer_OG off)    DOELSEIF (([Rollo_Fenster_Kinderzimmer_OG:state] eq "off") and (([[Rollo_auf]|8] or [[Rollo_auf_WE]|7]) or ([Rollo_Tageslicht:state] eq "hell")))     (set Rollo_Fenster_Kinderzimmer_OG on)

Schau mal, was Du vorher alles machen könntest und danach bitte vollständige Informationen posten und das DOIF etwas strukturieren, das hilft Dir selbst und dem potentiellen Helfenden.
https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche
Titel: Antw:Fehler in DOIF
Beitrag von: Eddy am 22 Dezember 2017, 13:58:11
So, also nochmals:

defmod DOIF_Rollo_Fenster_Kinderzimmer_OG
DOIF
(([Rollo_Tageslicht:state] eq "dunkel") or [[Rollo_ab]|8])     
({if (ReadingsVal("Rollo_Fenster_Kinderzimmer_OG", "state", "---") ne "off") {fhem("set Rollo_Fenster_Kinderzimmer_OG off")}})   
DOELSEIF
(([[Rollo_auf]|8] or [[Rollo_auf_WE]|7]) or ([Rollo_Tageslicht:state] eq "hell"))     
({if (ReadingsVal("Rollo_Fenster_Kinderzimmer_OG", "state", "---") ne "on") {fhem("set Rollo_Fenster_Kinderzimmer_OG on")}})



defmod DOIF_Rollo_Fenster_Kinderzimmer_OG
DOIF
(([Rollo_Fenster_Kinderzimmer_OG:state] eq "on") and (([Rollo_Tageslicht:state] eq "dunkel") or [[Rollo_ab]|8]))
(set Rollo_Fenster_Kinderzimmer_OG off)   
DOELSEIF
(([Rollo_Fenster_Kinderzimmer_OG:state] eq "off") and (([[Rollo_auf]|8] or [[Rollo_auf_WE]|7]) or ([Rollo_Tageslicht:state] eq "hell")))
(set Rollo_Fenster_Kinderzimmer_OG on)
Titel: Antw:Fehler in DOIF
Beitrag von: Eddy am 22 Dezember 2017, 13:59:58

Internals:
   NAME       Rollo_auf
   NR         198
   STATE      state 08:30
   TYPE       dummy
   READINGS:
     2017-12-22 00:18:52   state           state 08:30
Attributes:
   alias      Zeit hoch:
   devStateIcon .*:rc_BLANK
   group      Rollos_Settings
   icon       icoUhr
   room       Rolladensteuerung
   setList    state:time
   sortby     10
   webCmd     state
Titel: Antw:Fehler in DOIF
Beitrag von: Ellert am 22 Dezember 2017, 14:09:01
Damit weiss aber noch keiner was das DOIF machen soll, wie sich der Fehler äußert.
Befreie das DOIF von unnötigen runden Klammern, Vergleiche müssen nicht geklammert werden.
Warum steht in state "state 08:30"?
Titel: Antw:Fehler in DOIF
Beitrag von: Eddy am 22 Dezember 2017, 14:18:15
sorry, hatte den Fehler ja nie beschrieben.

Internals:
   DEF        (([Rollo_Fenster_Kinderzimmer_OG:state] eq "on") and (([Rollo_Tageslicht:state] eq "dunkel") or [[Rollo_ab]|8]))     (set Rollo_Fenster_Kinderzimmer_OG off)    DOELSEIF (([Rollo_Fenster_Kinderzimmer_OG:state] eq "off") and (([[Rollo_auf]|8] or [[Rollo_auf_WE]|7]) or ([Rollo_Tageslicht:state] eq "hell")))     (set Rollo_Fenster_Kinderzimmer_OG on)
   NAME       DOIF_Rollo_Fenster_Kinderzimmer_OG
   NR         205
   NTFY_ORDER 50-DOIF_Rollo_Fenster_Kinderzimmer_OG
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2017-12-22 07:54:53   Device          Rollo_Tageslicht
     2017-12-22 11:25:58   cmd             0
     2017-12-22 07:54:53   e_Rollo_Tageslicht_state hell
     2017-12-22 07:54:53   error           condition c02: syntax error, ("

     2017-12-22 11:25:58   state           initialized
     2017-12-22 11:25:58   timer_01_c01    22.12.2017 18:30:00|8
     2017-12-22 11:25:58   timer_02_c02    error: Wrong timespec state 08:30: either HH:MM:SS or {perlcode}
     2017-12-22 11:25:58   timer_03_c02    23.12.2017 10:30:00|7
   condition:
     0          (ReadingValDoIf($hash,'Rollo_Fenster_Kinderzimmer_OG','state') eq "on") and ((ReadingValDoIf($hash,'Rollo_Tageslicht','state') eq "dunkel") or DOIF_time_once($hash,0,$wday,"8"))
     1          (ReadingValDoIf($hash,'Rollo_Fenster_Kinderzimmer_OG','state') eq "off") and ((DOIF_time_once($hash,1,$wday,"8") or DOIF_time_once($hash,2,$wday,"7")) or (ReadingValDoIf($hash,'Rollo_Tageslicht','state') eq "hell"))
   days:
     0          8
     1          8
     2          7
   devices:
     0           Rollo_Fenster_Kinderzimmer_OG Rollo_Tageslicht
     1           Rollo_Fenster_Kinderzimmer_OG Rollo_Tageslicht
     all         Rollo_Fenster_Kinderzimmer_OG Rollo_Tageslicht
   do:
     0:
       0          set Rollo_Fenster_Kinderzimmer_OG off
     1:
       0          set Rollo_Fenster_Kinderzimmer_OG on
     2:
   helper:
     globalinit 1
     last_timer 3
     sleeptimer -1
   itimer:
     all         Rollo_ab Rollo_auf Rollo_auf_WE
   localtime:
     0          1513963800
     2          1514021400
   readings:
     0           Rollo_Fenster_Kinderzimmer_OG:state Rollo_Tageslicht:state
     1           Rollo_Fenster_Kinderzimmer_OG:state Rollo_Tageslicht:state
     all         Rollo_Fenster_Kinderzimmer_OG:state Rollo_Tageslicht:state
   realtime:
     0          18:30:00
     2          10:30:00
   regexp:
     all:
   state:
     STATE:
   time:
     0          [Rollo_ab]
     1          [Rollo_auf]
     2          [Rollo_auf_WE]
   timeCond:
     0          0
     1          1
     2          1
   timer:
     0          0
     1          0
     2          0
   timers:
     0           0
     1           1  2
   triggertime:
     1513963800:
       localtime  1513963800
       hash:
     1514021400:
       localtime  1514021400
       hash:
Attributes:
Titel: Antw:Fehler in DOIF
Beitrag von: Damian am 22 Dezember 2017, 14:21:59
Der Fehler ist doch eindeutig:

error: Wrong timespec state 08:30:
Titel: Antw:Fehler in DOIF
Beitrag von: Ellert am 22 Dezember 2017, 14:23:02
Wollte ich auch gerade fragen?
Titel: Antw:Fehler in DOIF
Beitrag von: Eddy am 22 Dezember 2017, 16:29:52
Ja, die Fehlermeldung ist offensichtlich. Allerdings war es für mich nicht plausiebel, da ich ebenfalls dummys mit Zeit habe die korrekt funktionieren.

Also habe ich den dummy gelöscht und neu angelegt. Jetzt funktioniert es.

Vielen Dank!
Titel: Antw:Fehler in DOIF
Beitrag von: Per am 28 Dezember 2017, 13:35:39
Noch ein Tipp: statt des Perl-if-Konstruktes kannst du mit FILTER arbeiten. Macht das gleiche, ist aber besser lesbar und switcht nicht unnötig zwischen Perl und Fhem herum.