Lichtsteuerung mit DOIF.... ist eventuell besser möglich?

Begonnen von hene42, 16 August 2019, 13:14:55

Vorheriges Thema - Nächstes Thema

hene42

Hallo,

ich habe mir folgendes DOIF zusammen gestellt...

Zitat
([HM_A5A502:digitalInput] eq "1"
   and [KLV_Lichtautomatik_Speicher:state] eq "off"
   and [HUEDevice16:state] eq "off")
      (set HUEDevice16 ct 366 : bri 254)
      (set KLV_Lichtautomatik_Speicher on)
      
DOELSEIF ([HM_A5A502:digitalInput] eq "1"
         and [KLV_Lichtautomatik_Speicher:state] eq "on")
            (delete at_KLV_Licht_aus)
            (delete at_KLV_Lichtautomatik_Speicher)
            (set KLV_Lichtautomatik_Speicher on)
            (set HUEDevice16 ct 366 : bri 254)
            
DOELSE ([HM_A5A502:digitalInput] eq "0"
         and [KLV_Lichtautomatik_Speicher:state] eq "on")
            (define at_KLV_Lichtautomatik_Speicher at +00:00:20 set KLV_Lichtautomatik_Speicher off)
            (define at_KLV_Licht_aus at +00:00:20 set HUEDevice16 off)

Nun stellt sich mir die Frage geht das auch besser, einfacher oder ist das okay so?

Ich habe einen Bewegungsmelder welcher das Licht im Raum einschalten soll wenn es aus ist, das Licht soll wenn keine Bewegung mehr vorhanden ist nach ca. 20 sek. aus gehen.
Jetzt habe ich das ganze nach obigen Beispiel angelegt und es geht auch soweit, nur ist es eventuell besser das alles auch ohne die kurz angelegten "at" zu verwirklichen,
oder ist das mit den "at" gar nicht so schlimm und soll ich es einfach so lassen?

Ich habe auch noch ein weiteres DOIF mit noch etwas mehr Angaben, könnten mir die Profis sagen ob ich es da zu Umständlich mache oder ob das so Okay ist....

Zitat
([HM_A5A503:digitalInput] eq "1"
   and [HM_A5A503:brightness] < 4
   and [SZ_Lichtautomatik_Speicher:state] eq "off"
   and [SZ_Bewegungsmelder:state] eq "on"
   and [HUEDevice10:state] eq "off")
      (set HUEDevice10 ct 366 : bri 254)
      (set SZ_Lichtautomatik_Speicher on)
      
DOELSEIF ([HM_A5A503:digitalInput] eq "1"
         and [SZ_Lichtautomatik_Speicher:state] eq "on")
            (delete at_SZ_Licht_aus)
            (delete at_SZ_Lichtautomatik_Speicher)
            (set SZ_Lichtautomatik_Speicher on)
            (set HUEDevice10 ct 366 : bri 254)
            
DOELSE ([HM_A5A503:digitalInput] eq "0"
         and [SZ_Lichtautomatik_Speicher:state] eq "on")
            (define at_SZ_Lichtautomatik_Speicher at +00:00:30 set SZ_Lichtautomatik_Speicher off)
            (define at_SZ_Licht_aus at +00:00:30 set HUEDevice10 off)

Für eventuelle Rückfragen stehe ich gern zur Verfügung...

Danke
hene42

laberlaib

Ich habe so etwas ähnliches mit
wait
von DOIF. Da wird dann die Ausführung verzögert und wenn die Bedinung nicht mehr war ist weil sich was ändern gar nicht erst ausgeführt.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

Per

a: wait statt at (dadurch wird die config nicht geändert), zur Not sleep nehmen
b: DUIF cmd abfragen statt Dummy Variable setzen

Für Lichtsteuerung i.V. Bewegungsmeldern mit wait dürfte es etliche Beispiele im Forum geben. Dürfte ein Zweizeiler werden (+ 1 Zeile für das Attribut wait).

hene42

Danke für eure Hinweise und Tipps, ich habe es jetzt so gelöst und hoffe das ist in Ordnung....

Zitat
   
([HM_A5A502:digitalInput] eq "1"
   and [HUEDevice16:state] eq "off"
   and [08:00-22:00]
   or
   [HM_A5A502:digitalInput] eq "1"
   and [doif_KLV_Lichtautomatik:state] eq "cmd_3_1"
   and [08:00-22:00])
      (set HUEDevice16 ct 366 : bri 254)

DOELSEIF ([HM_A5A502:digitalInput] eq "1"
   and [HUEDevice16:state] eq "off"
   and [22:01-07:59]
   or
   [HM_A5A502:digitalInput] eq "1"
   and [doif_KLV_Lichtautomatik:state] eq "cmd_3_1"
   and [22:01-07:59])
      (set HUEDevice16 ct 366 : bri 127)

DOELSEIF ([HM_A5A502:digitalInput] eq "0"
         and [doif_KLV_Lichtautomatik:state] eq "cmd_1"
         or
         [HM_A5A502:digitalInput] eq "0"
         and [doif_KLV_Lichtautomatik:state] eq "cmd_2")
            (set HUEDevice16 ct 366 : bri 80)
            (set HUEDevice16 off)

DOELSEIF ([HUE_SZ_Switch])





attr wait 0:0:15,5:0
attr do resetwait


Das Licht wird jetzt mit verschiedenen Helligkeiten eingeschaltet (Uhrzeit abhängig) und auch nur wenn es aus ist oder gerade sich ein wenig abgedunkelt hat bevor es komplett aus geht.
Bevor es ausgeht dunkelt es sich vorher ein wenig ab.
Wenn ich irgendein Taster zum manuellen Ein- oder Ausschalten betätige wird alles abgebrochen.

Ich hoffe da ist jetzt kein Fehler mehr drin, über Hinweise und Tipps zu Fehlern die ich doch noch drin habe würde ich mich sehr freuen.

mfg
hene42

Per

Fehler wirst du merken, wenn es nicht so schaltet wie gewünscht.
Aber jetzt hätte ich mal was zur Eleganz:
(A and B and C) or (A and B and D)
kann man vereinfachen zu
A and B and (C or D)
Also

([HM_A5A502:digitalInput] eq "1" and [08:00-22:00]
   and ([doif_KLV_Lichtautomatik:state] eq "cmd_3_1"
   or [HUEDevice16:state] eq "off"))

Ich würde auch nicht gg. eq "cmd_3_1" prüfen, sondern gg ne "cmd_4".

Und falls dein DOIF doif_KLV_Lichtautomatik heisst, kannst du es im Code mit $SELF ersetzen.


hene42

#5
Hallo Per,

Ja mein DOIF heisst doif_KLV_Lichtautomatik.... also ändern in $SELF, ich werde es versuchen!

Fehler, naja manchmal geht es nicht aus und manchmal nicht in voller Helligkeit an sondern nur sehr dunkel.
Ich vermute das hängt aber irgendwie mit Fhem & Hue zusammen das manchmal nicht immer alles übertragen wird,
weil bei anderen manuellen schalten von Hue Lampen passiert das auch, das nicht alle Kommandos übertragen werden.

Das mit and und or schaue ich mir auch nochmal an.

Danke
hene42