Hi Damian,
möchte mit dem DOIF Modul die Helligkeit meines Wandtablets steuern - über Twilight! Ich bekomme dabei jedoch einen perl error! Hast du eine Idee, was da faul sein könnte?
Hier ein list:
Internals:
DEF ([My_Twilight:light] >=5) (set androidTablet screenBrightness 200) DOELSEIF ([My_Twilight:light] =4) (set androidTablet screenBrightness 150) DOELSEIF ([My_Twilight:light] =3) (set androidTablet screenBrightness 100) DOELSEIF ([My_Twilight:light] <=2) (set androidTablet screenBrightness 50)
NAME Helligkeit_Display_Tablet
NR 915
NTFY_ORDER 50-Helligkeit_Display_Tablet
STATE cmd_1
TYPE DOIF
Readings:
2015-02-23 07:46:19 cmd_event My_Twilight
2015-02-23 07:46:19 cmd_nr 1
2015-02-23 18:38:00 e_My_Twilight_light 2
2015-02-23 18:38:00 error perl error in condition: ReadingValDoIf('My_Twilight','light','') =4: Can't modify non-lvalue subroutine call in scalar assignment at (eval 789096) line 2, at EOF
2015-02-23 07:46:19 state cmd_1
Condition:
0 ReadingValDoIf('My_Twilight','light','') >=5
1 ReadingValDoIf('My_Twilight','light','') =4
2 ReadingValDoIf('My_Twilight','light','') =3
3 ReadingValDoIf('My_Twilight','light','') <=2
Devices:
0 My_Twilight
1 My_Twilight
2 My_Twilight
3 My_Twilight
all My_Twilight
Do:
0 set androidTablet screenBrightness 200
1 set androidTablet screenBrightness 150
2 set androidTablet screenBrightness 100
3 set androidTablet screenBrightness 50
Helper:
last_timer 0
sleeptimer -1
Bm:
Doif_notify:
cnt 6872
dmx 0
max 132
tot 648
mAr:
HASH(0x662b298)
HASH(0x69529a0)
Internals:
Readings:
0 My_Twilight:light
1 My_Twilight:light
2 My_Twilight:light
3 My_Twilight:light
all My_Twilight:light
State:
Timerfunc:
Trigger:
Attributes:
room Flur
Besten Dank schon mal!!
sieht eigentlich gut aus?
Einzig die Leerzeichen vor dem =, aber ob es daran liegt, da hilft nur probieren.
Habe schon zig DOIF Anweisungen bei mir drin, keine macht Probleme! Verstehe ich auch nicht! Und warum gerade beim dem 2. DO(ELSE)IF?
Hast Du mal den Teil mit der 4 weg lassen und getestet?
Vielleicht mag DOIF keine 4 ;D
Hab es mal schnell nachgebaut
([Twilight:light] >=5) (set Nexus screenBrightness 200) DOELSEIF ([Twilight:light] =4) (set Nexus screenBrightness 150) DOELSEIF ([Twilight:light] =3) (set Nexus screenBrightness 100) DOELSEIF ([Twilight:light] <=2) (set Nexus screenBrightness 50)
und bekomme die gleiche Fehlermeldung
perl error in condition: ReadingValDoIf('Twilight','light','') =4: Can't modify non-lvalue subroutine call in scalar assignment at (eval 85397) line 1, at EOF
dann habe ich mal so geändert
([Twilight:light] >=5) (set Nexus screenBrightness 200) DOELSEIF ([Twilight:light] <=4) (set Nexus screenBrightness 150) DOELSEIF ([Twilight:light] =3) (set Nexus screenBrightness 100) DOELSEIF ([Twilight:light] <=2) (set Nexus screenBrightness 50)
und siehe da, es geht.
Allerdings habe ich mit light 5 und 8 getriggert und es wurde cmd_2 ausgeführt, also <=4, was ich nicht ganz verstehe??
Bei einem Vergleich auf "gleich" verwendet man normalerweise "==" oder "eq" für Strings.
Gruss
flurin
Oh mann, ich wußte doch es ist eine Kleinikeit :'(
Danke 8)
Vielen Dank! Habs jetzt auch geändert! Mal sehn ob es morgen funktioniert! Heute leider schon immer bei light=0!
Zitat von: Michi240281 am 23 Februar 2015, 20:32:03
Vielen Dank! Habs jetzt auch geändert! Mal sehn ob es morgen funktioniert! Heute leider schon immer bei light=0!
So kannst Du den Wert ändern:
setreading My_Twilight light 3
Zitat von: flurin am 23 Februar 2015, 20:46:02
So kannst Du den Wert ändern:
setreading My_Twilight light 3
Ahhh, seeeeeeehr cool! :)
Gleich getestet --> funktioniert!!