Ich habe meine Rollläden etwas modifiziert wie in diesem Thema (http://forum.fhem.de/index.php?topic=42619.msg412885#msg412885) 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:
Kannst du nicht auf das pct Register triggern?
muss ich mal schauen..! Wäre ne gute Idee
EDITH:// ich weiß aber grad nicht so recht wie ich das einbauen soll..?
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.
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.