Hauptmenü

DOIF: Perl error

Begonnen von Michi240281, 23 Februar 2015, 19:18:17

Vorheriges Thema - Nächstes Thema

Michi240281

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!!
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Mitch

sieht eigentlich gut aus?

Einzig die Leerzeichen vor dem =, aber ob es daran liegt, da hilft nur probieren.
FHEM im Proxmox Container

Michi240281

Habe schon zig DOIF Anweisungen bei mir drin, keine macht Probleme! Verstehe ich auch nicht! Und warum gerade beim dem 2. DO(ELSE)IF?
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Mitch

Hast Du mal den Teil mit der 4 weg lassen und getestet?
Vielleicht mag DOIF keine 4  ;D
FHEM im Proxmox Container

Mitch

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??
FHEM im Proxmox Container

flurin

Bei einem Vergleich auf "gleich" verwendet man normalerweise "==" oder "eq" für Strings.

Gruss
flurin

Mitch

Oh mann, ich wußte doch es ist eine Kleinikeit   :'(

Danke  8)
FHEM im Proxmox Container

Michi240281

Vielen Dank! Habs jetzt auch geändert! Mal sehn ob es morgen funktioniert! Heute leider schon immer bei light=0!
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

flurin

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

Michi240281

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!!
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9