FHEM - Anwendungen > Beleuchtung

Aufbau einer Schaltung für Aussenbeleuchtung mit Dämmerung und Zufall (DOIF)

(1/5) > >>

moonsorrox:
ich versuche mir eine Schaltung mit einem Dummy für meine Aussenbeleuchtung zu bauen, die einmal folgendes machen soll
1. Aus - ist klar komplett ausgeschaltet
2. Dämmerung - hier sollen sich die Zeiten nach Sonnenuntergang richten mit evtl. anderen Zeiten am Wochenende
3. Zufall - eine Art Anwesenheitssimulation zu verschiedenen Zeiten (noch nicht fertig)


zu Punkt 2. das funktioniert nun mit folgenden Code siehe unten
Der Code für die Dämmerung wäre so wie ich das haben möchte.
Die erste Lampe wird zu einer 1. Zeit "Ein" geschaltet, dann zu einer 2. Zeit wieder "Aus" geschaltet hier wird dann die 2.Lampe "Ein" geschaltet und diese soll dann zu einer festen Zeit wieder ausgehen.


zu Punkt 3. es ist leider nicht möglich dieses mit einem DOIF zu machen, also möchte ich hier erreichen, wenn das Dummy auf Zufall steht, dass ein RandomTimer eingeschaltet wird.
Gelöst habe ich es mit zwei weiteren notify die mir den Zufallstimer Aus/Ein schalten.
Ein netter User hat hier eine weitere Möglichkeit gezeigt, die ich jetzt auch im Einsatz habe...
Hier die Erklärung dazu:

Du könntest also das bestehende DOIF erweitern um

--- Code: ---DOELSEIF([Zeitsteuerung] eq "Dämmerung")(attr ZufallsTimerAussenlicht disable 1)
DOELSEIF([Zeitsteuerung] eq "Zufall")(attr ZufallsTimerAussenlicht disable 0)

--- Ende Code ---

wobei es so noch konsequenter wäre für Dämmerung und Aus:

--- Code: ---DOELSEIF([Zeitsteuerung] ~= "Dämmerung|Aus")(attr ZufallsTimerAussenlicht disable 1)

--- Ende Code ---


Hier der Code für das Dummy:

--- Code: ---#### Zeitsteuerung Dummy ###
define Zeitsteuerung dummy
attr Zeitsteuerung alias Zeitsteuerung aktivieren
attr Zeitsteuerung devStateIcon Aus:general_aus@lightgreen Dämmerung:weather_sunrise@blue Zufall:general_an_fuer_zeit@Crimson
attr Zeitsteuerung eventMap Aus Dämmerung Zufall
attr Zeitsteuerung group Aussen Beleuchtung
attr Zeitsteuerung icon time_clock
attr Zeitsteuerung room Automation
attr Zeitsteuerung setList state:Aus,Dämmerung,Zufall
attr Zeitsteuerung sortby 01
attr Zeitsteuerung webCmd state

--- Ende Code ---

Hier der Code für die Kondition 2. "Dämmerung":

--- Code: ---define di_Aussenlampe DOIF ( [Zeitsteuerung] eq "Dämmerung" and ([{sunset("CIVIL",1200,"17:00","22:20")}|12345] or [{sunset("CIVIL",800,"17:00","22:20")}|06]))\
    (set WegLampe_Sw_01 on)\
DOELSEIF ( [Zeitsteuerung] eq "Dämmerung" and ([{sunset("CIVIL",9000,"19:00","22:20")}|0123456]))\
    (set WegLampe_Sw_01 off,set WegLampe_Sw_02 on)\
DOELSEIF ([Zeitsteuerung] eq "Dämmerung" and ([00:15|12345] or [01:15|06]))\
    (set WegLampe_Sw_02 off)\
\
\

attr di_Aussenlampe room Automation

--- Ende Code ---

Hier der Code für die Kondition 3. "Zufall":

--- Code: ---define umschaltung_RT_Aus notify Zeitsteuerung:Dämmerung attr ZufallsTimerAussenlicht disable 1
attr umschaltung_RT_Aus room Automation

define umschaltung_RT_Ein notify Zeitsteuerung:Zufall attr ZufallsTimerAussenlicht disable 0
attr umschaltung_RT_Ein room Automation

--- Ende Code ---

Der Code für ZufallsTimerAussenlicht ist dann individuell von jedem selbst zu erstellen, je nachdem was man möchte.
Viel Spaß und Funktion damit ;)

Brockmann:

--- Zitat von: moonsorrox am 18 November 2014, 21:04:47 ---Frage dazu...?
Für die Ausschaltzeit der 2. Lampe muss ich dann extra ein DOIF einsetzen zum Ausschalten, oder kann ich die hinten dran setzen..?

--- Ende Zitat ---
Klar kannst Du das hinten dran setzen. Im Prinzip kannst Du das alles (bis auf den Dummy) in ein einziges DOIF packen. Die Zeitsteuerung-DOIFs lässt Du weg und verwendest statt dessen den Dummy direkt in der Kondition, also etwa so (ohne die Klammern gezählt zu haben):


--- Code: ---define di_Aussenlampe DOIF ( [Zeitsteuerung] eq "Dämmerung" and ([{sunset("CIVIL",1800,"18:00","22:20")}-{sunset("CIVIL",9000,"18:00","22:20")}|8] or [{sunset("CIVIL",2400,"18:00","22:20")}- {sunset("CIVIL",9600,"18:00","22:20")}|7]))
    (set WegLampe_Sw_01 on)
DOELSEIF  ([Zeitsteuerung] eq "Zufall" and ([{sunset("REAL",1800,"17:00","22:20")}-{sunset("REAL",9000,"18:00","22:20")}|8] or [{sunset("REAL",2400,"17:00","22:20")}-{sunset("REAL",9600,"18:00","22:20")}|7] ))
    (set WegLampe_Sw_01 on)
DOELSE
    (set WegLampe_Sw_01 off,set WegLampe_Sw_02 on)

--- Ende Code ---

Das hätte noch den Nebeneffekt, dass Du den Status jederzeit (auch während der Dämmerung) ändern könntest und die Lampen würde sofort reagieren. Im Moment würde das nämlich bis zum nächsten Zeittrigger nichts bewirken.

PS: Das mit RandomTimer hast Du vielleicht noch nicht richtig durchschaut. Dieses Modul liefert nicht Zufallszeiten, sondern würde die zufallsbasierte Steuerung Deiner Lampen nach Deinen Vorgaben komplett übernehmen. Die Logik wäre also:
Zeitsteuerung = "Dämmerung" -> DOIF aktivieren, RandomTimer deaktivieren
Zeitsteuerung = "Zufall" -> DOIF deaktivieren, RandomTimer aktivieren

moonsorrox:
OK das hört sich alles sehr gut an... da mache ich mich mal ran und werde den Code modifizieren...

Hatte aus verschiedene Beiträge so das wichtigste für mich heraus gesucht und erst einmal losgelegt... Ich habe gestern Abend/Nacht noch etwas experimentiert und habe eine Ausschaltzeit für die Tage [7|8] also Werktage und Wochenende definiert (evtl. baue ich das separat auf also Werktage anders als Wochenende) und immer mal probiert, leider hat das nicht geklappt, anstatt das die Lampe die zuletzt leuchtet ausgeht ist die andere mit angegangen  :-\ muss heute mal suchen, war evtl. zu spät  ;)

Zu deinem Hinweis mit dem RandomTimer, dass wollte ich als nächstes angehen.
Meine Variante wäre gewesen (natürlich mit den beiden Dummys) die Schaltzeiten aus dem DOIF komplett raus zu nehmen und den RandomTimer einzusetzen... die Umschaltung muss ich mir einmal überlegen wie ich das mache..!
Die jetzigen Sunset Zeiten sind nur erst einmal drin, dass ist dann jetzt die nächste Baustelle.

moonsorrox:
umgebaut habe ich das jetzt mal...
ich will ja jetzt noch für das DOIF "Dämmerung" ein Ausschaltzeit für für die Wochentage und das Wochenende rein bringen und Sunset für "Zufall" kommt ja weg dafür soll ja der RandomTimer rein, siehe unten ;)

wenn ich das richtig verstanden habe brauche ich doch eigentlich "nur" in diesem Bereich des Code:

--- Code: ---DOELSEIF  ([Zeitsteuerung] eq "Zufall" and ([{sunset("REAL",1800,"17:00","22:20")}-{sunset("REAL",9000,"18:00","22:20")}|8] or [{sunset("REAL",2400,"17:00","22:20")}-{sunset("REAL",9600,"18:00","22:20")}|7] ))
    (set WegLampe_Sw_01 on)

--- Ende Code ---

alles was hinter "Zufall" and kommt, dann gegen den RandomTimer (mit dem ich mich als nächstes beschäftige) ersetzen, oder wird das nichts..? Denn nur als Hinweis, die "sunset" Geschichten habe ich nur erst mal rein geschrieben damit ich da was drin habe zum testen, denn das wird ja nur bei Dämmerung gebraucht

Brockmann:
Vielleicht schaust Du erstmal, dass das DOIF für die reguläre Dämmerung (ohne Zufall) so läuft, wie Du es möchtest. Und dann schaust Du Dir mal in Ruhe RandomTimer an und überlegst, wie Du beides verbinden kannst.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln