Hauptmenü

Fehler in DOIF

Begonnen von Eddy, 22 Dezember 2017, 11:29:29

Vorheriges Thema - Nächstes Thema

Eddy

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)

Fixel2012

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.
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

Eddy

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!

Fixel2012

Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

Ellert

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

Eddy

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)

Eddy


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

Ellert

#7
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"?

Eddy

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:

Damian

Der Fehler ist doch eindeutig:

error: Wrong timespec state 08:30:
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Wollte ich auch gerade fragen?

Eddy

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!

Per

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.