Code für dynamische HUE Lightszenen ?

Begonnen von visionsurfer, 29 Dezember 2016, 20:55:10

Vorheriges Thema - Nächstes Thema

sinus61

Die dynamischen Effekte von Hue Labs kann man aber am besten über deren Sensor ein- und ausschalten. Dürfte in der Regel viel einfach sein als Kaminfeuer oder Candle Effekte in FHEM nachzuprogrammieren, da gibt es bei Hue Labs ja schon eine Auswahl. Eine echte Hue Bridge natürlich vorrausgesetzt.

Wscheff

Zitat von: Felix_86 am 12 März 2019, 09:42:33
@ zok
Bei mir sieht das Setup zur Steuerung der Sonnenaufgang-Szene wie folgt aus:

- Ein Dummy (Name: Wecker_Sonnenaufgang) dient zur Einstellung der gewünschten Weckzeit:

  • setList:  state:aus,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,11:00,12:00
- Ein Notify (Name: notify_Wecker_Sonnenaufgang) reagiert bei allen Events des Dummy (Name: Wecker_Sonnenaufgang):

  • ist der Dummy Wecker_Sonnenaufgang nicht ausgeschaltet, dann wird die gewünschte Weckzeit des Dummy (Name: Wecker_Sonnenaufgang) ausgelesen und die Zeit an ein AT (Name: at_Wecker_Sonnenaufgang) übergeben
  • ist der Dummy Wecker_Sonnenaufgang ausgeschaltet, dann wird das AT (Name: at_Wecker_Sonnenaufgang) deaktiviert
- In dem AT (Name: at_Wecker_Sonnenaufgang), dass zur gewünschten Weckzeit ausgeführt wird, setze ich wiederum den Status eines Dummy (Name: Sonnenaufgang_simulieren) zur Ausführung der Weck-Szene

  • Der zu setzende Status des Dummy (Name: Sonnenaufgang_simulieren)  ist "starten"
  • in dem AT (Name: at_Wecker_Sonnenaufgang) finden noch einige andere Aktionen statt, wie z.B. der Versand einer Telegram-Info, das Setzen von Standard-Weckzeiten unter der Woche und am Wochenende.
  • das ist aber nur optional und für die eigentliche Funktion nicht relevant
- In dem Dummy (Name: Sonnenaufgang_simulieren) kann ich lediglich den Status "starten" manuell setzen; während der Durchführung ist der Status "läuft" und nach Durchführung der Weckszene "beendet".

  • webCmd:  starten
- Ein weiteres Notify (Name: notify_Sonnenaufgang_simulieren) reagiert auf das Event "starten" des Dummy (Name: Sonnenaufgang_simulieren):

  • Hier wird zunächst geprüft, ob die Philips Hue Bridge erreichbar ist, um die Lichtsteuerung der Hue Lampen durchzuführen (optional)
  • Ist die Philips Hue Bridge erreichbar, läuft in dem Notify (Name: notify_Sonnenaufgang_simulieren) eine for-Schleife mit Counter von X Sekunden um eine Pause zwischen jedem Farbwechsel einzubauen
  • weiter wird der Dummy (Name: Sonnenaufgang_simulieren) auf "läuft" gesetzt, was allerdings keine weitere Auswirkung / Aktion hat
  • Zusätzlich wird noch ein AT (Name: at_Sonnenaufgang_Utils) für einen definierten Zeitpunkt nach Beendigung des Notify (Name: notify_Sonnenaufgang_simulieren) gesetzt
- Das AT (Name: at_Sonnenaufgang_Utils) ist wiederum nur optional

  • es lässt die Hue Lampen nach Ablauf der for-Schleife im Notify (Name: notify_Sonnenaufgang_simulieren) blinken, dann ist es höchste Zeit aufzustehen ;)
  • weiter setzt es den Status des Dummy (Name: Sonnenaufgang_simulieren) auf "beendet",  was allerdings keine weitere Auswirkung / Aktion hat


Ziemlich komplex und miteinander verknüpft. Vermutlich geht es auch einfacher (klarer strukturiert), aber so habe ich es seiner Zeit nach langen Recherchen und an meine Bedürfnisse angepasst, gebaut und zum Laufen bekommen. Daher sehe ich aktuell keinen Grund etwas zu ändern.

Falls du weitere Details brauchst kannst du dich gerne nochmal melden.

Hallo @felix_86,

bin hier drüber gestolpert und auf der Suche nach genau so einer FOR Schleife. Wärst du bereit hier deinen Code zu posten?
Ich möchte meine Aussenbeleuchtung in einer Schleife bis zum manuellen Aussschalten bestimmte Szenen in einem Loop laufen lassen

Dieser Teil ist für mich interessant:

[li]Ist die Philips Hue Bridge erreichbar, läuft in dem Notify (Name: notify_Sonnenaufgang_simulieren) eine for-Schleife mit Counter von X Sekunden um eine Pause zwischen jedem Farbwechsel einzubauen[/li]


Danke & Grüsse
wscheff

Felix_86

Zitat von: Wscheff am 13 Juli 2020, 22:33:45
Hallo @felix_86,

bin hier drüber gestolpert und auf der Suche nach genau so einer FOR Schleife. Wärst du bereit hier deinen Code zu posten?
Ich möchte meine Aussenbeleuchtung in einer Schleife bis zum manuellen Aussschalten bestimmte Szenen in einem Loop laufen lassen

Dieser Teil ist für mich interessant:

[li]Ist die Philips Hue Bridge erreichbar, läuft in dem Notify (Name: notify_Sonnenaufgang_simulieren) eine for-Schleife mit Counter von X Sekunden um eine Pause zwischen jedem Farbwechsel einzubauen[/li]


Danke & Grüsse
wscheff

Hallo wscheff

hier die Def-Informationen des Notify (Name: notify_Sonnenaufgang_simulieren).

Sonnenaufgang_simulieren:starten {

# Führt Notify nur aus, wenn Hue Bridge erreichbar ist (sonst können Licht-Infos nicht an Lampen übermittelt werden)
if (Value("Presence_Hue_Bridge_LAN") eq 'present'){

if ($NAME eq "Sonnenaufgang_simulieren"){
my $BETROFFENELAMPEN = "Hue_SZ.*";
fhem("set $BETROFFENELAMPEN rgb 030100");
my @sonne = ('0B0300','190601','230902','2F0D03','370F03','401204','481405','521806','591007','622108','6E2508','772809','7F2A09','882D0A','90300A','96320A','9D330A','A6360A','B0390A','B0450A','B9480B','C1580B','CB610B','D3650C','D6740C','DC770B','DC810B','E5860B','ED8E12','F2A113','F2B013','F5B51A','F9BA22','FBBD29','FEC232','FFC742','FECC55','FED166','FDD473','FDD880','FEDD8C','FDDF97','FDE4A7','FDEABC','FDEEC8','FDF0D1','FDF3DA','FCF4E2');
my $counter = 1;
for(my $i = 0; $i < @sonne; $i++) {
fhem("sleep ".$counter."; set $BETROFFENELAMPEN rgb ".$sonne[$i].";");
# Erzeugt eine Pause von xx Sekunden zwischen jedem Farbwechsel
            $counter = $counter + 18
}
# Sonnenaufgang Utils
my $TIMERZEIT = strftime "%H:%M:%S",localtime((time()+900));
fhem("set $NAME läuft;set at_Sonnenaufgang_Utils modifyTimeSpec $TIMERZEIT; attr at_Sonnenaufgang_Utils disable 0; save")
}


}

if (Value("Presence_Hue_Bridge_LAN") eq 'absent'){
Log 3,"Presence_Hue_Bridge_LAN war absent - konnte notify_Sonnenaufgang_simulieren nicht ausführen";
}
if (Value("Presence_Hue_Bridge_LAN") eq 'disabled'){
Log 3,"Presence_Hue_Bridge_LAN war disabled - konnte notify_Sonnenaufgang_simulieren nicht ausführen";
}

}
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.2, ca 320 Device
SIGNALduino (TCM, TX, IT), CUL (EM, FS20, HMS), JeeLink (PCA301), HUEBridge, HUEDevice, mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS

Wscheff

Hallo Felix_86,

Dankeschön, ich kann das sehr gut einbauen für meine Gartenlampen.

Grüße
wscheff