DOIF: mit Rollladen Readings und letzter Position anfahren und Licht einschalten

Begonnen von moonsorrox, 21 Februar 2016, 14:43:12

Vorheriges Thema - Nächstes Thema

moonsorrox

Ich habe meine Rollläden etwas modifiziert wie in diesem Thema beschrieben..!
Folgende Warnungen im Logfile habe ich aber:

2016.02.21 14:32:15 1: PERL WARNING: Argument "Runter" isn't numeric in numeric le (<=) at (eval 196330) line 1.
2016.02.21 14:32:11 1: PERL WARNING: Argument "Runter" isn't numeric in numeric le (<=) at (eval 196310) line 1.
2016.02.21 14:31:51 1: PERL WARNING: Argument "Runter" isn't numeric in numeric le (<=) at (eval 196063) line 1.
2016.02.21 14:31:51 1: PERL WARNING: Argument "Hoch" isn't numeric in numeric le (<=) at (eval 196062) line 1.
2016.02.21 14:30:55 1: PERL WARNING: Argument "Runter" isn't numeric in numeric le (<=) at (eval 195236) line 1.
2016.02.21 14:30:55 1: PERL WARNING: Argument "Runter" isn't numeric in numeric le (<=) at (eval 195233) line 1.
2016.02.21 14:30:54 1: PERL WARNING: Argument "Runter" isn't numeric in numeric le (<=) at (eval 195230) line 1.
2016.02.21 14:30:54 1: PERL WARNING: Argument "Runter" isn't numeric in numeric le (<=) at (eval 195227) line 1.
2016.02.21 14:30:54 1: PERL WARNING: Argument "Runter" isn't numeric in numeric le (<=) at (eval 195226) line 1.


dies ist sicher durch die Attribute welche ich für den Rollladen gesetzte habe..!
attr RollladenWZT eventMap on:Hoch 50:Schatten 70:Home off:Runter stop:Stop
attr RollladenWZT webCmd pct:Hoch:Runter:Home:Schatten:Stop

wie bekomme ich diese Warnungen weg, denn mit "off" oder einer numerischen Zahl z.B. "0" funktioniert es nicht.

List vom DOIF:
Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([?du_RolloWZmodus] eq "FHEM" and ([[du_RolloZeitWZ_hoch]|8] or [[du_RolloZeitWZ_hoch_WoE]|7])) (set RollladenWZT on)
DOELSEIF ([?du_RolloWZmodus] eq "FHEM" and [WZ_TK_Terrasse:state] eq "closed" and [{sunset("CIVIL",-100,"16:35","22:20")}|78]) (set RollladenWZT off)
DOELSEIF ([?du_RolloWZmodus] eq "FHEM" and [du_Tageslicht] eq "dunkel" and [RollladenWZT] eq "Runter" and [WZ_TK_Terrasse:state] eq "open") ## Wenn Rollladen unten und Terrassentür wird geöffnet
(setreading RollladenWZT last_state [RollladenWZT], set RollladenWZT on,set NI3_LichtTerrasse on) ## schreibe die Position des Rollladen in ein Reading und fahre den Rollladen hoch schalte das Licht Terrasse EIN
DOELSEIF ([?du_RolloWZmodus] eq "FHEM" and [RollladenWZT] <= 100 and [RollladenWZT] eq "open") ## Wenn Rollladen auf einer Position zwischen 0 - 100 und Terrassentür wird geöffnet
(setreading RollladenWZT last_state [RollladenWZT], set RollladenWZT on,set NI3_LichtTerrasse on) ## schreibe die Position des Rollladen in ein Reading und fahre den Rollladen hoch und schalte das Licht Terrasse EIN
DOELSEIF ([?du_RolloWZmodus] eq "FHEM" and [RollladenWZT:last_state] <= 99 and [WZ_TK_Terrasse:state] eq "closed") ## Wenn das gespeicherte Reading ein Wert von 0 - 99 hat und die Terrassentür wird geschlossen
(set NI3_LichtTerrasse off,set RollladenWZT [RollladenWZT:last_state]) ## nutze das Reading und fahre den Rollladen in die entsprechende Position zurück und schalte das Licht Terrasse AUS
   NAME       di_RollladenWZT
   NR         463
   NTFY_ORDER 50-di_RollladenWZT
   STATE      initialized
   TYPE       DOIF
   Readings:
     2016-02-21 15:20:24   state           initialized
     2016-02-21 15:20:24   timer_1_c1      22.02.2016 08:00:00|8
     2016-02-21 15:20:24   timer_2_c1      22.02.2016 08:15:00|7
     2016-02-21 15:20:24   timer_3_c2      21.02.2016 18:18:37|78
   Condition:
     0          InternalDoIf('du_RolloWZmodus','STATE','',AttrVal($hash->{NAME},'notexist',undef)) eq "FHEM" and (DOIF_time_once($hash,$hash->{timer}{0},$wday,"8") or DOIF_time_once($hash,$hash->{timer}{1},$wday,"7"))
     1          InternalDoIf('du_RolloWZmodus','STATE','',AttrVal($hash->{NAME},'notexist',undef)) eq "FHEM" and ReadingValDoIf('WZ_TK_Terrasse','state','',AttrVal($hash->{NAME},'notexist',undef)) eq "closed" and DOIF_time_once($hash,$hash->{timer}{2},$wday,"78")
     2          InternalDoIf('du_RolloWZmodus','STATE','',AttrVal($hash->{NAME},'notexist',undef)) eq "FHEM" and InternalDoIf('du_Tageslicht','STATE','',AttrVal($hash->{NAME},'notexist',undef)) eq "dunkel" and InternalDoIf('RollladenWZT','STATE','',AttrVal($hash->{NAME},'notexist',undef)) eq "Runter" and ReadingValDoIf('WZ_TK_Terrasse','state','',AttrVal($hash->{NAME},'notexist',undef)) eq "open"
     3          InternalDoIf('du_RolloWZmodus','STATE','',AttrVal($hash->{NAME},'notexist',undef)) eq "FHEM" and InternalDoIf('RollladenWZT','STATE','',AttrVal($hash->{NAME},'notexist',undef)) <= 100 and InternalDoIf('RollladenWZT','STATE','',AttrVal($hash->{NAME},'notexist',undef)) eq "open"
     4          InternalDoIf('du_RolloWZmodus','STATE','',AttrVal($hash->{NAME},'notexist',undef)) eq "FHEM" and ReadingValDoIf('RollladenWZT','last_state','',AttrVal($hash->{NAME},'notexist',undef)) <= 99 and ReadingValDoIf('WZ_TK_Terrasse','state','',AttrVal($hash->{NAME},'notexist',undef)) eq "closed"
   Days:
     0          8
     1          7
     2          78
   Devices:
     1           WZ_TK_Terrasse
     2           du_Tageslicht RollladenWZT WZ_TK_Terrasse
     3           RollladenWZT
     4           RollladenWZT WZ_TK_Terrasse
     all         WZ_TK_Terrasse du_Tageslicht RollladenWZT
   Do:
     0:
       0          set RollladenWZT on
     1:
       0          set RollladenWZT off
     2:
       0          setreading RollladenWZT last_state [RollladenWZT], set RollladenWZT on,set NI3_LichtTerrasse on
     3:
       0          setreading RollladenWZT last_state [RollladenWZT], set RollladenWZT on,set NI3_LichtTerrasse on
     4:
       0          set NI3_LichtTerrasse off,set RollladenWZT [RollladenWZT:last_state]
   Helper:
     globalinit 1
     last_timer 3
     sleeptimer -1
   Internals:
     0           du_RolloWZmodus:STATE
     1           du_RolloWZmodus:STATE
     2           du_RolloWZmodus:STATE du_Tageslicht:STATE RollladenWZT:STATE
     3           du_RolloWZmodus:STATE RollladenWZT:STATE
     4           du_RolloWZmodus:STATE
     all         du_RolloWZmodus:STATE du_Tageslicht:STATE RollladenWZT:STATE
   Itimer:
     all         du_RolloZeitWZ_hoch du_RolloZeitWZ_hoch_WoE
   Localtime:
     0          1456124400
     1          1456125300
     2          1456075117
   Readings:
     1           WZ_TK_Terrasse:state
     2           WZ_TK_Terrasse:state
     4           RollladenWZT:last_state WZ_TK_Terrasse:state
     all         WZ_TK_Terrasse:state RollladenWZT:last_state
   Realtime:
     0          08:00:00
     1          08:15:00
     2          18:18:37
   Regexp:
     All:
   State:
   Time:
     0          [du_RolloZeitWZ_hoch]
     1          [du_RolloZeitWZ_hoch_WoE]
     2          {sunset("CIVIL",-100,"16:35","22:20")}
   Timecond:
     0          0
     1          0
     2          1
   Timer:
     0          0
     1          0
     2          0
   Timers:
     0           0  1
     1           2
   Triggertime:
     1456075117:
       localtime  1456075117
       Hash:
     1456124400:
       localtime  1456124400
       Hash:
     1456125300:
       localtime  1456125300
       Hash:
Attributes: 
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

moonsorrox

muss ich mal schauen..! Wäre ne gute Idee

EDITH:// ich weiß aber grad nicht so recht wie ich das einbauen soll..?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

nach meiner Änderung also heute morgen nun folgendes, der Rollladen Wohnzimmer Terrasse (Rollladen_WZT) ist hoch gefahren und auch gleich wieder runter. Der Aktor hat als last_state "off" im Reading

logfile
2016.02.22 08:27:22 1: PERL WARNING: Argument "off" isn't numeric in numeric le (<=) at (eval 283624) line 1.
2016.02.22 08:00:09 1: PERL WARNING: Argument "off" isn't numeric in numeric le (<=) at (eval 283262) line 1.
2016.02.22 08:00:09 1: PERL WARNING: Argument "Runter" isn't numeric in numeric le (<=) at (eval 283261) line 1.
2016.02.22 08:00:00 1: PERL WARNING: Argument "off" isn't numeric in numeric le (<=) at (eval 283256) line 1.
2016.02.22 08:00:00 3: CUL_HM set RollladenWZT off
2016.02.22 08:00:00 1: PERL WARNING: Argument "off" isn't numeric in numeric le (<=) at (eval 283248) line 1.
2016.02.22 08:00:00 1: PERL WARNING: Argument "Runter" isn't numeric in numeric le (<=) at (eval 283247) line 1.
2016.02.22 08:00:00 3: CUL_HM set RollladenWZT on
2016.02.22 08:00:00 3: CUL_HM set RollladenWZ on


warum ist er runter gefahren..? ich vermute mal das der "last_state" als letztes den Stand "Runter" oder eben "off" drin hatte, weil er ja gestern Abend runter gefahren ist.

Weiß jemand ob das nun wirklich der Fehler für das runter fahren war und wie ich das nun unterbinden kann..? Ich habe da grad gar keinen Einfall..!

List vom DOIF:
Internals:
   CFGFN      ./FHEM/Wohnzimmer.cfg
   DEF        ([?du_RolloWZmodus] eq "FHEM" and ([[du_RolloZeitWZ_hoch]|8] or [[du_RolloZeitWZ_hoch_WoE]|7])) (set RollladenWZT on)
DOELSEIF ([?du_RolloWZmodus] eq "FHEM" and [WZ_TK_Terrasse:state] eq "closed" and [{sunset("CIVIL",-100,"16:35","22:20")}|78]) (set RollladenWZT off)
DOELSEIF ([?du_RolloWZmodus] eq "FHEM" and [du_Tageslicht] eq "dunkel" and [RollladenWZT] eq "Runter" and [WZ_TK_Terrasse:state] eq "open") ## Wenn Rollladen unten und Terrassentür wird geöffnet
(setreading RollladenWZT last_state [RollladenWZT], set RollladenWZT on,set NI3_LichtTerrasse on) ## schreibe die Position des Rollladen in ein Reading und fahre den Rollladen hoch schalte das Licht Terrasse EIN
DOELSEIF ([?du_RolloWZmodus] eq "FHEM" and [RollladenWZT] <= 100 and [RollladenWZT] eq "open") ## Wenn Rollladen auf einer Position zwischen 0 - 100 und Terrassentür wird geöffnet
(setreading RollladenWZT last_state [RollladenWZT], set RollladenWZT on,set NI3_LichtTerrasse on) ## schreibe die Position des Rollladen in ein Reading und fahre den Rollladen hoch und schalte das Licht Terrasse EIN
DOELSEIF ([?du_RolloWZmodus] eq "FHEM" and [RollladenWZT:last_state] <= 99 and [WZ_TK_Terrasse:state] eq "closed") ## Wenn das gespeicherte Reading ein Wert von 0 - 99 hat und die Terrassentür wird geschlossen
(set NI3_LichtTerrasse off,set RollladenWZT [RollladenWZT:last_state]) ## nutze das Reading und fahre den Rollladen in die entsprechende Position zurück und schalte das Licht Terrasse AUS
   NAME       di_RollladenWZT
   NR         471
   NTFY_ORDER 50-di_RollladenWZT
   STATE      cmd_5
   TYPE       DOIF
   Readings:
     2016-02-22 11:11:50   Device          WZ_TK_Terrasse
     2016-02-22 08:00:00   cmd_event       RollladenWZT
     2016-02-22 08:00:00   cmd_nr          5
     2016-02-22 08:57:59   e_RollladenWZT_STATE Hoch
     2016-02-22 08:57:59   e_RollladenWZT_last_state off
     2016-02-22 11:11:50   e_WZ_TK_Terrasse_state closed
     2016-02-22 07:02:16   e_du_Tageslicht_STATE hell
     2016-02-22 08:00:00   state           cmd_5
     2016-02-22 08:00:00   timer_1_c1      23.02.2016 08:00:00|8
     2016-02-22 08:15:00   timer_2_c1      23.02.2016 08:15:00|7
     2016-02-22 00:38:13   timer_3_c2      22.02.2016 18:20:25|78
   Condition:
     0          InternalDoIf($hash,'du_RolloWZmodus','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "FHEM" and (DOIF_time_once($hash,$hash->{timer}{0},$wday,"8") or DOIF_time_once($hash,$hash->{timer}{1},$wday,"7"))
     1          InternalDoIf($hash,'du_RolloWZmodus','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "FHEM" and ReadingValDoIf($hash,'WZ_TK_Terrasse','state','','',AttrVal($hash->{NAME},'notexist',undef)) eq "closed" and DOIF_time_once($hash,$hash->{timer}{2},$wday,"78")
     2          InternalDoIf($hash,'du_RolloWZmodus','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "FHEM" and InternalDoIf($hash,'du_Tageslicht','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "dunkel" and InternalDoIf($hash,'RollladenWZT','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "Runter" and ReadingValDoIf($hash,'WZ_TK_Terrasse','state','','',AttrVal($hash->{NAME},'notexist',undef)) eq "open"
     3          InternalDoIf($hash,'du_RolloWZmodus','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "FHEM" and InternalDoIf($hash,'RollladenWZT','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) <= 100 and InternalDoIf($hash,'RollladenWZT','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "open"
     4          InternalDoIf($hash,'du_RolloWZmodus','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "FHEM" and ReadingValDoIf($hash,'RollladenWZT','last_state','','',AttrVal($hash->{NAME},'notexist',undef)) <= 99 and ReadingValDoIf($hash,'WZ_TK_Terrasse','state','','',AttrVal($hash->{NAME},'notexist',undef)) eq "closed"
   Days:
     0          8
     1          7
     2          78
   Devices:
     1           WZ_TK_Terrasse
     2           du_Tageslicht RollladenWZT WZ_TK_Terrasse
     3           RollladenWZT
     4           RollladenWZT WZ_TK_Terrasse
     all         WZ_TK_Terrasse du_Tageslicht RollladenWZT
   Do:
     0:
       0          set RollladenWZT on
     1:
       0          set RollladenWZT off
     2:
       0          setreading RollladenWZT last_state [RollladenWZT], set RollladenWZT on,set NI3_LichtTerrasse on
     3:
       0          setreading RollladenWZT last_state [RollladenWZT], set RollladenWZT on,set NI3_LichtTerrasse on
     4:
       0          set NI3_LichtTerrasse off,set RollladenWZT [RollladenWZT:last_state]
     5:
   Helper:
     event      alive: yes,battery: ok,contact: Zu (to HMUSB),sabotageError: off,Zu
     globalinit 1
     last_timer 3
     sleeptimer -1
     timerdev   WZ_TK_Terrasse
     timerevent alive: yes,battery: ok,contact: Zu (to HMUSB),sabotageError: off,Zu
     triggerDev WZ_TK_Terrasse
     timerevents:
       alive: yes
       battery: ok
       contact: Zu (to HMUSB)
       sabotageError: off
       Zu
     triggerEvents:
       alive: yes
       battery: ok
       contact: Zu (to HMUSB)
       sabotageError: off
       Zu
   Internals:
     0           du_RolloWZmodus:STATE
     1           du_RolloWZmodus:STATE
     2           du_RolloWZmodus:STATE du_Tageslicht:STATE RollladenWZT:STATE
     3           du_RolloWZmodus:STATE RollladenWZT:STATE
     4           du_RolloWZmodus:STATE
     all         du_RolloWZmodus:STATE du_Tageslicht:STATE RollladenWZT:STATE
   Interval:
   Itimer:
     all         du_RolloZeitWZ_hoch du_RolloZeitWZ_hoch_WoE
   Localtime:
     0          1456210800
     1          1456211700
     2          1456161625
   Readings:
     1           WZ_TK_Terrasse:state
     2           WZ_TK_Terrasse:state
     4           RollladenWZT:last_state WZ_TK_Terrasse:state
     all         WZ_TK_Terrasse:state RollladenWZT:last_state
   Realtime:
     0          08:00:00
     1          08:15:00
     2          18:20:25
   Regexp:
     0:
     1:
     2:
     3:
     4:
     All:
   State:
   Time:
     0          [du_RolloZeitWZ_hoch]
     1          [du_RolloZeitWZ_hoch_WoE]
     2          {sunset("CIVIL",-100,"16:35","22:20")}
   Timecond:
     0          0
     1          0
     2          1
   Timer:
     0          0
     1          0
     2          0
   Timers:
     0           0  1
     1           2
   Trigger:
   Triggertime:
     1456161625:
       localtime  1456161625
       Hash:
     1456210800:
       localtime  1456210800
       Hash:
     1456211700:
       localtime  1456211700
       Hash:
Attributes:


tja und die Fehler betreffend "off" und "Runter" da habe ich bisher keinen Einfall. Hat das niemand in seinem Log, im anderen Thread werden diese Variablen "off" wohl auch verwendet.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Ellert

Du kannst dem unerwünschten Verhalten selbst auf die Spur kommen.

Reduziere das DOIF solange bis es wie gewünscht funktioniert. Dann erweitere es Stück für Stück bis das unerwünschte Verhalten auftritt. Der Fehler steckt dann in der letzten Erweiterung im Zusammenspiel mit dem Vorhandenen.

Ab hier ist es dann sinnvoll die Events der beteiligten Geräte, einschliesslich DOIF mitzuloggen.

Daraus sollten sich dann Rückschlüsse auf die Ursache des unerwünschten Verhaltens ziehen lassen.