NEWS
Das Ultimative Markisen / Rolladen Blockly - Script
-
Bin nicht der Blockly-Typ, aber ich schätze du brauchst einen zweiten Block (im gleichen Skript) mit Schedule (nicht Schleife), der die Helligkeit überwacht und die Berechnung der Badewannenvariable (bzw. State) übernimmt.
In deinem Hauptblock überwachst du dann diesen State statt direkt die Helligkeit und reagierst entsprechend. Dürfte auch den Hauptblock etwas vereinfachen.
-
Bin nicht der Blockly-Typ, aber ich schätze du brauchst einen zweiten Block (im gleichen Skript) mit Schedule (nicht Schleife), der die Helligkeit überwacht und die Berechnung der Badewannenvariable (bzw. State) übernimmt.
In deinem Hauptblock überwachst du dann diesen State statt direkt die Helligkeit und reagierst entsprechend. Dürfte auch den Hauptblock etwas vereinfachen. `
Ja Schleife war wohl nicht der richtige Ansatz, grundsätzlich meinte ich auch eine zeitgesteuerte Abfrage, sowas hatte ich in IPSymcon.Das sehe ich auch als vorteilhafter an - verkleinert den Hauptblock und ist auch eindeutiger mit der zeitgesteuerten Abfrage.
Komme momentan mit den Timeouts gut klar, aber hab trotzdem interessehalber gerade mal überlegt wie man das in Blockly machen könnte.
So vielleicht?
filename="Helligkeitszähler mit Zeitplan.png" index="0">~~
Dabei ist mir aufgefallen dass ich nur einen Baustein "erhöhe um" finden konnte und nicht "verringere um"…Kann man mit "-1" arbeiten?
-
Kann man mit "-1" arbeiten? `
2 + -1 = 1Du kannst aber auch so arbeiten.
Ich hatte Dir schon am Anfang empfohlen alles in mehrere Blocklys zu packen. :roll:
Grüße
-
Denkanstoß, wurde an anderer Stelle auch Badewannenprinzip getauft und für Anwesenheitserkennung verwendet:
Du hast eine Zählervariable für die Helligkeit.
In regelmäßigen Abständen (z.B. jede Minute) wird die Helligkeit gemessen und wenn diese über einem bestimmten Wert liegt, die Zählervariable um eine bestimmte Menge erhöht. Allerdings nur bis zu einem Maximalwert (Badewanne voll)
Ebenfalls in regelmäßigen Abständen wird von dieser Zählervariable ein fixer Wert abgezogen (Abfluss ist offen), sofern die Variable > 0 ist.
Anhand des Wertes der Zählervariable wird dann entschieden, ob es hell ist oder nicht:
0 ... A | ... | B ... max dunkel ? hell
Das erfordert natürlich tuning der Parameter, kann aber dein System träge genug machen, dass es nicht bei jeder Wolke denkt es ist dunkel und trotzdem zügig reagiert. `
Hier gibts das "Badewannenprinzip"
http://forum.iobroker.net/viewtopic.php … zip#p45130
Grüße
-
Ich habe das Badewannenprinzip in Blockly für die Rolladensteuerung / Markisensteuerung nun mal umgesetzt und test es aus.
Läuft nun weitegehend mit extern angelegten Variablen.
So sieht die Abfrage aus:
Und so sieht dann das separate Blockly zum Ausfahren der Rolläden aus (deutlich aufgeräumter und ohne Timeouts):
Danke nochmal für die weiterführende Hilfe.
Es sind also nun 3 separate Blockly Scripte. Im Anhang zum Download falls das schon jemanden weiterhelfen kann.
Nächste Ziele sind:
-
Temperaturdifferenz-Messung hinter einer Glasscheibe um die Sonnenergie genauer zu erfassen (als Alternative zur Helligkeit)
-
Energiegewinnungs - Modus: Wetterdaten vorhersehen und dadurch intelligent die Wohnung mit Sonnenenergie "aufladen", falls es Abends/Nachts wieder sehr kühl wird. Dementsprechend soll die Beschattung natürlich anders reagieren.
-
-
Nächste Ziele sind:
-
Temperaturdifferenz-Messung hinter einer Glasscheibe um die Sonnenergie genauer zu erfassen (als Alternative zur Helligkeit)
-
Energiegewinnungs - Modus: Wetterdaten vorhersehen und dadurch intelligent die Wohnung mit Sonnenenergie "aufladen", falls es Abends/Nachts wieder sehr kühl wird. Dementsprechend soll die Beschattung natürlich anders reagieren. `
Na, mit Kleinigkeiten gibst Du Dich nicht ab.
Man wächst mit den Aufgaben
Falls Du Hilfe brauchst…..hier gibt es Helfer.
Grüße
-
-
So ich war heute zusammen mit einem guten Freund wieder fleißig und habe das Beschattungs Script weiter optimiert.
Hinzugekommen ist nun eine Abfrage, ob ich Sonnenergie nutzen oder Sonnenenergie aussperren möchte.
Dies unterscheidet sich je nach Jahreszeit, Außentemperatur und Innentemperatur.
Wenn es also Herbst / Winter ist, und die Temperaturen bereits kühl sind (Ich messe Nachts um 3h die Außentemperatur), dann sollen die Beschattungen so viel wie möglich eingefahren bleiben, damit Sonnenenergie reinkommt. Umgekehrt im Sommer, sollen sie die Energie aussperren.
Dieses Script hat aber ebenfalls noch Einfluss auf die Steuerung der Fußbodenheizung und der Klimaanlage.
So soll die Klimaanlage natürlich nicht laufen, wenn ich Energie gewinnen möchte. Umgekehrt soll die Fußbodenheizung nicht laufen, wenn ich Energie aussperren möchte.
Die Vorhersage der Sonnenenergie nutze ich nur für das Heizungsscript. Beschattung bleibt davon vorerst unberührt.
-
Das Beschattungs - Blockly ist vorerst fertig und wurde nun recht ausgiebig getestet, es läuft sehr gut.
Es sind 5 Scripte die damit verknüpft sind.
Hier mal ein Überblück wie es läuft:
1. Gewünschte Innentemperatur festlegen und anhand dessen auswerten ob diese auch hinhaut oder es zu warm oder zu kühl ist.
2. Anhand von Jahreszeit, und der vorher beschriebenen Wunschtemperatur festlegen ob Energie gewonnen oder Energie ausgesperrt werden soll.
3. Alle relevanten Wetterdaten außen erfassen (Sonne, Wind, Regen) - Sonne nach Badewannen Prinzip, also mit Verzögerung damit die Beschattung nicht ständig rein und raus geht.
4. Die Beschattung / Rolläden anhand der vorher erfassten Werte intelligent nach Sonne (verzögert) runtefahren oder reinfahren.
5. Die Beschattung bei kritischen Werten wie Regen oder Wind sofort (ohne Verzögerung) einfahren.
In den txt Dateien sind die entsprechenden Blockly Exporte.
Viel Spaß damit, ich hoffe dem einen oder anderen kann es helfen.
Vielen Dank an rantanplan an die Unterstützung sowie alle anderen.
Dieselben Klimadaten werden auch genutzt, um die Fußbodenheizung zu steuern. Siehe hier:
FußbodenheizungStand: 21.04.2019
-
3. Alle relevanten Wetterdaten außen erfassen (Sonne, Wind, Regen) - Sonne nach Badewannen Prinzip, also mit Verzögerung damit die Beschattung nicht ständig rein und raus geht.
Klimadaten außen erfassen.png `
Hallo Smile
Welche Wetterstation benutzt du hier genau?
Gruß
Adrian
-
3. Alle relevanten Wetterdaten außen erfassen (Sonne, Wind, Regen) - Sonne nach Badewannen Prinzip, also mit Verzögerung damit die Beschattung nicht ständig rein und raus geht.
Klimadaten außen erfassen.png
Welche Wetterstation benutzt du hier genau?
Für Wind und Helligkeit nehme ich die Homematic https://www.elv.de/homematic-funk-kombisensor.html?refid=SEM_30003?refid=SEM_30003&gclid=Cj0KCQjw1JbPBRCrARIsAOKj2Pm9K26HTuisSm53V9Wv-rZnurMx5b0tCHj5J7ZrW6dbFkEaf235htgaArRxEALw_wcBHelligkeit funktioniert jedoch nur bedingt, denn hell ist es nach der Wetterstation auch wenn es hell ist aber die Sonne nicht wirklich scheint.
Deshalb gibt es die vielen Verknüpfungen zu den Temperaturen. Zusammen mit dem Script läuft das aber sehr gut so.
Für Regensensorik kannst du das Ding jedoch knicken, da nehme ich einen normalen https://www.conrad.de/de/regenmelder-1-st-regme-12-v-b-b-thermo-technik-l-x-b-x-h-85-x-85-x-60-mm-187621.html?gclid=Cj0KCQjw1JbPBRCrARIsAOKj2PnrI5m3oiqBtBXm-XfZl6PmDYKt_3nPqHuv76bErSJH9NTycpl-r6caAnx2EALw_wcB&insert_kz=VQ&ef_id=WPIDoQAABAgKVK-e:20171017204736:s welcher einen umgebauten Homematic Fensterkontakt schaltet.
Geht sicherlich auch mit dem Homematic Regensensor, jedoch hatte ich mit dem auch mal Zuverlässigkeits-Probleme, daher diese Lösung.
-
Hallo Smile!
Könntest du bitte dein "Klimadatenaußenerfassen.txt" nochmals hochladen.
Ich bekomme einen Import Error.
Danke im Voraus
Liebe Grüße
-
Na klar, hier kommt es nochmal neu, als TXT und hier als Code.
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="schedule" id="!LT)#j}MPt[UXkpKSgaH" x="-938" y="-3312"><field name="SCHEDULE">*/2 * * * *</field> <statement name="STATEMENT"><block type="comment" id="14}z2@Y0`tb8dLOwV4_#"><field name="COMMENT">Abfrage Sonne Vormittag</field> <next><block type="controls_if" id="t7yCKxf:b#O:O#.mTcm0"><value name="IF0"><block type="logic_compare" id="E9e]QBwXCT`1y|{v?=zU"><field name="OP">GT</field> <value name="A"><block type="get_value" id="}l*BsjV(Ly;R`TLR#ygG"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.BRIGHTNESS</field></block></value> <value name="B"><block type="math_number" id="T1]py,8=Mr}?*wc;deL["><field name="NUM">201</field></block></value></block></value> <statement name="DO0"><block type="controls_if" id=",X,[,Ro9G0)12.^Yeq:A"><value name="IF0"><block type="logic_compare" id=")k5uB?0~qs-.DY}l?M;R"><field name="OP">LT</field> <value name="A"><block type="get_value" id="d?r7,5KPl4Qr~nqK!wEt"><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne</field></block></value> <value name="B"><block type="math_number" id="SZs8Ov!bkM1]G,smqrlm"><field name="NUM">5</field></block></value></block></value> <statement name="DO0"><block type="control" id="bQ={G~at|PPqm1zl;v0Q"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Count_Sonne</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_arithmetic" id=",g5B[~3az!AUK-_u62U?"><field name="OP">ADD</field> <value name="A"><shadow type="math_number" id="nMRH}I.JPiB^vn+{ztFe"><field name="NUM">1</field></shadow> <block type="get_value" id="1%}X`^lx8/5G-w|~G5.N"><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne</field></block></value> <value name="B"><shadow type="math_number" id="H0[*xZdkWMmLt;QlM4TC"><field name="NUM">2.5</field></shadow></value></block></value></block></statement></block></statement> <next><block type="controls_if" id="T2nEKl1l~:gpzIn[cw[v"><value name="IF0"><block type="logic_compare" id="|(zjR2;f.0+Y0yq#Vu1n"><field name="OP">LT</field> <value name="A"><block type="get_value" id="H~nQMQ|b{.QVj,_KO{J0"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.BRIGHTNESS</field></block></value> <value name="B"><block type="math_number" id="aVcOp`H|]2Gs}WWoG_Ee"><field name="NUM">200</field></block></value></block></value> <statement name="DO0"><block type="controls_if" id=")vIke:QSu)U1=r|a=F%s"><value name="IF0"><block type="logic_compare" id="U|zezrE^_Dz{i6nHr2~d"><field name="OP">GT</field> <value name="A"><block type="get_value" id="BQV.=S!0wA};O_tq0CW?"><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne</field></block></value> <value name="B"><block type="math_number" id="ppO!s_(~|oC1srIenB=o"><field name="NUM">0</field></block></value></block></value> <statement name="DO0"><block type="control" id="94#BMt`V1=p,y0BjWeI("><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Count_Sonne</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_arithmetic" id="uM)sV9;Cl-MTQpXSciKY"><field name="OP">MINUS</field> <value name="A"><shadow type="math_number" id="nMRH}I.JPiB^vn+{ztFe"><field name="NUM">1</field></shadow> <block type="get_value" id="Fj,a#Sbc|JLHamxdvjI]"><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne</field></block></value> <value name="B"><shadow type="math_number" id="@LXQipW3MJ`k!7@cBJ)!"><field name="NUM">1</field></shadow></value></block></value></block></statement></block></statement> <next><block type="controls_if" id="U;DVO:.?Qb5i:xucQN4,"><value name="IF0"><block type="logic_operation" id="6^}f7@j6oR5;Z=m5qo7e" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id=";yu9X~U@gCG7]hu|N+CC"><field name="OP">GTE</field> <value name="A"><block type="get_value" id="HCT!-SFF#?V4C}hZ6vw["><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne</field></block></value> <value name="B"><block type="math_number" id=";9[S+4G!!ZGP.yn}dGBQ"><field name="NUM">5</field></block></value></block></value> <value name="B"><block type="logic_compare" id="a}qpvtwrGWZ{mq@RwZu:"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="sJz4!qJ~2ymGA`+0jhI~"><field name="ATTR">val</field> <field name="OID">javascript.0.Sonne vormittag</field></block></value> <value name="B"><block type="logic_boolean" id="qGsul^y.sa|pxCU4`ftF"><field name="BOOL">FALSE</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="LzY2y7N|];DFJhpsr*GF"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Sonne vormittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="X6}CStLs/,agz1r*)Qg4"><field name="BOOL">TRUE</field></block></value> <next><block type="debug" id="aNXkXdXVkN)/q6~g?iuw"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="]E;|kP1P~%KjOa|~1_.G"><field name="TEXT">***Sonne vormittag da</field></shadow></value></block></next></block></statement> <next><block type="controls_if" id="Nld)#@oM(7bQXsl!ka:R"><value name="IF0"><block type="logic_operation" id="%JN-]kpYmfVO/+K:bNvA" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="|}I14xq7E0k!Iu`.pIdL"><field name="OP">LTE</field> <value name="A"><block type="get_value" id=":H):wT:?1qh_g#m}qiqr"><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne</field></block></value> <value name="B"><block type="math_number" id="UdE!|W5[=RsEw@hYdQ]Q"><field name="NUM">0</field></block></value></block></value> <value name="B"><block type="logic_compare" id="1-G~.wFPh1:/T(..%h!D"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="QD.,}wQQC[3yb!X]TWbR"><field name="ATTR">val</field> <field name="OID">javascript.0.Sonne vormittag</field></block></value> <value name="B"><block type="logic_boolean" id="2uioy}D_@l(5VPPD8SRu"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="oLwRwTiMa_VHDTJ?Wuwc"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Sonne vormittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="j)8?TDqL#ob(}3%?AU*%"><field name="BOOL">FALSE</field></block></value> <next><block type="debug" id="CBvLn^xu0jpzRT0PSG|k"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="vnYEqh.!ihiX`PcU@,Y-"><field name="TEXT">***Sonne vormittag weg</field></shadow></value></block></next></block></statement> <next><block type="comment" id="fb!tZTKi(lMo~rlxd[IR"><field name="COMMENT">Abfrage Sonne Nachmittag</field> <next><block type="controls_if" id="9,jPH9@.DKY16K3zQoNE"><value name="IF0"><block type="logic_compare" id="v;=}p)8kn2@)O~M/]A={"><field name="OP">GT</field> <value name="A"><block type="get_value" id="alF%|DBVoLMpo~rf?EvA"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.BRIGHTNESS</field></block></value> <value name="B"><block type="math_number" id="=Z+hc=SJZH/N1H;aPIe{"><field name="NUM">195</field></block></value></block></value> <statement name="DO0"><block type="controls_if" id="Rn]IyQC/]bnFt9:-C8U;"><value name="IF0"><block type="logic_compare" id="Xz_~.8YsCRExFR;U9KRT"><field name="OP">LT</field> <value name="A"><block type="get_value" id="8[3;*d31D4%_h%`*;@nh"><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne_Nachmittag</field></block></value> <value name="B"><block type="math_number" id="_CL:TdIFx{!yFZaJ;uo;"><field name="NUM">5</field></block></value></block></value> <statement name="DO0"><block type="control" id="9v;:)+2ug~n_3vW6Z);("><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Count_Sonne_Nachmittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_arithmetic" id="GHlZ:1_aW6U0LFp)Bz`5"><field name="OP">ADD</field> <value name="A"><shadow type="math_number" id="nMRH}I.JPiB^vn+{ztFe"><field name="NUM">1</field></shadow> <block type="get_value" id="@%uiNy0n?7_jGQAX+(aG"><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne_Nachmittag</field></block></value> <value name="B"><shadow type="math_number" id="1MiEb2r6ERxq{;`H+_m)"><field name="NUM">2.5</field></shadow></value></block></value></block></statement></block></statement> <next><block type="controls_if" id="FY*_Ui+K?Wk)0L31xLTm"><value name="IF0"><block type="logic_compare" id="m5O5n}DG6r*)^MbgH8b:"><field name="OP">LT</field> <value name="A"><block type="get_value" id="z4NGJ8pn(bXFs0^#UX78"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.BRIGHTNESS</field></block></value> <value name="B"><block type="math_number" id=")[.{^lnfj.l]5rXSO%-U"><field name="NUM">195</field></block></value></block></value> <statement name="DO0"><block type="controls_if" id="?+_/[{bJo#j_%kd{v~sK"><value name="IF0"><block type="logic_compare" id="bScqjjgFCl9bqPD2MUU("><field name="OP">GT</field> <value name="A"><block type="get_value" id="5;Oy]TqxrrJJoDm=;Cce"><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne_Nachmittag</field></block></value> <value name="B"><block type="math_number" id="@5Y8?|+lE;[*42]tvDHq"><field name="NUM">0</field></block></value></block></value> <statement name="DO0"><block type="control" id="xnJb|G8@Sz6*PBqLLnk["><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Count_Sonne_Nachmittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_arithmetic" id="I8YR}H|i|7!;g!#]vjeH"><field name="OP">MINUS</field> <value name="A"><shadow type="math_number" id="nMRH}I.JPiB^vn+{ztFe"><field name="NUM">1</field></shadow> <block type="get_value" id="a=YMs9gocb/9RnNyP*Xv"><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne_Nachmittag</field></block></value> <value name="B"><shadow type="math_number" id="tleKjpnRNcQjOlSG)WbU"><field name="NUM">1</field></shadow></value></block></value></block></statement></block></statement> <next><block type="controls_if" id="Q)r2Sx5Gw:`c^ra8S)[C"><value name="IF0"><block type="logic_operation" id="%j?sZi`vo.U_DKQ;.zl_" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="rd4m7{aGCDkarRn!;k+~"><field name="OP">GTE</field> <value name="A"><block type="get_value" id="PA5L-w89e%?[z2CNS]*:"><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne_Nachmittag</field></block></value> <value name="B"><block type="math_number" id="QsfD{cOVBrbZS)dq!@KJ"><field name="NUM">5</field></block></value></block></value> <value name="B"><block type="logic_compare" id="-U;C[0TCY:JSci:1EO|%"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="6jKsQx:SCO2PjK1B,)QN"><field name="ATTR">val</field> <field name="OID">javascript.0.Sonne nachmittag</field></block></value> <value name="B"><block type="logic_boolean" id="QP([z.q=LYDX?;%5?Zl("><field name="BOOL">FALSE</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="7*RMi=_35%+8X(vJ,i)P"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Sonne nachmittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="k:G~C8G86vQ%a[gG4bSL"><field name="BOOL">TRUE</field></block></value> <next><block type="debug" id="v]?)h87yvRgZd+?nxF!4"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="?k{[GWyML4z0xL{xS1z."><field name="TEXT">***Sonne nachmittag da</field></shadow></value></block></next></block></statement> <next><block type="controls_if" id="oEQ^2Vo.^6hSN:ugnkOK"><value name="IF0"><block type="logic_operation" id="vkqAJ]a=6vy+~Sov|m*i" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="`*!:.d30}Z-nP6pnAiY1"><field name="OP">LTE</field> <value name="A"><block type="get_value" id="0@Gp*m|lpiL(*v5+4R#p"><field name="ATTR">val</field> <field name="OID">javascript.0.Count_Sonne_Nachmittag</field></block></value> <value name="B"><block type="math_number" id=";[@MC;+RFJk-Oj0;V8;6"><field name="NUM">0</field></block></value></block></value> <value name="B"><block type="logic_compare" id="O72bla=|L8Lz47WRf3:e"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="y^!LL.nCFF,9br.)Rcm/"><field name="ATTR">val</field> <field name="OID">javascript.0.Sonne nachmittag</field></block></value> <value name="B"><block type="logic_boolean" id="tb~+vPby]Xz2tHuq1tT8"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="[dwzHn.nlns=7ZygD`P@"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Sonne nachmittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="VM}`(BgB%}0MmBCvRqgK"><field name="BOOL">FALSE</field></block></value> <next><block type="debug" id="v1Y1=vjkx2#J^!NQ=ehf"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="=w9fhs[n;A41m}lAy@d%"><field name="TEXT">***Sonne nachmittag weg</field></shadow></value></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement> <next><block type="comment" id="aZ2ev/eW/hh(ON|#6QN^"><field name="COMMENT">Abfrage Temperatur Außen</field> <next><block type="on_ext" id="7,z@].TfiSVhfV-NYgAZ"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="rEjxbS*^`GP{J:6Zk553"><field name="oid">hm-rpc.0.NEQ1100463.1.TEMPERATURE</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="R1b?TU=gt%1lDFGUTRn)"><field name="COMMENT">Aktuelle Temperatur</field> <next><block type="controls_if" id="`5RefTXs(B)i#R%%E1+r"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_compare" id="^!Fi,bdwG.XTSg#mm)yH"><field name="OP">GT</field> <value name="A"><block type="get_value" id="ja+8D%Wlq0Z?dzqP7r7l"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.TEMPERATURE</field></block></value> <value name="B"><block type="text" id="AxH|zsgkq.|Nw%6OK4Xg"><field name="TEXT">16.1</field></block></value></block></value> <statement name="DO0"><block type="control" id="nLH?R~{YL,5M3/;=^w7@"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Temperatur</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="~frbMi?G%~[KjVCQ-#:i"><field name="BOOL">TRUE</field></block></value> <next><block type="debug" id="J_c-+Z^^+ssKe[2HTa-:"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="{!1DpB7lf1/u1z)X3tz!"><field name="TEXT">*** Außentemperatur warm</field></shadow></value></block></next></block></statement> <value name="IF1"><block type="logic_compare" id=")%4/VNgmmVHZ@flcpDFh"><field name="OP">LT</field> <value name="A"><block type="get_value" id="t}E`rI8k_N?,ouFpYa1w"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.TEMPERATURE</field></block></value> <value name="B"><block type="text" id="hD_oO]FIIY_v,w*8eMI0"><field name="TEXT">16</field></block></value></block></value> <statement name="DO1"><block type="control" id="2pVT?[TWw4Su!%e^w3YH"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Temperatur</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="/C]Z54G(2bU.gKYeq:cn"><field name="BOOL">FALSE</field></block></value> <next><block type="debug" id="*;ZY?GX1tOMSzB,qwXd%"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="4N*fA3R=|9|YxDtLb!NI"><field name="TEXT">***Außentemperatur kühl</field></shadow></value></block></next></block></statement> <next><block type="comment" id="#:oxk@|p.dfdIqcqqtMY"><field name="COMMENT">Tiefsttemperatur Nachts</field> <next><block type="controls_if" id="UGkup1I3v^B1v31,]u-s"><value name="IF0"><block type="logic_operation" id="NA*SvxUv%,u]HPut*AR9"><field name="OP">AND</field> <value name="A"><block type="time_compare" id="Er]#dZmiT096wW?Bf;@p"><mutation end_time="false"></mutation> <field name="OPTION">==</field> <field name="START_TIME">03:00</field></block></value> <value name="B"><block type="logic_compare" id="i[.mk2^Nv2w-:]NuGFZ7"><field name="OP">LT</field> <value name="A"><block type="get_value" id="U1;IyB`U_;])xa|fF?81"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.TEMPERATURE</field></block></value> <value name="B"><block type="text" id=":sj!dItIB+HdPFfWezp8"><field name="TEXT">12</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="#d)Ys!x]f?=}=)1wG)0n"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.AußenTemperaturNachts</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="=q%:YM9^ft3S7M6`Ch?o"><field name="TEXT">kühl</field></block></value></block></statement> <next><block type="controls_if" id="o2{Hec:.f-S[BCZH|~gL"><value name="IF0"><block type="logic_operation" id="qI%IjyS81C;gISX_2!hM"><field name="OP">AND</field> <value name="A"><block type="time_compare" id="A/7B+hk,Dfax:wPmP4g#"><mutation end_time="false"></mutation> <field name="OPTION">==</field> <field name="START_TIME">03:00</field></block></value> <value name="B"><block type="logic_compare" id="/{zLh5VazNRP:o~!`xnc"><field name="OP">GT</field> <value name="A"><block type="get_value" id="XMvp9MuKmmF*;bls@`~v"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.TEMPERATURE</field></block></value> <value name="B"><block type="text" id="|oZH`]kqc`P@+HG7kHTb"><field name="TEXT">12.1</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="B-wJtoVvzcQ{xt}G}tkq"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.AußenTemperaturNachts</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="=]jp5{l=];4+`A~b_=PO"><field name="TEXT">warm</field></block></value></block></statement></block></next></block></next></block></next></block></next></block></statement> <next><block type="comment" id="X*Ef!;L5GF/7suxDtmHD"><field name="COMMENT">Abfrage Wind</field> <next><block type="on_ext" id="K(de=mCR#,!P*c6Y:F]S"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="s3s()7EHK)ufjxJhKrTK"><field name="oid">hm-rpc.0.NEQ1100463.1.WIND_SPEED</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="?~q|Q[OA!ba,KzH-=jeY"><value name="IF0"><block type="logic_compare" id=".z?EAXF3F-d-CSxY2oic"><field name="OP">GT</field> <value name="A"><block type="get_value" id="mVio*BnNs7bz[y*hr52W"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.WIND_SPEED</field></block></value> <value name="B"><block type="text" id="~F*TEA=B%;v?o`Glzmmn"><field name="TEXT">35,1</field></block></value></block></value> <statement name="DO0"><block type="control" id="m1ose1GTtgx5,xbhYE`E"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wind</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="M[5|Az1s9ir+Ri[6u0~I"><field name="TEXT">Wind Stufe 1</field></block></value> <next><block type="debug" id="xGS%P79ci%opn=P~W*{D"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="5Fal!NoLDxP/kzteCYE["><field name="TEXT">***Wind Stufe 1</field></shadow></value></block></next></block></statement> <next><block type="controls_if" id="!~;z[}n=~=33BH3MY..g"><value name="IF0"><block type="logic_compare" id="H}u1|Anm5-qyjjAczuiT"><field name="OP">GT</field> <value name="A"><block type="get_value" id="Cg0tip=_t/4@IVRl,9|g"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.WIND_SPEED</field></block></value> <value name="B"><block type="text" id="Y~dX9#A58W1!=CZ7WeoC"><field name="TEXT">43</field></block></value></block></value> <statement name="DO0"><block type="control" id="X^5Z^z?Jpk(Z_[v8Ga8*"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wind</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="CmQA[F6/JfzL[f|U3YV("><field name="TEXT">Wind Stufe 2</field></block></value> <next><block type="debug" id="5pK)Oi2{;w2yS6FS6l6["><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="^m9zf|8FHVGByI?;qxST"><field name="TEXT">***Wind Stufe 2</field></shadow></value></block></next></block></statement> <next><block type="controls_if" id="w6|7v=Sdw-1,z{,Qhmzp"><value name="IF0"><block type="logic_compare" id="D]lT,xb:gj0V!n=VDAhw"><field name="OP">LT</field> <value name="A"><block type="get_value" id="]3W[C5iQ4,:~eRhBm^r)"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.TEMPERATURE</field></block></value> <value name="B"><block type="text" id="UtpR5EoQ8rtjV]c{K(9|"><field name="TEXT">35</field></block></value></block></value> <statement name="DO0"><block type="control" id=".jyso.,CdgX#u7~P)2uL"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wind</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="/{Z3me![Hs@YMz,EgEbn"><field name="TEXT">Kein Wind</field></block></value> <next><block type="debug" id="zG}V({]JlgY*kwxkul%b"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="F{;!)tNl,dDm0m6.-nOv"><field name="TEXT">***Kein Wind</field></shadow></value></block></next></block></statement></block></next></block></next></block></statement> <next><block type="comment" id="v~MV?RP]n#U5m]8^_Ho)"><field name="COMMENT">Abfrage Regen</field> <next><block type="on_ext" id="FE`/TImiZzeZ~5P4+-OY"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="rjL*~9[Rku7Pzi%ywqS]"><field name="oid">hm-rpc.0.LEQ1288980.1.STATE</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="%ts,q}!3,M-u3k^Wv3,w"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_compare" id="3bPUL*Hr,6(cM{.Ul2+b"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="L{)XNNtIlztZlRhFprXO"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.LEQ1288980.1.STATE</field></block></value> <value name="B"><block type="logic_boolean" id="_dPsLwjD?dvf79m}O4@1"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="timeouts_cleartimeout" id="{OwF~K}!PB|C3pWI^zp;"><field name="NAME">timeout_Regen</field> <next><block type="control" id="_B6ii=u^#FOQMKM0~ck)"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Regen</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="9h%14idCSJ)Zww-~VoJ2"><field name="BOOL">TRUE</field></block></value> <next><block type="debug" id="w0=BI[3GhX|IVGuCu?s2"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id=";6k6%@4D%_Fl`Dys81cD"><field name="TEXT">***Regen</field></shadow></value> <next><block type="controls_if" id="?u/jDEjfj7Jz.Nffr|Ko" disabled="true"><value name="IF0"><block type="logic_compare" id="j?2(k.k].sH,:^;%bDb^"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="kWrmCdA4:oL`|zk|-=r}"><field name="VAR">Regen_push</field></block></value> <value name="B"><block type="logic_boolean" id="d3xBP}2*L.B(Q@at_OEm"><field name="BOOL">FALSE</field></block></value></block></value> <statement name="DO0"><block type="pushover" id="ei(z_l.-T34cdCAO7P=a"><field name="INSTANCE">.0</field> <field name="PRIORITY">0</field> <field name="LOG">debug</field> <value name="MESSAGE"><shadow type="text" id="[N{KFm+TArs_OPQ`pTGE"><field name="TEXT">Es regnet in Braak</field></shadow></value> <next><block type="variables_set" id="T^[+6)ppO/AMk6q_+mI~"><field name="VAR">Regen_push</field> <value name="VALUE"><block type="logic_boolean" id="17O.3-Yj=2|--omd;vfZ"><field name="BOOL">TRUE</field></block></value></block></next></block></statement></block></next></block></next></block></next></block></statement> <value name="IF1"><block type="logic_compare" id="`Pz^)jiw,=aT:2*;=j1S"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="@GTwWN{#a;X%^tKd0o^x"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.LEQ1288980.1.STATE</field></block></value> <value name="B"><block type="logic_boolean" id="oUHbso]%wb,5_31.)eKO"><field name="BOOL">FALSE</field></block></value></block></value> <statement name="DO1"><block type="timeouts_settimeout" id="b_MyrWSc%gTiH|Oa1eNc"><field name="NAME">timeout_Regen</field> <field name="DELAY">7</field> <field name="UNIT">min</field> <statement name="STATEMENT"><block type="control" id="-!3H62_/4}:7WB,a8~A("><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Regen</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="l(KF5-BVSs)G+CuMx6I_"><field name="BOOL">FALSE</field></block></value> <next><block type="variables_set" id="-L2Ka4fIJAE^v+XVwn1+" disabled="true"><field name="VAR">Regen_push</field> <value name="VALUE"><block type="logic_boolean" id="MH6_{#OOip0Zg3*o^YR_"><field name="BOOL">FALSE</field></block></value> <next><block type="debug" id="Y~M4~W8vo7O{HKJ,u*,u"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="6Y5_mH6_ar=m!SXSs];+"><field name="TEXT">***Kein Regen</field></shadow></value></block></next></block></next></block></statement></block></statement></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block> <block type="create" id="}=Y-O-vl`*2YuCcv_F^*" x="-2788" y="4237"><field name="NAME">Sonne vormittag</field> <statement name="STATEMENT"><block type="create" id="4434IyAnZn93df[8IL)B"><field name="NAME">Sonne nachmittag</field> <statement name="STATEMENT"><block type="create" id="08D_xiK+@q-Cwp#{9j|4"><field name="NAME">Temperatur</field> <statement name="STATEMENT"><block type="create" id="c6,QVVu?U2CJiT*E=Pp*"><field name="NAME">Wind</field> <statement name="STATEMENT"><block type="create" id="1At9e*9_D.Nm?V/plCkh"><field name="NAME">Regen</field></block></statement></block></statement></block></statement></block></statement></block> <block type="create" id="q.YGV]LYAqg[6=A)Pv/+" x="-2748" y="4317"><field name="NAME">Sonne vormittag</field> <statement name="STATEMENT"><block type="create" id="DWxso}y[DrtacF4Q]@Up"><field name="NAME">Sonne nachmittag</field> <statement name="STATEMENT"><block type="create" id="mEc#HPl1?xXK5XpS:5ax"><field name="NAME">Temperatur</field> <statement name="STATEMENT"><block type="create" id="=|8=g*dM0k3or(4cOe%m"><field name="NAME">Wind</field> <statement name="STATEMENT"><block type="create" id="d[6|S2QCtL}S8NG9a8;a"><field name="NAME">Regen</field></block></statement></block></statement></block></statement></block></statement></block></xml>
-
Hallo smile,
ich finde dein Script klasse. Ich bin gerade dabei, die Scripte zu installieren. Dabei ist mir aufgefallen, dass eine Menge an Variablen nicht gesetzt werden. Dein Init-Script setzt nur einige (z.B. Sonne nachmittag). Die Wetter Temperatur, Wind, Regen und Sonneneinstahlung habe ich zugeordnet.
Andere werden leider nicht initial gesetzt, z.B. Energiegewinnungs-Modus …
Kannst du mir da weiter helfen?
Gruß
Martin
-
Was meinst du damit dass einige Variablen nicht gesetzt werden?
Die Init Blöcke habe ich mittlerweile komplett deaktiviert. Das ganze läuft dadurch für mich besser, weil z.B. die Beschattungen nicht hochfahren wenn ich diese Manuell runtergefahren hatte, das Script dabei deaktiviert hatte und es dann wieder neu aktiviere.
Vielleicht kannst du erklären was genau bei dir nicht klappt?
-
Hallo smile,
ich habe mir jetzt ein Script geschrieben, um einige Variablen initial zu setzen.
// https://forum.iobroker.net/viewtopic.php?f=21&t=7951&start=40 //Input createState('Rolladen.Wind', { read: true, write: true, type: "string" }); createState('Rolladen.Temperatur', { read: true, write: true, type: "string" }); createState('Rolladen.Regen', { read: true, write: true, type: "string" }); createState('Rolladen.Sonne nachmittag', { read: true, write: true, type: "string" }); createState('Rolladen.Sonne vormittag', { read: true, write: true, type: "string" }); createState('Rolladen.Solltemperatur_WHZ', { read: true, write: true, type: "number" }); createState('Rolladen.Solltemperatur_Bad', { read: true, write: true, type: "number" }); createState('Rolladen.Solltemperatur_Schlaf', { read: true, write: true, type: "number" }); createState('Rolladen.InnenTemperatur', { read: true, write: true, type: "number" }); createState('Rolladen.InnenTemperatur_Bad', { read: true, write: true, type: "number" }); createState('Rolladen.InnenTemperatur_Schlaf', { read: true, write: true, type: "number" }); createState('Rolladen.Energiegewinnungs-Modus', { read: true, write: true, type: "boolean" }); createState('Rolladen.Energiegewinnungs-Modus_Schlafzimmer', { read: true, write: true, type: "boolean" }); createState('Rolladen.AussenTemperaturNachts', { read: true, write: true, type: "string" }); createState('Rolladen.Count_Sonne_Nachmittag', { read: true, write: true, type: "number" }); createState('Rolladen.Count_Sonne_Vormittag', { read: true, write: true, type: "number" }); createState('Rolladen.Count_Sonne', { read: true, write: true, type: "number" });
Bei einigen Variablen bin ich mir nicht sicher, welchen Wert du abfragst.
Z.B.
-
Bei einigen Variablen bin ich mir nicht sicher, welchen Wert du abfragst.
Z.B.
![](</s>/Users/martin/Documents/iobriker.png)` ~~In dem Beispiel prüfe ich erst, ob die jeweilige Beschattung / Rollo gerade ein oder -ausgefahren ist. Wenn der "Level" 100 ist, dann ist sie bei mir eingefahren. Der Homematic Schalter darunter "Press_Short" ist lediglich ein interner Homematic Schalter und gleichzusetzen mit "Steuere Rollo auf Level 0", mit anderen Worten das ausfahren des Rollos.Die Abfrage is also nur dafür da, damit der Rolladenaktor nicht immer wieder schaltet, wenn die Beschattung bereits in der gewünschten Stellung ist.~~
-
Hallo,
ich habe ein Problem mit meiner gebauten Steuerung und Denke für etwas mehr Ordnung schreibe ich es hier hin.
Ich habe folgende Hardware verbaut.
Raspberrymatic mit dem CUL Stick –> steuert die Somfy Markise
einen Temperatur Differenz Sensor (ein Fühler weiß, einer schwarz) auf Kanal 3 rufe ich die Differenz ab
Einen Homematic Fensterkontakt habe ich zum Regensensor umgebaut.
Ich möchte dies nun mit einem Blockly Skript steuern,
aber leider funktioniert es nicht wirklich.
Meine Vorstellung ist folgende:
Wenn der Differenz Sensor auf Kanal 3 einen Wert von 5°C misst, soll gerpüft werden ob es regnet.
Wenn es nicht regnet, soll die Markise raus fahren.
Einfahren dachte ich, mache ich selbst.
Wenn es zu regnen beginnt, soll die Markise sofort rein fahren.
Problem ist nun, die Markise fährt ständig raus, auch wenn der Sensor keine Differenz von 5 hat.
ich hoffe Ihr könnt mir helfen.
Stefan
-
In Deinem ersten Trigger fehlt eine UND Abfrage.
Falls "wert vom …. >5" UND "Wert vom …. = unwahr"
Zudem eventuell beide Trigger auf "wurde geändert" setzen.
Grüße
-
In Deinem ersten Trigger fehlt eine UND Abfrage.
Falls "wert vom …. >5" UND "Wert vom …. = unwahr"
Zudem eventuell beide Trigger auf "wurde geändert" setzen.
Grüße ` Hallo rantanplan,
Danke für deine Antwort.
Ich verstehe nicht genau was du meinst,
Ich habe doch die UND Abfrage eingebaut.
(externer Eingang)
Oder was meinst du?
Viele Grüße
Gesendet von meinem ONEPLUS A3003 mit Tapatalk
-
Ich verstehe nicht genau was du meinst,
Ich habe doch die UND Abfrage eingebaut.
(externer Eingang)
Oder was meinst du? `
Ne, hast Du nicht.
Bei steht "Falls Wert >5" = "Wert = unwahr"
Das kann nicht funktionieren.
Du solltest den "UND" Block nehmen nicht den "=" Block.