FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: achim60 am 26 Oktober 2017, 13:23:18

Titel: nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: achim60 am 26 Oktober 2017, 13:23:18
Hallo zusammen,
ich habe ein Problem das (set HM_4140E2_Dim off) nicht geschaltet wird und finde den Fehler nicht  ???

Die Anweisung nach DOELSE wird nur bis zu (set Schalter_Funksteckdose_A off) ausgeführt, obwohl der dimmer_wohnzimmer auf off steht.

Schöne Grüße






Internals:
   DEF        ([alarm_scharf] eq "on" and [pflanze1:lux] < 300 ) (set Schalter_Funksteckdose_A on) (set HM_4140E2_Dim pct 30) DOELSE (set Schalter_Funksteckdose_A off) ([dimmer_wohnzimmer:"off"]) (set HM_4140E2_Dim off)



   NAME       TV_simulation
   NR         237
   NTFY_ORDER 50-TV_simulation
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2017-10-26 13:10:45   cmd             0
     2017-10-26 13:10:45   state           initialized
   condition:
     0          InternalDoIf($hash,'alarm_scharf','STATE') eq "on" and ReadingValDoIf($hash,'pflanze1','lux') < 300
   devices:
     0           alarm_scharf pflanze1
     all         alarm_scharf pflanze1
   do:
     0:
       0          set Schalter_Funksteckdose_A on
       1          set HM_4140E2_Dim pct 30
     1:
       0          set Schalter_Funksteckdose_A off
       1          [dimmer_wohnzimmer:"off"]
       2          set HM_4140E2_Dim off
   helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   internals:
     0           alarm_scharf:STATE
     all         alarm_scharf:STATE
   itimer:
   readings:
     0           pflanze1:lux
     all         pflanze1:lux
   regexp:
     all:
   state:
     STATE:
Attributes:
   do         always
   room       Alarmanlage
   webCmd     on:off


Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: CoolTux am 26 Oktober 2017, 13:26:11
(set Schalter_Funksteckdose_A off) ([dimmer_wohnzimmer:"off"]) (set HM_4140E2_Dim off)

Das ist j aauch Unfug. Was genau soll das sein? Nach einem DOELSE kommt keine Bedingungsabfrage mehr. Wenn dann DOELSEIF
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: achim60 am 26 Oktober 2017, 13:34:49
Hi,
wahrscheinlich habe ich da einen Gedankenfehler  ;)

Ich dimme Glühbirnen mit dem Dimmer -HM_4140E2_Dim- wenn ich zu Hause bin, das klappt auch super.

Jetzt soll, wenn die Alarmanlage an ist, auch der Dimmer angehen wenn das Licht unter 300 Lux ist um eine Anwesenheit zu simulieren. Klappt auch  :D
Nur geht der Dimmer nicht mehr aus, wenn Lux über 300 ist bzw. die Alarmanlage aus. :(

Klappt auch mit DOELSEIF nicht ::)


([alarm_scharf] eq "on" and [pflanze1:lux] < 300 ) (set Schalter_Funksteckdose_A on) (set HM_4140E2_Dim pct 30) DOELSEIF (set Schalter_Funksteckdose_A off) ([dimmer_wohnzimmer:"off"]) (set HM_4140E2_Dim off)


Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: CoolTux am 26 Oktober 2017, 13:43:04
([dimmer_wohnzimmer:"off"])

Was genau soll das machen in Verbindung mit Deinen set Befehlen nach dem DOELSE / DOELSEIF ???
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: CoolTux am 26 Oktober 2017, 13:47:32

(["^pflanze1$:^lux:",0] < 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A on) DOELSEIF ["^pflanze1$:^lux:",0] > 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A off)


So schaltet Deine Lampe bei kleiner 300 an und bei größer 300 aus aber nur wenn alarm on ist
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: achim60 am 26 Oktober 2017, 13:53:43
ich hatte es vorher so ..... DOELSEIF (set Schalter_Funksteckdose_A off) (set HM_4140E2_Dim off).....

Das Problem ist das das Licht dann auch ausgeht wenn ich zu hause bin und es manuell eingeschaltet habe.

Dann kam ich auf die Idee ein Dummy anzulegen.
Schalte ich das Licht manuell ein geht der Staus von dem Dummy (dimmer_wohnzimmer ) von  off auf on.


Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: achim60 am 26 Oktober 2017, 13:55:12
Zitat von: CoolTux am 26 Oktober 2017, 13:47:32

(["^pflanze1$:^lux:",0] < 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A on) DOELSEIF ["^pflanze1$:^lux:",0] > 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A off)


So schaltet Deine Lampe bei kleiner 300 an und bei größer 300 aus aber nur wenn alarm on ist

Das schalten funktioniert ohne Probleme, nur geht der Dimmer nicht aus.
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: CoolTux am 26 Oktober 2017, 13:57:12
Wir schalten gar kein Dimmer an? Ist der generell bei Dir an?
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: Damian am 26 Oktober 2017, 14:00:19
Zitat von: CoolTux am 26 Oktober 2017, 13:47:32

(["^pflanze1$:^lux:",0] < 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A on) DOELSEIF ["^pflanze1$:^lux:",0] > 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A off)


So schaltet Deine Lampe bei kleiner 300 an und bei größer 300 aus aber nur wenn alarm on ist
Wobei konkrete Devices besser direkt mit [<Device>:<reading>], hier also mit  [pflanze1:lux ], abgefragt werden sollten, weil es performanter ist.
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: achim60 am 26 Oktober 2017, 14:01:04
Zitat von: CoolTux am 26 Oktober 2017, 13:57:12
Wir schalten gar kein Dimmer an? Ist der generell bei Dir an?

Doch der wird angeschaltet vor dem DOELSE mit dem set HM_4140E2_Dim pct 30 ( das Licht wird mit 30 % angestellt ) was auch super klappt.

Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: CoolTux am 26 Oktober 2017, 14:01:35

(["^pflanze1$:^lux:",0] < 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A on,set HM_4140E2_Dim pct 30) DOELSEIF ["^pflanze1$:^lux:",0] > 300 and [?alarm_scharf] eq "on") ((set Schalter_Funksteckdose_A,HM_4140E2_Dim off))


Und so
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: CoolTux am 26 Oktober 2017, 14:03:33

([pflanze1:lux] < 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A on,set HM_4140E2_Dim pct 30) DOELSEIF [pflanze1:lux] > 300 and [?alarm_scharf] eq "on") ((set Schalter_Funksteckdose_A,HM_4140E2_Dim off))


Und nun noch der Tip von Damian
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: achim60 am 26 Oktober 2017, 14:15:59
Zitat von: CoolTux am 26 Oktober 2017, 14:03:33

([pflanze1:lux] < 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A on,set HM_4140E2_Dim pct 30) DOELSEIF [pflanze1:lux] > 300 and [?alarm_scharf] eq "on") ((set Schalter_Funksteckdose_A,HM_4140E2_Dim off))


Und nun noch der Tip von Damian

jetzt geht der Dimmer erst gar nicht mehr an. :(

(["^pflanze1$:^lux:",0] < 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A on,set HM_4140E2_Dim pct 30) DOELSEIF ["^pflanze1$:^lux:",0] > 300 and [?alarm_scharf] eq "on") ((set Schalter_Funksteckdose_A,HM_4140E2_Dim off))

auch nicht so ???
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: achim60 am 26 Oktober 2017, 14:21:11
ich könnte mir eine zusätzliche Abfrage bauen die unabhängig schalten würde. Aber das wäre doppelt gemoppelt, oder ?

([alarm_scharf] eq "off" and ([dimmer_wohnzimmer:"off"]) (set HM_4140E2_Dim off)

Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: CoolTux am 26 Oktober 2017, 14:27:02

([pflanze1:lux] < 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A on,set HM_4140E2_Dim pct 30) DOELSEIF ([pflanze1:lux] > 300 and [?alarm_scharf] eq "on") ((set Schalter_Funksteckdose_A,HM_4140E2_Dim off))


Es fehlte doch nur ein ( bei der Zweiten Condition. So sollte es jetzt gehen, zu mindest bei mir tut es das.
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: achim60 am 26 Oktober 2017, 15:16:45
Zitat von: CoolTux am 26 Oktober 2017, 14:27:02

([pflanze1:lux] < 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A on,set HM_4140E2_Dim pct 30) DOELSEIF ([pflanze1:lux] > 300 and [?alarm_scharf] eq "on") ((set Schalter_Funksteckdose_A,HM_4140E2_Dim off))


Es fehlte doch nur ein ( bei der Zweiten Condition. So sollte es jetzt gehen, zu mindest bei mir tut es das.

mhhhh  das verstehe ich jetzt nicht. Wenn ich im Dunkeln nach hause komme liegt die Luxzahl unter 300 und ich schalte dann ja die Alarmanlage aus.

Somit geht der Staus von alarm_scharf auf off und pflanze1lux ist unter 300. Dann wird doch alles nach DOELSEIF erst gar nicht abgearbeitet und die Funsteckdose bzw. der Dimmer geht nicht aus.
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: CoolTux am 26 Oktober 2017, 15:21:57
richtig. Warum sollte auch das Licht ausgehen wenn Du im dunkeln zu hause bist. Licht im dunkeln ist ja gut.
Wenn Du willst das das Licht im Dunkeln aus geht wenn Du nach hause kommst dann mach noch ein or dazu


([pflanze1:lux] < 300 and [?alarm_scharf] eq "on") (set Schalter_Funksteckdose_A on,set HM_4140E2_Dim pct 30) DOELSEIF ([pflanze1:lux] > 300 and [?alarm_scharf] eq "on") or ([alarm_scharf] eq "off")) ((set Schalter_Funksteckdose_A,HM_4140E2_Dim off))
Titel: Antw:nach DOELSE werden nicht alle Befehle erledigt
Beitrag von: achim60 am 26 Oktober 2017, 20:00:05
Zitat von: CoolTux am 26 Oktober 2017, 15:21:57
richtig. Warum sollte auch das Licht ausgehen wenn Du im dunkeln zu hause bist. Licht im dunkeln ist ja gut.
Wenn Du willst das das Licht im Dunkeln aus geht wenn Du nach hause kommst dann mach noch ein or dazu



Stimmt, darüber habe ich gar nicht nachgedacht. Das Licht kann ja an bleiben  ;)
Besten Dank für die Hile!