NEWS
[Vorlage] Farbtemperatur (weiß) abhängig von Sonnenstand und Tageszeit
-
Ich würde gerne die Farbtemperatur meiner Hue LEDs (CCT) in Abhängigkeit von Sonnenstand und Tageszeit schalten. Also morgens kalt (bis mittags) dann langsam immer wärmer bis abends richtig warm.
Ein erster Plan ist: bei steigender Elevation. kalt lassen und wenn die Elevation fällt auf warm wechseln. Aber die Zeit dich ich habe bis die Dunkelheit kommt variiert natürlich durchs ganze Jahr. Also kann ich keine absoluten Werte (z. B. +10° pro halbe Stunde) nehmen.
Habt ihr ne Idee wie ich das machen kann?
Gesendet von meinem ONEPLUS A3003 mit Tapatalk
Edit: Elevation & Azimut verwechselt.
-
Ich habe mir das auch schon mal durch den kopf gehen lassen.
Meine Ansätze wären es entweder aus der maximalen elevation (nicht azimut!) hochzurechnen oder den Zeitpunkt von elevation =0 des vortags zu speichern und zur Berechnung des Intervalls zu nehmen.
Gruß
Rainer
-
Ich habe jetzt eine Lösung gefunden. Es ist nichtz ganz einfach dazustellen und ich freue mich wenn der ein oder andere eine Vereinfachung findet, aber bei mir funktioniert es so schon mal.
Ich brauche
Tageszeit1 (z.B. "Golden Hour") zu der dann der Verlauf der Farbtemperatur beginnen soll.
Tageszeit2 (z.B. "Nautische Abenddämmerung") zu der dann der Verlauf der Farbtemperatur beendet sein soll.
Aktuelle Zeit
Extrema°K für kaltes Licht - bei mir 325°
Extrema °K für warmes Licht - bei mir 500°
Zum einfachen Rechnen wandle ich die Zeiten in Minuten seit Tagesbeginn um. Keine Ahnung ob das nötig ist.
Dann brauche ich die Länge des Verlaufs:
Zeit2 - Zeit1
und wieviel Zeit der aktuellen Verlaufsphase schon verstrichen ist:
aktuelle.Zeit - Zeit1
Dann rechne ich aus wieviel Prozent meiner Verlaufszeit ich erreicht habe:
100 / Länge_des_Verlaufs * verstrichene_Zeit
und finde dann raus welcher Wert diesem Prozentsatz in meine Hue-Farbtemperatur entspricht:
(175/100*x)+325
Das ganze funktioniert so im Moment nur, bei einem Verlauf von Tageslicht (kalt) zu Kunstlicht (warm). Wenn das ganze umgedreht werden soll, dann muss der Wert der mit 1,75 multipliziert wird, vorher noch von hundert substrahiert werden.
Ich bin leider ein ziemlicher Mathe-noop, aber vielleicht kann jemand anders das ganze etwas optimieren.
! <block 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml" type="math_arithmetic" id="-%lK~cGYvFO2{1#qRj
%" x="237.72003173828125" y="-962.1600341796875"> ! <field name="OP">ADD</field> ! <value name="A"><shadow type="math_number" id="3H~;i9KPv+;ir
q[Y.2+"><field name="NUM">1</field></shadow>
! <block type="math_number" id="+1QD+78.SC%}Vr|wz%Ew"><field name="NUM">325</field></block></value>
! <value name="B"><shadow type="math_number" id="]npZ_W6rM(on9.ifj6)"><field name="NUM">1</field></shadow>
! <block type="math_arithmetic" id="MVq:4z9-FFB;xttoJHu"><field name="OP">MULTIPLY</field>
! <value name="A"><shadow type="math_number" id="ytDc@lagY%1gE345CtTg"><field name="NUM">1</field></shadow>
! <block type="math_number" id="jR7Wx6TB_5DT~5IG(_;"><field name="NUM">1.75</field></block></value> ! <value name="B"><shadow type="math_number" id="e3q)bwf(Vk.{))SAXzy:"><field name="NUM">1</field></shadow> ! <block type="math_arithmetic" id="L|XdaWxdnjk3Dm3]-#pP"><field name="OP">MULTIPLY</field> ! <value name="A"><shadow type="math_number" id="L@-n{{i|.Ax-C)xB~VI^"><field name="NUM">1</field></shadow> ! <block type="math_arithmetic" id="vAIsHAc_bs]W}vq.7I]E"><field name="OP">DIVIDE</field> ! <value name="A"><shadow type="math_number" id="qHu#JQ4u|jY8eksh
LA1"><field name="NUM">1</field></shadow>
! <block type="math_number" id="c=,)Yf14pQhq.J8{P3U"><field name="NUM">100</field></block></value> ! <value name="B"><shadow type="math_number" id=")=Ox[S!jr,?Ry4)5^DVe"><field name="NUM">1</field></shadow> ! <block type="math_arithmetic" id="{+tT}QVw[Rm{4D7W*{wG"><field name="OP">MINUS</field> ! <value name="A"><shadow type="math_number" id="5SBT/|sdh~7@k]xBc@:H"><field name="NUM">1</field></shadow> ! <block type="convert_from_date" id="/g}k*9=Sz)X#yR-=H2Zq"><mutation format="false" language="false"></mutation> ! <field name="OPTION">mid</field> ! <value name="VALUE"><block type="time_astro" id="lgK-X)=LcM7ri.:-V*~,"><field name="TYPE">nauticalDusk</field> ! <field name="OFFSET">0</field></block></value></block></value> ! <value name="B"><shadow type="math_number" id="b8*#CBUaOLj(J|K?*4.
"><field name="NUM">1</field></shadow>
! <block type="convert_from_date" id="_eG-E:|8vJ5C-EZMb9tK"><mutation format="false" language="false"></mutation>
! <field name="OPTION">mid</field>
! <value name="VALUE"><block type="time_astro" id="U(U~|4+~64IA]Jlky5p?"><field name="TYPE">goldenHour</field>
! <field name="OFFSET">0</field></block></value></block></value></block></value></block></value>
! <value name="B"><shadow type="math_number" id="[5_epI23]1iwBP1W*ajh"><field name="NUM">1</field></shadow>
! <block type="math_arithmetic" id="tnqQ8p{FPN}b+lLL05YJ"><field name="OP">MINUS</field>
! <value name="A"><shadow type="math_number" id="+cC]Doc(p2T/?Y9}/7[."><field name="NUM">1</field></shadow>
! <block type="time_get" id="Ly!ZBYRbl^P^UN~Z:zf`"><mutation format="false" language="false"></mutation>
! <field name="OPTION">mid</field></block></value>
! <value name="B"><shadow type="math_number" id=":OW}[*Q2Uv+QnMhP)ReM"><field name="NUM">1</field></shadow>
! <block type="convert_from_date" id="C!t=@(;-j^l^[~gu7WDu"><mutation format="false" language="false"></mutation>
! <field name="OPTION">mid</field>
! <value name="VALUE"><block type="time_astro" id="QwIM!4yrT3yRpfO6tW~i"><field name="TYPE">goldenHour</field>
! <field name="OFFSET">0</field></block></value></block></value></block></value></block></value></block></value></block> -
Ich hab das ganze nochmal etwas vereinfacht:
Ich habe alle Zeiten in "Minuten seit Tagesbeginn" konvertiert.
Wir brauchen folgende Variablen:
s - Startzeit der Übergangsphase (z.B. Golden Hour)
e - Ende der Phase (Ende der Dämmerung)
z - aktuelle Zeit
w - maximaler ct-Wert in Hue (o.ä.) (Warmweiß) z.B. 500
c - minimaler ct-Wert (Kaltweiß) z.B. 325
[(z-s)*(w-c)/(e-s)]+c
Die Formel ist dann für einen ansteigenden Weißwert (Abenddämmerung). Wenn das weiß im Lauf der Zeit immer kälter werden soll (morgens) müssen w&c getauscht werden.
Ich hoffe immer noch darauf, dass jemand das ganze in eine ordentlich nutzbaren Code umschreibt. Wäre natürlich viel eleganter wenn man nur einmal oben die Variablen einsetzt und der Rest der Formel dann passt…
https://forum.iobroker.net/viewtopic.php?f=22&t=21229 und er umschreibt meine von ioBroker gesetzten Weiß-Werte immer mit 500.
-
Hallo, durch Zufall bin ich auf diesen interessanten Thread gestoßen. Seit Weihnachten habe ich nun auch ioBroker im Einsatz (in Verbindung mit Homekit/yahka) und bin bisher ganz angetan.
Noch bin ich recht unerfahren mit iobroker und habe mal versucht den Blocky bei mir nachzubilden. Zumindest der sieht so aus wie auf Deinem geposteten gif. Den darunter geposteten Code.... wo gebe ich den denn ein? Und wie verknüpfe ich den anschließend? Sorry für meine Beginner-Fragen....
vg vsa
-
Hallo zusammen,
ich möchte das mit meinen unzähligen Hue Spots ebenfalls realisieren.
Am liebsten wäre es mir jedoch die Sonne nachzubilden, also:
Morgens Warmweiß
Mittags Kaltweiß
Abends WarmweißFür mich ergibt es keinen Sinn morgens direkt auf Kaltweiß zu gehen, das ist doch ungemütlich nach dem Aufstehen
Den Farbverlauf hätte ich gerne "LIVE" also sagen wir alle 30 Minuten, wenn die Lichter an sind soll sich die Farbe automatisch an den Sonnenstand anpassen.
Außerdem soll natürlich beim Einschalten selbst die richtige Temperatur eingestellt werden.Ich schalte die Leuchten übrigens beim Ausschalten über KNX komplett stromlos.
Hat jemand eine Blockly Vorlage, die ich als Basis nehmen kann?
-
Scheint wohl eher ein "Nischen-Wunsch" zu sein .
Wenn sich hier niemand meldet, der die gleichen Pläne hat, dann muss ich mich wohl oder übel selbst dem Thema annehmen
Ehrlich gesagt hab ich halt noch keinen blassen Schimmer wie ich das realisieren soll.
-
@loverz Hallo Loverz,
ich habe jetzt etwas rumgesucht, aber den Beitrag wiedergefunden. Die Steuerung der Farbtemperatur in Abhängigkeit der Tageszeit gibt es bereits in einem Skript:
Dynamisches Licht - Farbverlauf Tag/Nacht
Vielleicht ist es das was Du suchst
-
@Tirador Super danke!
Ich kenne mich zwar nicht mit Java aus, aber ich versuche mich da mal etwas einzulesen.
-
Ich hab mich auf die Suche nach etwas leichterem (also für mich Blockly) gemacht, wurde nicht fündig und hab nun selbst etwas gebastelt:
https://forum.iobroker.net/topic/37978/adaptive-lighting-sonne-nachempfinden-hue-deconz