Hauptmenü

Lichtsteuerung

Begonnen von rih, 22 Juli 2017, 10:34:43

Vorheriges Thema - Nächstes Thema

rih

Hallo,
ich versuche bisher erfolglos mittels DOIF ein HUEDevice zu steuern. Ziel: wenn ich einen der Rolladentaster für runter drücke, dann soll bei einer Außenhelligkeit <5 die Lava_Lampe hochdimmen. Das Problem ist, dass die Bedingung [Lichtsensor:brightnes] im DOIF nicht wirkt. Die Lampe geht auch bei einer Helligkeit >5 an. Mein DOIF:

(([Taster_EZ:buttons] eq "pressed" and [Taster_EZ:state] eq "B0") or ([Taster8_EZ_L:buttons] eq "pressed" and [Taster8_EZ_L:state] eq "B0") and [Lichtsensor:brightness]<5) (set Lava_Lampe pct 100 : ct 380 : transitiontime 200) DOELSEIF (([Taster_EZ:buttons] eq "pressed" and [Taster_EZ:state] eq "A0") or ([Taster8_EZ_R:buttons] eq "pressed" and [Taster8_EZ_R:state] eq "A0") and [Lichtsensor:brightness]<5) (set Lava_Lampe pct 100 : ct 380 : transitiontime 200) DOELSE

Was mache ich falsch?

Per

Zitat von: rih am 22 Juli 2017, 10:34:43Was mache ich falsch?
Verschiedenes. Code nicht in Code-Tags, kein List angefügt, keine Leerzeichen um die ">"...

rih

Hallo,

Leerzeichen um die die < brachten keinen Erfolg. Was ist mit den Codetags gemeint? List gibt aus:

Internals:
   CFGFN
   DEF        (([Taster_EZ:buttons] eq "pressed" and [Taster_EZ:state] eq "B0") or ([Taster8_EZ_L:buttons] eq "pressed" and [Taster8_EZ_L:state] eq "B0") and [Lichtsensor:brightness] < 5) (set Lava_Lampe pct 100 : ct 380 : transitiontime 200) DOELSEIF (([Taster_EZ:buttons] eq "pressed" and [Taster_EZ:state] eq "A0") or ([Taster8_EZ_R:buttons] eq "pressed" and [Taster8_EZ_R:state] eq "A0") and [Lichtsensor:brightness] < 5) (set Lava_Lampe pct 100 : ct 380 : transitiontime 200) DOELSE
   NAME       Lava_Lampe_Auto
   NR         2137
   NTFY_ORDER 50-Lava_Lampe_Auto
   STATE      cmd_3
   TYPE       DOIF
   Readings:
     2017-07-22 10:48:18   Device          Lichtsensor
     2017-07-22 10:46:50   cmd             3
     2017-07-22 10:46:50   cmd_event       Taster_EZ
     2017-07-22 10:46:50   cmd_nr          3
     2017-07-22 10:48:18   e_Lichtsensor_brightness 2163
     2017-07-22 10:46:50   e_Taster_EZ_buttons released
     2017-07-22 10:46:50   e_Taster_EZ_state A0
     2017-07-22 10:46:50   state           cmd_3
   Condition:
     0          (ReadingValDoIf($hash,'Taster_EZ','buttons') eq "pressed" and ReadingValDoIf($hash,'Taster_EZ','state') eq "B0") or (ReadingValDoIf($hash,'Taster8_EZ_L','buttons') eq "pressed" and ReadingValDoIf($hash,'Taster8_EZ_L','state') eq "B0") and ReadingValDoIf($hash,'Lichtsensor','brightness') < 5
     1          (ReadingValDoIf($hash,'Taster_EZ','buttons') eq "pressed" and ReadingValDoIf($hash,'Taster_EZ','state') eq "A0") or (ReadingValDoIf($hash,'Taster8_EZ_R','buttons') eq "pressed" and ReadingValDoIf($hash,'Taster8_EZ_R','state') eq "A0") and ReadingValDoIf($hash,'Lichtsensor','brightness') < 5
   Devices:
     0           Taster_EZ Taster8_EZ_L Lichtsensor
     1           Taster_EZ Taster8_EZ_R Lichtsensor
     all         Taster_EZ Taster8_EZ_L Lichtsensor Taster8_EZ_R
   Do:
     0:
       0          set Lava_Lampe pct 100 : ct 380 : transitiontime 200
     1:
       0          set Lava_Lampe pct 100 : ct 380 : transitiontime 200
     2:
       0
   Helper:
     event      brightness: 2163,2163
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   Lichtsensor
     timerevent brightness: 2163,2163
     triggerDev Lichtsensor
     timerevents:
       brightness: 2163
       2163
     timereventsState:
       brightness: 2163
       state: 2163
     triggerEvents:
       brightness: 2163
       2163
     triggerEventsState:
       brightness: 2163
       state: 2163
   Internals:
   Itimer:
   Readings:
     0           Taster_EZ:buttons Taster_EZ:state Taster8_EZ_L:buttons Taster8_EZ_L:state Lichtsensor:brightness
     1           Taster_EZ:buttons Taster_EZ:state Taster8_EZ_R:buttons Taster8_EZ_R:state Lichtsensor:brightness
     all         Taster_EZ:buttons Taster_EZ:state Taster8_EZ_L:buttons Taster8_EZ_L:state Lichtsensor:brightness Taster8_EZ_R:buttons Taster8_EZ_R:state
   Regexp:
     0:
     1:
     All:
   State:
   Trigger:
Attributes:


Per

Lass DOELSE weg. Erklärung gibt es, wenn mein PC wieder läuft.

rih

Hallo Per,

DOELSE weglassen verändert leider nichts. Ein Attr. do allways bewirkt ebenfalls nichts.
Ich habe den Einsteigerleitfaden zum DOIF gelesen und glaube zu verstehen, warum ich das DOELSE weglassen soll, aber wie gesagt ändert das Weglassen am Verhalten nichts. Oder braucht es da noch eine besondere Aktion wie das DOIF neu anlegen etc.?

rih

Hier nochmal der aktuelle Definitionsteil in Code Tags:

(([Taster_EZ:buttons] eq "pressed" and [Taster_EZ:state] eq "B0") or ([Taster8_EZ_L:buttons] eq "pressed" and [Taster8_EZ_L:state] eq "B0") and [Lichtsensor:brightness] < 5) (set Lava_Lampe pct 100 : ct 380 : transitiontime 200) DOELSEIF (([Taster_EZ:buttons] eq "pressed" and [Taster_EZ:state] eq "A0") or ([Taster8_EZ_R:buttons] eq "pressed" and [Taster8_EZ_R:state] eq "A0") and [Lichtsensor:brightness] < 5) (set Lava_Lampe pct 100 : ct 380 : transitiontime 200)

Per

Mach mal ein Test-DOIF, welches nur verschiedene brightness-Werte abfragt.
Oder versuch mal:
[Lichtsensor:brightness:d] < 5

Erklärung

rih

Trotz Forum lesen und rumprobieren bin ich noch nicht weiter gekommen. :(
Der Lichtsensor an sich funktioniert. Die Brightness-Werteabfrage verwende ich auch in anderen DOIF's und Notify's. Das mit dem d wie dezimal habe ich versucht, keine Änderung.
Was mich wundert, warum steht im obigen List unter Helper "timerdev Lichtsensor" und "timerevent brightness"?

Ellert

ZitatDie Lampe geht auch bei einer Helligkeit >5 an
Du hast folgende Bedingung

A or B and C > 5

A lässt die Bedingung  unabhängig von C > 5 wahr werden. Da "and" höherrangig ist als "or". siehe http://www.schmidma.de/selfhtml/perl/sprache/operatoren.htm#rangfolge

rih

Ich habe doch aber entsprechend Klammern gesetzt.  Und warum lässt A die Bedingung wahr werden, wenn doch das "and" höherwertiger als "or" ist? Verstehe ich immer noch nicht.
Egal, habe das DOIF jetzt umgebaut (ohne DOELSEIF). So funktioniert es. Allerdings geht das Hochdimmen nicht, aber das ist eine andere Baustelle ...

((([Taster_EZ:buttons] eq "pressed" and [Taster_EZ:state] eq "B0") or ([Taster8_EZ_L:buttons] eq "pressed" and [Taster8_EZ_L:state] eq "B0") or ([Taster_EZ:buttons] eq "pressed" and [Taster_EZ:state] eq "A0") or ([Taster8_EZ_R:buttons] eq "pressed" and [Taster8_EZ_R:state] eq "A0")) and [Lichtsensor:brightness] < 5) (set Lava_Lampe pct 100 : ct 380 : transitiontime 200)

Ellert

ZitatIch habe doch aber entsprechend Klammern gesetzt.
aber an der falschen Stelle, die roten Klammern sind nutzlos.
Zitatwenn doch das "and" höherwertiger als "or" ist
eben drum, die höherwertige Verknüpfung erfolgt zuerst.

A or B and C<5 ist eben nicht (A or B) and C<5

Zitat(([Taster_EZ:buttons] eq "pressed" and [Taster_EZ:state] eq "B0") or ([Taster8_EZ_L:buttons] eq "pressed" and [Taster8_EZ_L:state] eq "B0") and [Lichtsensor:brightness] < 5)