NEWS
Adaptive Lighting [Sonne nachempfinden] Hue/Deconz
-
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 -
@phil-ipp danke gleichfalls! Der Yeelight-Adapter ist sehr buggy wie ich rausgefunden habe, also nicht wundern, wenn etwas nicht so funktioniert wie es soll, das muss nicht an mir liegen
-
@loverz
mal ein paar tage beobachten, aber scheint soweit zu klappen - top!
jetzt halt nur noch auf fünf trillionen lights/groups anpassen ,)der yeelight adapter ist tatsächlich das schwächste glied in der kette.
sie sterben zwar langsam zugunsten von zigbee aus, aber leider habe ich noch ein paar ältere wifi birnen und ein 3 wifi decken yeelights zu steuern. muss mich mal nach alternativen steuerungsmethoden schlau machen... -
@phil-ipp dito, aber ich habe 2 Yeelight Deckenlampen mit Sternenhimmel und farbigen Background-Licht. Die sind einfach konkurrenzlos, da es sowas hier in Deutschland gar nicht gibt, schon garnicht mit Zigbee...
-
@phil-ipp Moin, ich habe das mit den Lampen, die immer am Strom hängen folgendermaßen gelöst:
Generell setze ich immer wenn der Raum angeschaltet wurde kurz danach die Variable "manuell geändert" erstmal auf falsch und eine von mir hinzugefügte Variable "Licht ist an" auf wahr.
Die Variable kann ich dann weiter unten im Script immer zuerst abfragen. So macht er quasi nichts, wenn nicht das Licht an ist:
Bei der Übernahme der Werte für Bri und CT habe ich dann relativ lange Verzögerungen eingebaut (mehrere Sekunden), da ich festgestellt habe, dass diese sonst nicht zuverlässig nach dem anschalten übernommen werden (zu viele Signale auf einmal, die die Lampe verarbeiten soll).
So läuft es bei mir eigentlich jetzt komplett zuverlässig. Die Lampen schalten sich dann halt nur erstmal mit dem zuletzt gespeicherten Wert ein und dimmen dann nach wenigen Sekunden auf die aktuelle Helligkeit und Lichtfarbe. Das ist die einzige kleine Krücke dabei. Man bekommt also live mit, wie die Lampen sich nach dem Einschalten nachjustieren.
-
@kenny384 das mit der Verzögerung brauche ich auch, da mein Strom der Lampen ja über KNX komplett abgeschaltet wird.
Bei Einschalten braucht das Zigbee (bei mir über Deconz) immer eine kurze Zeit his es Signale aufnehmen kann.Ich habe mir schon überlegt den Einschaltwert nach dem Strom-Einschalten zyklisch für sagen wir 10 Sekunden zu senden. So eine Art polling, damit das Ganze schneller geht.
Edit: Sowas hier meine ich:
Der letzte Einschaltwert kann nämlich ganz schön eklig sein
-
@loverz super danke für die schnelle Antwort.
D.h. aber dann dass ich die Zeile: "knx.0.EG.Beleuchtung.Wohnzimmer_Spots_Status" bei mir nicht benötige? Da ja meine Hue Lampen immer AN sind und am Strom hängen, richtig? -
@accu ich nutze diesen Status halt als Indikator, wann die Lampen eingeschaltet werden um anschließend die entsprechende Farbtemperatur zu senden.
Du müsstest es dann so umbauen, dass es das bei dir anhand des .On Status deiner Hues erkannt wird.