NEWS
Adaptive Lighting [Sonne nachempfinden] Hue/Deconz
-
@loverz sagte in Adaptive Lighting [Sonne nachempfinden] Hue/Deconz:
Hast du auch den Link vom Forumsbeitrag?
gibt es den?
kann mich gar nicht erinnern.Und wenn, dann hat sich da inzwischen einiges geändert
Wofür brauchst du den Beitrag?
-
@Homoran
Ich dachte, dass ich dort mehr Infos, eine Erklärung und ggf. das gesamte Script finden könnte.Ich kann natürlich auch die Blöcke anhand des Screenshot nachbasteln.
-
@loverz sagte in Adaptive Lighting [Sonne nachempfinden] Hue/Deconz:
dass ich dort mehr Infos
Was brauchst du?
@loverz sagte in Adaptive Lighting [Sonne nachempfinden] Hue/Deconz:
eine Erklärung
Dieses Blockly startet einen "Sonnenuntergang" kurz vor dem astronomischen solchen, von Licht mit hohem Blauanteil und voller Helligkeit der Ikea Tradfri RGB-Lampe bis gegen 22:10, wo ein vorgegebener minimaler Helligkeitswert und eine Lichtfarbe mit höherem Rotanteil erreicht wird.
.
Für eine Anwesenheitssimulation wird dieser abendliche Zeitpunkt noch mit einer zufälligen Spanne erhöht.
.
Kurz nach Mitternacht schaltet sich die Lampe wieder aus, wenn sie nicht vorher per Fernbedienuung ausgeschaltet wurde.@loverz sagte in Adaptive Lighting [Sonne nachempfinden] Hue/Deconz:
das gesamte Script
Wie gesagt, wenn es das in einem älteren Beitrag gab ist das ein anderes.
@loverz sagte in Adaptive Lighting [Sonne nachempfinden] Hue/Deconz:
Ich kann natürlich auch die Blöcke anhand des Screenshot nachbasteln.
Das würde beim Lernen zu Scripten erheblich helfen.
Achtung:
die von dir geforderten Aufgaben sind nicht in diesem Skript enthalten.
Hier handelt es sich nicht um die aktuelle Farbtemperatur des Tageslichts, sondern eine willkürliche "Fahrt" durch diverse Farben -
@loverz ich weiß nicht, wie weit du bist, aber ich hab gerade dran gedacht (Schande auf mein Haupt), dass ich auch ein ähnliches Skript im Einsatz habe. Ist allerdings JavaScript, nicht Blockly.
Müsste für deine Zwecke ggf. noch etwas angepasst werden - ich steuere damit eine Tradfri-Gruppe, sodass von Sonnenaufgang bis 2h später die Farbtemperatur langsam von warm auf kalt wechselt und von 2h vor Sonnenuntergang bis Sonnenuntergang wieder auf warm.
// Tradfri-Farbtemperatur in Abhängigkeit der Uhrzeit festlegen const MIN_TEMP = 0; // Minimale Farbtemperatur (kaltes Licht) const MAX_TEMP = 100; // Maximale Farbtemperatur (warmes Licht) // wieviele Stunden vor(-)/nach(+) sunrise soll der Übergang auf kalte Farbtemperatur starten/enden? const sunriseStartOffset = hours2ms(0); const sunriseEndOffset = hours2ms(2); // wieviele Stunden vor(-)/nach(+) sunset soll der Übergang auf warme Farbtemperatur starten/enden? const sunsetStartOffset = hours2ms(-2); const sunsetEndOffset = hours2ms(0); let prevTemp: number; let targetTemp: number; // isOn gibt an, dass mindestens 1 Lampe der Gruppe an ist let isOn = getState("tradfri.0.VG-00001.state").val !== false; on({id: "tradfri.0.VG-00001.state", change: "ne"}, obj => { isOn = obj.state.val !== false; if (targetTemp != undefined && targetTemp !== prevTemp && isOn) setTemp(1); }); schedule("* * * * *", colorChange); // jede Minute neue Farbtemperatur berechnen colorChange(); // außerdem beim Skriptstart function colorChange() { // aktuelle Uhrzeiten berechnen, damit wir nicht vom Datum abhängig sind const sunrise = getAstroDate("sunrise"); const sunriseStart = new Date(sunrise.getTime() + sunriseStartOffset).getTime(); const sunriseEnd = new Date(sunrise.getTime() + sunriseEndOffset).getTime(); const sunset = getAstroDate("sunset"); const sunsetStart = new Date(sunset.getTime() + sunsetStartOffset).getTime(); const sunsetEnd = new Date(sunset.getTime() + sunsetEndOffset).getTime(); const now = new Date().getTime(); // neue Farbtemperatur berechnen if (now < sunriseStart || now > sunsetEnd) { // warmes Licht in der Nacht targetTemp = MAX_TEMP; } else if (now >= sunriseStart && now <= sunriseEnd) { // sanfter Übergang auf kaltes Licht am Morgen targetTemp = interpolate(now, sunriseStart, sunriseEnd, MAX_TEMP, MIN_TEMP); } else if (now > sunriseEnd && now < sunsetStart) { // kaltes Licht am Tag targetTemp = MIN_TEMP; } else if (now >= sunsetStart && now <= sunsetEnd) { // sanfter Übergang auf warmes Licht am Abend targetTemp = interpolate(now, sunsetStart, sunsetEnd, MIN_TEMP, MAX_TEMP); } // und diese festlegen, wenn sich etwas geändert hat if (targetTemp != undefined && targetTemp !== prevTemp && isOn) setTemp(10); } function setTemp(transitionDuration: number) { prevTemp = targetTemp; setState("tradfri.0.VG-00001.transitionDuration", transitionDuration); setState("tradfri.0.VG-00001.colorTemperature", targetTemp); } // interpoliert linear zwischen zwei Punkten function interpolate(x, x1, x2, y1, y2) { return Math.round(y1 + (y2 - y1) / (x2 - x1) * (x - x1)); } function hours2ms(hours) { return hours * 3600 * 1000; }
-
@AlCalzone cool! Sieht gut aus. Leider kenne ich mich in Java nicht aus und befürchte daher, dass ich es nicht an meine Bedürfnisse anpassen kann.
-
@loverz sagte in Adaptive Lighting [Sonne nachempfinden] Hue/Deconz:
Leider kenne ich mich in Java nicht aus
Solange du JavaScript kannst, ist ja alles gut
Spaß beiseite: Vielleicht stößt in der Zukunft noch jemand hierdrauf und kann es gebrauchen. Daher lieber posten als für mich behalten
-
sooo hab nochmal gebastelt und nun eine für mich sehr gute Lösung gefunden, welche ich mit euch teilen möchte:
Am Script welches den Sonnenverlauf von 0-100% darstellt hat sich nichts geändert:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="XDQa1(i@(RfxIe8Kx4V6">Minuten_Sonnenaufgang</variable> <variable id="`mwRBI?c:^D+*NiMXm#i">Minuten_Sonnenuntergang</variable> <variable id="SM|y}d]n:UvOxoI8L[(g">Sonne_Minutenspanne</variable> <variable id="/1T?^~g{_jFs+4|{rbg!">Position_Minutenspanne</variable> <variable id="qOk+z!p_/]Uu:2V:y,n5">Prozent_Sonnenverlauf</variable> </variables> <block type="schedule" id="mPL|$^F:)O/a,?c}_{9o" x="87" y="-187"> <field name="SCHEDULE">*/30 * * * * *</field> <statement name="STATEMENT"> <block type="controls_if" id="2ONtlu/@IL[*a1:X/Vj)"> <value name="IF0"> <block type="time_compare_ex" id=":x[EYY%LYGBBGuQP)vS)"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">not between</field> <value name="START_TIME"> <shadow type="text" id="`h]yLl-{FL.KYd%FIpx1"> <field name="TEXT">12:00</field> </shadow> <block type="time_astro" id="diCspd_,=MNygrN1f|{@"> <field name="TYPE">sunrise</field> <field name="OFFSET">0</field> </block> </value> <value name="END_TIME"> <shadow type="text" id="pML.t1T`Xg8*3TN0qJ}I"> <field name="TEXT">18:00</field> </shadow> <block type="time_astro" id="#KmV^Wk:RUw.Edt.e-`V"> <field name="TYPE">nauticalDusk</field> <field name="OFFSET">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="a:-C|LTW-WcB:g^j2H!?"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="$,z;Ek4:8`@Wp1=3xeoJ"> <field name="NUM">0</field> </block> </value> </block> </statement> <next> <block type="controls_if" id=",HdX.v@YotZ/pc?Usk}A"> <value name="IF0"> <block type="time_compare_ex" id="^)8}CSNFgRFFuB_Pd?M]"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">between</field> <value name="START_TIME"> <shadow type="text" id="0jw(|_l$YlGJ0u9b|6q-"> <field name="TEXT">12:00</field> </shadow> <block type="time_astro" id="1_4TjVnMi)GFiGSD{ci;"> <field name="TYPE">sunrise</field> <field name="OFFSET">0</field> </block> </value> <value name="END_TIME"> <shadow type="text" id="E|8ZkERhB}j567R(D6Qf"> <field name="TEXT">18:00</field> </shadow> <block type="time_astro" id="6;(sB3%j/.b:$FN|PAQQ"> <field name="TYPE">nauticalDusk</field> <field name="OFFSET">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="}kD([|K,~+,F9$=l6?^q"> <field name="VAR" id="XDQa1(i@(RfxIe8Kx4V6">Minuten_Sonnenaufgang</field> <value name="VALUE"> <block type="convert_from_date" id="8_2qNN5;bP@dVtA5*tcI"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">mid</field> <value name="VALUE"> <block type="time_astro" id="@i}+$@zhOu!`or`;R#rT"> <field name="TYPE">sunrise</field> <field name="OFFSET">0</field> </block> </value> </block> </value> <next> <block type="variables_set" id="fqFEJBa!Ec[k/0{uZxpJ"> <field name="VAR" id="`mwRBI?c:^D+*NiMXm#i">Minuten_Sonnenuntergang</field> <value name="VALUE"> <block type="convert_from_date" id=":#}AN4hkrR`(zKg(@j|4"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">mid</field> <value name="VALUE"> <block type="time_astro" id="4Ag`pjz6i%}P_#YFS2OV"> <field name="TYPE">nauticalDusk</field> <field name="OFFSET">0</field> </block> </value> </block> </value> <next> <block type="variables_set" id="9iM`s)($k0#J51!U0W.?"> <field name="VAR" id="SM|y}d]n:UvOxoI8L[(g">Sonne_Minutenspanne</field> <value name="VALUE"> <block type="math_arithmetic" id="yn1jRBiwr7{L_n~d},Q{"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="[pe;Vn88dKwgCmHZk*V{"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="bdoxH$hMqlck=JV!Ip~!"> <field name="VAR" id="`mwRBI?c:^D+*NiMXm#i">Minuten_Sonnenuntergang</field> </block> </value> <value name="B"> <shadow type="math_number" id="]9Yl.[e=/brmgZtS#zQp"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="]VA}c+NBr%LExuzO;B^-"> <field name="VAR" id="XDQa1(i@(RfxIe8Kx4V6">Minuten_Sonnenaufgang</field> </block> </value> </block> </value> <next> <block type="variables_set" id="I:2%^9Zf+%E{s/z0,tnE"> <field name="VAR" id="/1T?^~g{_jFs+4|{rbg!">Position_Minutenspanne</field> <value name="VALUE"> <block type="math_arithmetic" id="ZaT42Ly@u.y^B10ug@A9"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="5pHM#qmx+ftLMm%d(Yh5"> <field name="NUM">1</field> </shadow> <block type="time_get" id="`{^B5crk=c55IJec:BXY"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">mid</field> </block> </value> <value name="B"> <shadow type="math_number" id="GP`4mNtJ5OxW/sQ_1{f,"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Kl4_R:xV7xSW}KL,se`V"> <field name="VAR" id="XDQa1(i@(RfxIe8Kx4V6">Minuten_Sonnenaufgang</field> </block> </value> </block> </value> <next> <block type="variables_set" id="g?a?{5H/d@_DEaDZD3mu"> <field name="VAR" id="qOk+z!p_/]Uu:2V:y,n5">Prozent_Sonnenverlauf</field> <value name="VALUE"> <block type="math_rndfixed" id="$A%?_QqE@Z-W#,]w07/l"> <field name="n">1</field> <value name="x"> <shadow type="math_number" id="TgD^jp6c]`4rEls}T$GD"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="N.fqj#8YW!vUk_f!vX6B"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="#M1s5*6jq%!unvmL8:R{"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="gK)IxvE4QkW1hVAT8#iA"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="c-Ha;xI}VYu[/+s^@8zi"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="/vM(GDHjO?lj[Tznf{7e"> <field name="VAR" id="/1T?^~g{_jFs+4|{rbg!">Position_Minutenspanne</field> </block> </value> <value name="B"> <shadow type="math_number" id="PP0gN$ZR=^|C2|=24UZN"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="+hZ:BMGKl:{:hwj[V1(y"> <field name="VAR" id="SM|y}d]n:UvOxoI8L[(g">Sonne_Minutenspanne</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="*1vY_(]7f~x(t|`e+/PF"> <field name="NUM">100</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="control" id="M[i[xQlZ;H)am.n]d-ZX"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="@mnD+2LW#`87g@;o:Cj|"> <field name="VAR" id="qOk+z!p_/]Uu:2V:y,n5">Prozent_Sonnenverlauf</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </xml> <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="XDQa1(i@(RfxIe8Kx4V6">Minuten_Sonnenaufgang</variable> <variable id="`mwRBI?c:^D+*NiMXm#i">Minuten_Sonnenuntergang</variable> <variable id="SM|y}d]n:UvOxoI8L[(g">Sonne_Minutenspanne</variable> <variable id="/1T?^~g{_jFs+4|{rbg!">Position_Minutenspanne</variable> <variable id="qOk+z!p_/]Uu:2V:y,n5">Prozent_Sonnenverlauf</variable> </variables> <block type="schedule" id="mPL|$^F:)O/a,?c}_{9o" x="87" y="-187"> <field name="SCHEDULE">*/30 * * * * *</field> <statement name="STATEMENT"> <block type="controls_if" id="2ONtlu/@IL[*a1:X/Vj)"> <value name="IF0"> <block type="time_compare_ex" id=":x[EYY%LYGBBGuQP)vS)"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">not between</field> <value name="START_TIME"> <shadow type="text" id="`h]yLl-{FL.KYd%FIpx1"> <field name="TEXT">12:00</field> </shadow> <block type="time_astro" id="diCspd_,=MNygrN1f|{@"> <field name="TYPE">sunrise</field> <field name="OFFSET">0</field> </block> </value> <value name="END_TIME"> <shadow type="text" id="pML.t1T`Xg8*3TN0qJ}I"> <field name="TEXT">18:00</field> </shadow> <block type="time_astro" id="#KmV^Wk:RUw.Edt.e-`V"> <field name="TYPE">nauticalDusk</field> <field name="OFFSET">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="a:-C|LTW-WcB:g^j2H!?"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="$,z;Ek4:8`@Wp1=3xeoJ"> <field name="NUM">0</field> </block> </value> </block> </statement> <next> <block type="controls_if" id=",HdX.v@YotZ/pc?Usk}A"> <value name="IF0"> <block type="time_compare_ex" id="^)8}CSNFgRFFuB_Pd?M]"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">between</field> <value name="START_TIME"> <shadow type="text" id="0jw(|_l$YlGJ0u9b|6q-"> <field name="TEXT">12:00</field> </shadow> <block type="time_astro" id="1_4TjVnMi)GFiGSD{ci;"> <field name="TYPE">sunrise</field> <field name="OFFSET">0</field> </block> </value> <value name="END_TIME"> <shadow type="text" id="E|8ZkERhB}j567R(D6Qf"> <field name="TEXT">18:00</field> </shadow> <block type="time_astro" id="6;(sB3%j/.b:$FN|PAQQ"> <field name="TYPE">nauticalDusk</field> <field name="OFFSET">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="}kD([|K,~+,F9$=l6?^q"> <field name="VAR" id="XDQa1(i@(RfxIe8Kx4V6">Minuten_Sonnenaufgang</field> <value name="VALUE"> <block type="convert_from_date" id="8_2qNN5;bP@dVtA5*tcI"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">mid</field> <value name="VALUE"> <block type="time_astro" id="@i}+$@zhOu!`or`;R#rT"> <field name="TYPE">sunrise</field> <field name="OFFSET">0</field> </block> </value> </block> </value> <next> <block type="variables_set" id="fqFEJBa!Ec[k/0{uZxpJ"> <field name="VAR" id="`mwRBI?c:^D+*NiMXm#i">Minuten_Sonnenuntergang</field> <value name="VALUE"> <block type="convert_from_date" id=":#}AN4hkrR`(zKg(@j|4"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">mid</field> <value name="VALUE"> <block type="time_astro" id="4Ag`pjz6i%}P_#YFS2OV"> <field name="TYPE">nauticalDusk</field> <field name="OFFSET">0</field> </block> </value> </block> </value> <next> <block type="variables_set" id="9iM`s)($k0#J51!U0W.?"> <field name="VAR" id="SM|y}d]n:UvOxoI8L[(g">Sonne_Minutenspanne</field> <value name="VALUE"> <block type="math_arithmetic" id="yn1jRBiwr7{L_n~d},Q{"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="[pe;Vn88dKwgCmHZk*V{"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="bdoxH$hMqlck=JV!Ip~!"> <field name="VAR" id="`mwRBI?c:^D+*NiMXm#i">Minuten_Sonnenuntergang</field> </block> </value> <value name="B"> <shadow type="math_number" id="]9Yl.[e=/brmgZtS#zQp"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="]VA}c+NBr%LExuzO;B^-"> <field name="VAR" id="XDQa1(i@(RfxIe8Kx4V6">Minuten_Sonnenaufgang</field> </block> </value> </block> </value> <next> <block type="variables_set" id="I:2%^9Zf+%E{s/z0,tnE"> <field name="VAR" id="/1T?^~g{_jFs+4|{rbg!">Position_Minutenspanne</field> <value name="VALUE"> <block type="math_arithmetic" id="ZaT42Ly@u.y^B10ug@A9"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="5pHM#qmx+ftLMm%d(Yh5"> <field name="NUM">1</field> </shadow> <block type="time_get" id="`{^B5crk=c55IJec:BXY"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">mid</field> </block> </value> <value name="B"> <shadow type="math_number" id="GP`4mNtJ5OxW/sQ_1{f,"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Kl4_R:xV7xSW}KL,se`V"> <field name="VAR" id="XDQa1(i@(RfxIe8Kx4V6">Minuten_Sonnenaufgang</field> </block> </value> </block> </value> <next> <block type="variables_set" id="g?a?{5H/d@_DEaDZD3mu"> <field name="VAR" id="qOk+z!p_/]Uu:2V:y,n5">Prozent_Sonnenverlauf</field> <value name="VALUE"> <block type="math_rndfixed" id="$A%?_QqE@Z-W#,]w07/l"> <field name="n">1</field> <value name="x"> <shadow type="math_number" id="TgD^jp6c]`4rEls}T$GD"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="N.fqj#8YW!vUk_f!vX6B"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="#M1s5*6jq%!unvmL8:R{"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="gK)IxvE4QkW1hVAT8#iA"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="c-Ha;xI}VYu[/+s^@8zi"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="/vM(GDHjO?lj[Tznf{7e"> <field name="VAR" id="/1T?^~g{_jFs+4|{rbg!">Position_Minutenspanne</field> </block> </value> <value name="B"> <shadow type="math_number" id="PP0gN$ZR=^|C2|=24UZN"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="+hZ:BMGKl:{:hwj[V1(y"> <field name="VAR" id="SM|y}d]n:UvOxoI8L[(g">Sonne_Minutenspanne</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="*1vY_(]7f~x(t|`e+/PF"> <field name="NUM">100</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="control" id="M[i[xQlZ;H)am.n]d-ZX"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="@mnD+2LW#`87g@;o:Cj|"> <field name="VAR" id="qOk+z!p_/]Uu:2V:y,n5">Prozent_Sonnenverlauf</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </xml>
-
Anschließend kommt für jeden Raum bzw. Lichtkanal ein weiteres Script, welches die oben errechnete Prozentzahl in Farbtemperatur und Helligkeitswerte umsetzt.
Beide Werte sind über Variablen flexibel gehalten:<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="*J0h3H66Lh}#=mGt_6a^">Bri_Min</variable> <variable id="e:JnT/oK4RY;sPEkIUYX">Bri_Max</variable> <variable id="CD{frOx_JbK|vHvuDF]2">Bri_Range</variable> <variable id="{T7[V,ECyB(9og{b+p:X">CT_Min</variable> <variable id="dZ,bS.XNJ-3AMtu%%,h!">CT_Max</variable> <variable id="X`aPNAeyFPieq]{n]n,U">CT_Range</variable> <variable id="x2]0EQHx.{G(t5jpYMB(">Manuell_geändert</variable> <variable type="timeout" id="timeout">timeout</variable> <variable type="timeout" id="timeout2">timeout2</variable> <variable id="V2hgWi%p{Cg/]taWHI7L">Bri_Wert</variable> <variable id="ufM?rs80G4T5E;Ypwa*U">Ct_Wert</variable> </variables> <block type="variables_set" id="iG(m-4AnPjp4@S5K{Jq^" x="-110" y="-496"> <field name="VAR" id="*J0h3H66Lh}#=mGt_6a^">Bri_Min</field> <value name="VALUE"> <block type="math_number" id="XQu[2=#}jQ-/Ut5_*BD%"> <field name="NUM">120</field> </block> </value> <next> <block type="variables_set" id="G;UEOv3Dn8C,U4FGb.};"> <field name="VAR" id="e:JnT/oK4RY;sPEkIUYX">Bri_Max</field> <value name="VALUE"> <block type="math_number" id="IpS{RSo,PuIgv{k86Pv:"> <field name="NUM">255</field> </block> </value> <next> <block type="variables_set" id="ue+N4uN4hHhrZaqW5Z[L"> <field name="VAR" id="CD{frOx_JbK|vHvuDF]2">Bri_Range</field> <value name="VALUE"> <block type="math_arithmetic" id="J}V,~UIA_,{?w(@e$OO7"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="APwH?QMe2;z1;L(Q=?Eg"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="jvKIZ(X@|:{Rl/@XcxKB"> <field name="VAR" id="e:JnT/oK4RY;sPEkIUYX">Bri_Max</field> </block> </value> <value name="B"> <shadow type="math_number" id="nWE42l$QEP%AgrFN*Dmv"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="|R^pN#v8#bM|fxg];t1X"> <field name="VAR" id="*J0h3H66Lh}#=mGt_6a^">Bri_Min</field> </block> </value> </block> </value> <next> <block type="variables_set" id="}DH+Jtry+-K$|O44?Tj%"> <field name="VAR" id="{T7[V,ECyB(9og{b+p:X">CT_Min</field> <value name="VALUE"> <block type="math_number" id=";dzEp;?ajXB}*IwFJ@W9"> <field name="NUM">153</field> </block> </value> <next> <block type="variables_set" id="U/3^4:7YbQedHtXz7Tn["> <field name="VAR" id="dZ,bS.XNJ-3AMtu%%,h!">CT_Max</field> <value name="VALUE"> <block type="math_number" id="-n#rV.6|YePb~FOc*:FZ"> <field name="NUM">500</field> </block> </value> <next> <block type="variables_set" id="{N;BUJkv*6:TBWT!k@7Y"> <field name="VAR" id="X`aPNAeyFPieq]{n]n,U">CT_Range</field> <value name="VALUE"> <block type="math_arithmetic" id="KLZN@_w8C-$YZK2.U?@z"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="!6CtB*6;U(vQsmi}{:#o"> <field name="VAR" id="dZ,bS.XNJ-3AMtu%%,h!">CT_Max</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="/1#7xUt?aGh[@X4zF$MX"> <field name="VAR" id="{T7[V,ECyB(9og{b+p:X">CT_Min</field> </block> </value> </block> </value> <next> <block type="variables_set" id="A1V5^sVP,8fq78J=~u:0"> <field name="VAR" id="x2]0EQHx.{G(t5jpYMB(">Manuell_geändert</field> <value name="VALUE"> <block type="logic_boolean" id="6TYAXN]#uXFk{hBL3+0v"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="on_ext" id="lXQ]Rr;z.{-:KaK%rEY0"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="Nh-WGE+f@?!qWssL:?rK"> <field name="oid">knx.0.EG.Beleuchtung.Wohnzimmer_Spots_Status</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="U.0^KUV#*6l|=AU_,(rZ"> <field name="VAR" id="x2]0EQHx.{G(t5jpYMB(">Manuell_geändert</field> <value name="VALUE"> <block type="logic_boolean" id="A`u%Up/:x6,{$k@l$H~["> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="~EyeLk{*i%#d^CQ}kKx*"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="Ox6)8L7R7#*hw/+u;+sR"> <field name="oid">deconz.0.Groups.2.bri</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_settimeout" id="fgcQj53%vKO?+zc#X#};"> <field name="NAME">timeout</field> <field name="DELAY">500</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="controls_if" id="Y%t8~nAV(#,:$_iEO1y#"> <value name="IF0"> <block type="logic_compare" id="eA;WUt;qZ0DU8#2h$8U{"> <field name="OP">NEQ</field> <value name="A"> <block type="get_value" id="Iyc^)Sx!Cd8zuJXmX$iO"> <field name="ATTR">val</field> <field name="OID">deconz.0.Groups.2.bri</field> </block> </value> <value name="B"> <block type="variables_get" id="COA@Lw[XMu~7Y%!0.XCX"> <field name="VAR" id="V2hgWi%p{Cg/]taWHI7L">Bri_Wert</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="R:.D9_=WOg:)A^gl.:_)"> <field name="VAR" id="x2]0EQHx.{G(t5jpYMB(">Manuell_geändert</field> <value name="VALUE"> <block type="logic_boolean" id="4$:^Wx?.%`_`7B`fKFo^"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </statement> </block> </statement> <next> <block type="on_ext" id="COwNtKk`9i/sAE@5-F:e"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="}sB/!swok.o/BG*v|~oS"> <field name="oid">deconz.0.Groups.2.ct</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_settimeout" id="Z%S)i[O}4iy@_kI4;BNJ"> <field name="NAME">timeout2</field> <field name="DELAY">500</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="controls_if" id="D.0EA,VI,1cA(!Yog.Z}"> <value name="IF0"> <block type="logic_compare" id="A(,;$3uc#dO%h#Io5WuN"> <field name="OP">NEQ</field> <value name="A"> <block type="get_value" id="7lI8tQYES*!dfzn|eW~M"> <field name="ATTR">val</field> <field name="OID">deconz.0.Groups.2.ct</field> </block> </value> <value name="B"> <block type="variables_get" id="_uPIPD2aK]uK)q,bOg4X"> <field name="VAR" id="ufM?rs80G4T5E;Ypwa*U">Ct_Wert</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="pkI3:5c@7*bJdVd%LP7c"> <field name="VAR" id="x2]0EQHx.{G(t5jpYMB(">Manuell_geändert</field> <value name="VALUE"> <block type="logic_boolean" id="VcO.3$|3wN8qavb3g5*D"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </statement> </block> </statement> <next> <block type="on_ext" id="~,t!T)CXOH7+oJCzYj,7"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="?]eX`%1I*OhZe`8B5ini"> <field name="oid">knx.0.EG.Beleuchtung.Wohnzimmer_Spots_Status</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="dN{1][PSlqC~Af?t*,@h"> <field name="oid">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="~mZ+a!WQzv=Lgim9LMGi"> <value name="IF0"> <block type="logic_compare" id="nss].$u!Yzb(W/|KtYtD"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="jJ/@?D`z#*rU]X`nF;tt"> <field name="VAR" id="x2]0EQHx.{G(t5jpYMB(">Manuell_geändert</field> </block> </value> <value name="B"> <block type="logic_boolean" id="OU{^h8GzE?X0^]!a~AW,"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="P1s$-9o39nIH[o4kdRZ;"> <value name="IF0"> <block type="logic_compare" id="T$qWaA,tgb!z?rei#yKp"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="4Uk:+R%d}%$R1unThDQ$"> <field name="ATTR">val</field> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> </block> </value> <value name="B"> <block type="math_number" id="j21*t3tw9G/Rbg35L9T~"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="@6MMqUWUU0Pn{f{;7QpS"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">deconz.0.Groups.2.bri</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id=",8yGREmBQW+@y2?r!7BK"> <field name="NUM">55</field> </block> </value> <next> <block type="control" id="09H.*Y;63gW9_,~PDgXM"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">deconz.0.Groups.2.ct</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id=".cH?b99jp:v$sb0qrd:x"> <field name="NUM">500</field> </block> </value> </block> </next> </block> </statement> <next> <block type="comment" id="ar!erVw{2(aKvrb.6l0}"> <field name="COMMENT">Sonnenaufsstieg</field> <next> <block type="controls_if" id="fUL)t;Hh-FI~GTlaNS-Y"> <value name="IF0"> <block type="logic_operation" id="DiVkFx-eH(_!UzQxdIMZ" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="8-R{GsUgd3JEb(/)35tl"> <field name="OP">GTE</field> <value name="A"> <block type="get_value" id="7Fs-Af3-.`QT~PP9n?fi"> <field name="ATTR">val</field> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> </block> </value> <value name="B"> <block type="math_number" id="9(=J@Cy~B.kgF1*fU?*+"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="S]YTD!A_OxV#cY8~zFj%"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="+l2$1)8.pfWwT]Ds_hFs"> <field name="ATTR">val</field> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> </block> </value> <value name="B"> <block type="math_number" id="!7^cGd^fMZ1ByXNALLoe"> <field name="NUM">50</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="HHZ.IkyjM?-IyiSwpe8{"> <field name="VAR" id="V2hgWi%p{Cg/]taWHI7L">Bri_Wert</field> <value name="VALUE"> <block type="math_arithmetic" id="d!;IYMSYGMC{hx5Y`fV9"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="k1n1u#,mgTPYO;g$jr=b"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id=";!v[R.GpIG?TIU(,6CdG"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="]},v%.M=e)(bs~zy9]tD"> <field name="NUM">1</field> </shadow> <block type="get_value" id="sq~$gkN5r(!xb|i.DT`}"> <field name="ATTR">val</field> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> </block> </value> <value name="B"> <shadow type="math_number" id="Aj;-V!{jbOJm0$Sg*Zt-"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="1M:(uKY#Kvm4+nIad2HR"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="[,iV)mF7wQca6;Okprrm"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="%Br+ZRQ(6O5wXeka~n[?"> <field name="VAR" id="CD{frOx_JbK|vHvuDF]2">Bri_Range</field> </block> </value> <value name="B"> <shadow type="math_number" id="vc5{okmD@$H}+a1OOJ*p"> <field name="NUM">50</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="jyfzI0p6Cf{noDZq;^Ec"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="rDV~Y^Jgj4*E3s=I*+Z/"> <field name="VAR" id="*J0h3H66Lh}#=mGt_6a^">Bri_Min</field> </block> </value> </block> </value> <next> <block type="control" id="H9^]?~RUha6bH?m7XM?T"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">deconz.0.Groups.2.bri</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="S[l|V=o94%kQN5N,5}L."> <field name="VAR" id="V2hgWi%p{Cg/]taWHI7L">Bri_Wert</field> </block> </value> <next> <block type="variables_set" id="kjyYq$9sR37Sj4tRvz`X"> <field name="VAR" id="ufM?rs80G4T5E;Ypwa*U">Ct_Wert</field> <value name="VALUE"> <block type="math_arithmetic" id=":dxTHM*=kS~mv_B2m:/:"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="`7M.sjsQml%)eBq~|^#]"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="6*`mEsdc^f%`nY;(DR:j"> <field name="VAR" id="dZ,bS.XNJ-3AMtu%%,h!">CT_Max</field> </block> </value> <value name="B"> <shadow type="math_number" id="3JK=DkAreEcpiycVS~l)"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="|2YZ*W#I.q%Wsct.ZX{#"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="Rs+?~]~v#_J}fFshx)5A"> <field name="ATTR">val</field> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="HHoxZK!B.+Jw2=TG]5Tw"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="ptQ.JgsmRDmYA8KJ_IRX"> <field name="VAR" id="X`aPNAeyFPieq]{n]n,U">CT_Range</field> </block> </value> <value name="B"> <shadow type="math_number" id="Ho3=[E$8%L#;Q}XsvMj;"> <field name="NUM">50</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="control" id="q:4W[+h;I}U!55o2uhkH"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">deconz.0.Groups.2.ct</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="D3#z`]V,rJ:tE-ni3.C2"> <field name="VAR" id="ufM?rs80G4T5E;Ypwa*U">Ct_Wert</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="comment" id=",Pf.Vw(liQJ!BH:gIQ1v"> <field name="COMMENT">Sonnenabstieg</field> <next> <block type="controls_if" id="Q.t_t:U1o-Uu*vACgR}G"> <value name="IF0"> <block type="logic_operation" id="N?#8n/MKOyn=i:pecPS4" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="J)Xo*LT?f@;U}aqBtsKv"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="bu$)^y%MeFI#KjJ(fMaS"> <field name="ATTR">val</field> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> </block> </value> <value name="B"> <block type="math_number" id="3JP}o_#x#$9[seRgJ/+_"> <field name="NUM">50</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="Goi7K,(5%1r*q%h@`dZ9"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="fGT-Xoy%:T8cXS!nmx`n"> <field name="ATTR">val</field> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> </block> </value> <value name="B"> <block type="math_number" id="PxfYr@*.{f7xPVT;nx8X"> <field name="NUM">100</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="^jL)phF.CDX]C_!lZ]Z_"> <field name="VAR" id="V2hgWi%p{Cg/]taWHI7L">Bri_Wert</field> <value name="VALUE"> <block type="math_arithmetic" id="vwt=toWnxEEl^*17@}e0"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="o:Cv,{Cx6W`AYFi`pxWO"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="#r/B=#eCG6MQt4PDZ-|u"> <field name="VAR" id="e:JnT/oK4RY;sPEkIUYX">Bri_Max</field> </block> </value> <value name="B"> <shadow type="math_number" id="Vs*lrt~Ir?,)m@KKCV5b"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="5pmtZ,!}7UrM+rxQphRZ"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="V9bN`eN;=-Itw0`4o;BU"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="IjKZrJd7?@[.}SXUWlMK"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="v-QqsH{uDd:daX=[a9PS"> <field name="ATTR">val</field> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> </block> </value> <value name="B"> <shadow type="math_number" id="Z1!Z@wE|1_;vHa!=QB|("> <field name="NUM">50</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="4g!Q}{G_w4E.,@mdV^bE"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Mm}2C~7-Tj!eB8,F*K%h"> <field name="VAR" id="CD{frOx_JbK|vHvuDF]2">Bri_Range</field> </block> </value> <value name="B"> <shadow type="math_number" id="I$oR~%1OmFGQ]~zUjKe@"> <field name="NUM">50</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="control" id="W+$f+:DZ/wBH:enXT#eN"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">deconz.0.Groups.2.bri</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="QH)p#6$Q-uF#72[i}.H3"> <field name="VAR" id="V2hgWi%p{Cg/]taWHI7L">Bri_Wert</field> </block> </value> <next> <block type="variables_set" id="VL$cj%CVjKgvU;(8;QpN"> <field name="VAR" id="ufM?rs80G4T5E;Ypwa*U">Ct_Wert</field> <value name="VALUE"> <block type="math_arithmetic" id="-q[5CA/u%FU[K8xqv~N["> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="q7t69L{xHQ9-cOc,[Nkj"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="@54C+*wz*VNBL$E()$6{"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="8Mr!,G)f4gTk(`12L8xt"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="Nfs%6qN-5yvVbIFJJX|F"> <field name="NUM">1</field> </shadow> <block type="get_value" id="2=~:71+a;WLc+EiTsWRU"> <field name="ATTR">val</field> <field name="OID">javascript.0.Variablen.Beleuchtung.Adaptive_Lighting.Sonnenstand</field> </block> </value> <value name="B"> <shadow type="math_number" id="/61FKH|L+TpcmbgdGQE;"> <field name="NUM">50</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="D4TqY5_l`5[c#q10deWZ"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="ai#wPBw;hVG0h]NDhc_`"> <field name="VAR" id="X`aPNAeyFPieq]{n]n,U">CT_Range</field> </block> </value> <value name="B"> <shadow type="math_number" id="!NrAh=A@8u,UC0l.]w@p"> <field name="NUM">50</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="^/o$5cL8%Ko79/S|!aes"> <field name="VAR" id="{T7[V,ECyB(9og{b+p:X">CT_Min</field> </block> </value> </block> </value> <next> <block type="control" id="hF2Y5nm6970v7D1w]0S]"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">deconz.0.Groups.2.ct</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id=",R{Vw?9WhsvAtE=@N)+?"> <field name="VAR" id="ufM?rs80G4T5E;Ypwa*U">Ct_Wert</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
-
@loverz Danke für das Skript, welches den Sonnenstand prozentual ausrechnet!
Ich schaue mir heute mal an, welche Werte ich von dem Skript erhalte. Wenn das gut funktioniert, werde ich mir wohl eigene Logiken bauen, die mir die Helligkeits- und CT Werte einiger Lampen Sonnenstandsabhänig setzen. -
@loverz Hi und danke erstmal für deine Arbeit und ein frohes neues Jahr. Ich habe das Blockly soeben mal für einen Raum testweise übernommen und es scheint zu funktionieren. Echt super. Kannst du mir aber bitte noch den hier markierten Block erklären?
Was genau gibt dieser "Status"-Wert bei dir wieder? Ich habe den bei meinen Lampen/Lichtgruppen nicht.
Nachtrag: Kann es sein das da ein kleiner Fehler drin ist uns es eigentlich heißen sollte: "setze manuell geändert auf wahr"? Dann kann ich mir einen Reim draus machen, dass das Licht nicht angehen soll, wenn man es selber ausgeschaltet hat.
-
@kenny384 freut mich, dass du mit meiner Arbeit etwas anfangen konntest, wünsche auch ein frohes Neues!
Der Punkt "manuell geändert" legt fest, ob jemand die Helligkeit, oder Lichtfarbe händisch abseits dieser Logik geändert hat. Schließlich möchte man diesen händischen Wert ja nicht durch die Logik überschreiben.
Wenn jemand absichtlich etwas verändert hat, dann wird dieser Wert auf "true" gesetzt und die Logik so lange außer Kraft gesetzt, bis sich die Lampe aus- oder ein-geschaltet hat.Eigentlich würde es reichen diesen Wert nur dann auf "false" zu setzen, wenn die Lampe wieder eingeschaltet wird, aber durch den Reset, der auch beim Ausschalten erfolgt wird die Logik auch dann bearbeitet, wenn die Lampe aus ist, sodass beim Einschalten sofort die richtigen Werte zur Verfügung stehen.
Zur Sicherheit setze ich den Wert einfach beim Aus- und beim Ein-schalten auf "false" zurück Schadet nicht -
@loverz Ah, okay, verstehe. Dann habe ich aber tatsächlich ein Problem, das bei mir genau so umzusetzen oder hast du einen Tipp? Bei mir (zigbee-Lampen am Conbee 2-Stick via Deconz-Adapter) schalten sich Lampen grundsätzlich immer ein, wenn ich den Wert für die Brightness ändere.
Dadurch habe ich das Problem, dass bei dem Blockly wie du es nutzt das Licht quasi nicht mehr ausgeht. Denn er passt ja ständig den Wert für die Brightness im Hintergrund an und schaltet dadurch das Licht wieder an.Also nichts was sich nicht einfach mit einer zusätzlichen Variable "Licht_ist_an" beheben lassen würde, aber vielleicht hast du das ja auch unterwegs gehabt das Problem?!
-
@kenny384 Ich schalte meinen Strom tatsächlich aus, wenn die Lampen aus sind, weshalb meine Lampen (obwohl ich auch Zigbee an Conbee-2 nutze) nicht automatisch angehen, wenn sich an den Werten etwas ändert.
In deinem Fall könnte man ja diese Variable "manuell geändert" ja dann auf True setzen, wenn die Helligkeit 0% erreicht hat, oder der Status "On" der jeweiligen Lampe auf "false" (also aus) ist.
Somit verliert diese Logik hier seine Wirkung und sendet erstmal keine Werte mehr.
Wenn die Helligkeit wieder Größer 0, oder die Lampe an (Status "On" = "true") ist, dann soll die Variable "manuell geändert" wieder auf "false" gesetzt werde.
Lässt sich in Blockly einfach bewerkstelligen denke ich.
-
@loverz Leider will das ganze bei mir doch nicht so recht funktionieren. Ich habe auch mehrere Lampen, die quasi komplett vom Strom genommen werden, wenn sie aus sind, über einen Shelly. Also quasi das selbe Konstrukt wie bei dir. Das Skript schreibt auch fleißig die Brightness und CT um im Hintergrund, konnte ich beobachten. Schalte ich eine dieser Lampen aber nun wieder ein, startet dieses mit der letzten Einstellung und überschreibt die Brightness und CT einfach wieder. Quasi nach dem Motto "Das letzte Wort hat noch immer die Lampe und nicht iobroker"...
Zusätzlich glaube ich, dass dann auch folgende Änderungen der Einstellungen nicht mehr übernommen werden, weil er die Variable "Manuell geändert" wahrscheinlich auf "wahr" setzt, denn die Werte wurden ja geändert und stimmen nicht mit dem überein, was das Skript vorgegeben hat. Damit setzt er weitere Änderungen dann ja aus bis zum nächsten aus/anschalten.
-
@kenny384 so ist es.
Da deine Lampen den letzten Wert NACH dem Einschalten schreiben, sieht es so aus, als hättest du manuell geändert.Nun könnte man einstellen, dass (sagen wir ca. ) 5 Sekunden nach dem Einschalten der Wert meines Scriptes einmal geschrieben und an die Lampen gesendet wird und anschließend die Variable „manuell geändert“ wieder auf „false“ geschrieben wird.
-
@loverz hi Loverz ich bin gerade über diesen Thread gestolpert weil ich mir auch ein adaptive light bauen will.
Das erste Script habe ich mal importiert und einen Datenpunkt angelegt, der den %-Wert des Sonnenstands aufnimmt. Allerdings steige ich bei deinen 2. Script aus. Kannst du verraten was für Datenpunkte manuell angelegt werden?
Ich habe in meinem Setup 3 HUE Lampen im Wohnzimmer und im ioBroker den Hue und hue extended Adapter installiert. In deinen Script taucht nach dem Import was mit KNX auf. Vermute das sind Geräte von dir? Wäre super wenn du noch etwas Hilfestellung geben könntest wie man die Hue Lampen rein bekommt in das Script und was man für Datenpunkte anlegen muss. -
Danke fürs Teilen deines Scripts @loverz !
Der Sonnenstand wird korrekt berechnet. Leider habe ich noch Issues mit der Steuerung.
Helligkeit scheint ersoweitmanchmal zu steuern. Nach manuellem Eingreifen geht meist nichts mehr.
Beim CT Wert habe ich das Problem, dass er Werte schreibt, die außerhalb der CT-Range meiner Birne liegen.
Muss das im oberen Teil definiert werden? Da würden die vorhandenen Werte für mich keinen Sinn ergeben:
Des Weiteren hätte ich auch die Herausforderung, dass bei mir Strom immer anliegt.
Würde mich mal interessieren, ob und wie @kenny384 das gelöst hat.Danke für Eure Hilfe und LG
-
@phil-ipp genau, die oberen, von dir gelb markierten Werte geben die jeweilig maximal, oder minimal gewünschten Werte an. Die %-Zahl vom Sonnenstand gibt dann an, wo wir uns aktuell in diesem Bereich befinden.
Wenn deine CT z.B. nicht bis 500 geht, ist klar, dass hier ein Wert außerhalb deiner Range geschrieben wird. Da muss dein gewünschter Max-Wert eingetragen werden.Bezüglich des Resets bei manuellem Eingriff:
Wenn deine Lampen immer am Strom hängen, dann kannst du die Variable "Manuell_geändert" natürlich nicht mit Strom (bei mir Wohnzimmer_Spots_Status) zurücksetzen. Vielleicht wäre das bei dir möglich, sobald deine Helligkeit 0% erreicht hat, denn dann sind deine Lampen aus. -
@accu ich hab dir hier nochmal eine kleine Erklärung dazugeschrieben:
KNX kommt bei mir nur ins Spiel um abzufragen, wann die Lampe an, oder aus geht. Das kannst du bei Hue mit dem Objekt "On" machen, einfach die beiden Punkte austauschen.
Alles was bei mir an "Deconz" geht, muss bei dir über den "Hue-Adapter" laufen. Deconz ist der Adapter, der bei mir die Hue Lampen ansteuert. -
@loverz super, danke für deine AW, das hilft!
Hatte mich bei den CT Werten nur gewundert. Bei den yeelights wird sie in Kelvin geregelt. Das spielt sich idR in einem Bereich von 2700K (warmweiß) bis 6500K (kaltweiß) ab. Deswegen kamen mir die 3-stelligen Werte nur etwas komisch vor ,)
Ich spiel mal weiter rum und melde mich.
Schönen Sonntag,
p