NEWS
Das Ultimative Markisen / Rolladen Blockly - Script
-
Hallo smile
@smile:Was würde die Variable "Stop Timeout" bewirken? Ende des Timeouts mit oder ohne ausführen des darauffolgenden Befehls? `
Das kann man ganz leicht in einem mini Blockly selbst testen(Bei "Stop Timeout" werden die "inneren" Befehle NICHT ausgeführt.)
Alle andere ist sehr umfangreich. Bilder schön aber unübersichtlich.
Ein Export wäre das hilfreicher.
Grüße
-
(Bei "Stop Timeout" werden die "inneren" Befehle NICHT ausgeführt.) `
DANKE, das hilft mir auf jeden Fall schonmal sehr weiter.Hm ich habe versucht das gesamte Blockly Layout als Bild zu exportieren, hab ich aber leider nicht hinbekommen. Hab kurz nach gegoogled, aber auch nichts gefunden. Sorry
Folgenden Export konnte ich machen:
var timeout3, timeout4, timeout2, Regen, timeout_Regen3, timeout5, timeout6, Wind, Sonne_vormittag, Temperatur, timeout7, timeout8, Sonne_nachmittag_B, Sonne_nachmittag; /** * Beschreibe diese Funktion … */ function Regen_Wind_Rollo() { // Test Sicherheits Script Regen / Wind einfahren ohne Verzögerung if ((getState("hm-rpc.0.JEQ0299861.1.LEVEL").val < '99' || getState("hm-rpc.0.JEQ0299851.1.LEVEL").val < '99') && (Regen == 'Regen' || Wind == 'Wind Stufe 1')) { setState("hm-rpc.0.JEQ0299861.1.LEVEL"/*Rollo Links.LEVEL*/, '100'); setState("hm-rpc.0.JEQ0299851.1.LEVEL"/*Rollo Rechts.LEVEL*/, '100'); } } schedule("*/30 */2 * * * *", function () { // Abfrage Sonne Vormittag if (compareTime("08:00", "15:00", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val > '200') { timeout3 = setTimeout(function () { if (compareTime("08:00", "15:00", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val > '200') { if (Sonne_vormittag == 'Sonne vormittag weg' || Sonne_vormittag == null) { Sonne_vormittag = 'Sonne vormittag da'; console.log('Sonne vormittag da'); } } }, 30000); } else if (compareTime("08:00", "15:00", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val < '200') { timeout4 = setTimeout(function () { if (compareTime("08:00", "15:00", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val < '200') { if (Sonne_vormittag == 'Sonne vormittag da' || Sonne_vormittag == null) { Sonne_vormittag = 'Sonne vormittag weg'; console.log('Sonne vormittag weg'); } } }, 240000); } // Abfrage Sonne Nachmittag if (compareTime("15:00", "22:00", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val > '205') { timeout5 = setTimeout(function () { if (compareTime("15:00", "22:00", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val > '205') { if (Sonne_nachmittag == 'Sonne nachmittag weg' || Sonne_nachmittag == null) { Sonne_nachmittag = 'Sonne nachmittag da'; console.log('Sonne Nachmittag da'); } } }, 30000); } else if (compareTime("15:00", "22:00", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val < '205') { timeout6 = setTimeout(function () { if (compareTime("15:00", "22:00", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val < '205') { if (Sonne_nachmittag == 'Sonne nachmittag da' || Sonne_nachmittag == null) { Sonne_nachmittag = 'Sonne nachmittag weg'; console.log('Sonne Nachmittag weg'); sendTo("history.0", "Sonne Nachmittag weg", { "parameter1": '' }); console.log("history.0: " + ""); } } }, 240000); } // Abfrage Beschattung Sonne Nachmittag if (compareTime("15:00", "17:30", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val > '230') { timeout7 = setTimeout(function () { if (compareTime("15:00", "17:30", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val > '230') { if (Sonne_nachmittag_B == 'Sonne nachmittag B weg' || Sonne_nachmittag_B == null) { Sonne_nachmittag_B = 'Sonne nachmittags B da'; console.log('Sonne Nachmittag B da'); } } }, 30000); } else if (compareTime("15:00", "17:30", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val < '230') { timeout8 = setTimeout(function () { if (compareTime("15:00", "17:30", "between") && getState("hm-rpc.0.NEQ1100463.1.BRIGHTNESS").val < '230') { if (Sonne_nachmittag_B == 'Sonne nachmittag B da' || Sonne_nachmittag_B == null) { Sonne_nachmittag_B = 'Sonne nachmittags B weg'; console.log('Sonne Nachmittag B weg'); } } }, 240000); } if (compareTime("17:31", "null", ">") && Sonne_nachmittag_B == 'Sonne nachmittag B da') { Sonne_nachmittag_B = 'Sonne nachmittags B weg'; } // Abfrage Temperatur if (getState("hm-rpc.0.NEQ1100463.1.TEMPERATURE").val > '15.0') { if (Temperatur == 'Kühl' || Temperatur == null) { console.log('Warm'); Temperatur = 'Warm'; } } else if (getState("hm-rpc.0.NEQ1100463.1.TEMPERATURE").val < '15.0') { if (Temperatur == 'Warm' || Temperatur == null) { console.log('Kühl'); Temperatur = 'Kühl'; } } }); schedule("* * * * * *", function () { // Abfrage Wind if (getState("hm-rpc.0.NEQ1100463.1.WIND_SPEED").val > '35.0') { if (Wind == 'Kein Wind' || Wind == null) { console.log('Wind Stufe 1'); Wind = 'Wind Stufe 1'; } } else if (getState("hm-rpc.0.NEQ1100463.1.WIND_SPEED").val < '35.0') { timeout2 = setTimeout(function () { if (Wind == 'Wind' || Wind == null) { console.log('Kein Wind'); Wind = 'Kein Wind'; } }, 180000); } }); // Abfrage Regen neu on({id: 'hm-rpc.0.LEQ1288980.1.STATE', val: true, ack: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('Regen'); Regen = 'Regen'; Regen_Wind_Rollo(); sendTo("pushover.0", "send", { message: 'Es regnet in Braak', sound: "" }); }); on({id: 'hm-rpc.0.LEQ1288980.1.STATE', val: false, ack: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; timeout_Regen3 = setTimeout(function () { console.log('Kein Regen'); Regen = 'Kein Regen'; console.log('Regen timeout vorbei'); sendTo("pushover.0", "send", { message: 'Regen vorbei', sound: "" }); }, 240000); }); schedule("*/30 * * * * *", function () { // Beschattung Automatik Vormittag if ((getState("hm-rpc.2.LEQ0170301.3.WORKING").val == false || getState("hm-rpc.2.LEQ0170348.3.WORKING").val == false) && Temperatur == 'Warm' && Wind == 'Kein Wind' && Sonne_vormittag == 'Sonne vormittag da' && (Regen == 'Kein Regen' || Regen == null)) { if (getState("hm-rpc.2.LEQ0170301.3.LEVEL").val > '2' || getState("hm-rpc.2.LEQ0170348.3.LEVEL").val > '2') { setState("hm-rpc.2.LEQ0170301.3.LEVEL"/*Beschattung1:3.LEVEL*/, '0'); setState("hm-rpc.2.LEQ0170348.3.LEVEL"/*Beschattung2:3.LEVEL*/, '0'); } } if (getState("hm-rpc.2.LEQ0170301.3.WORKING").val == false && getState("hm-rpc.2.LEQ0170348.3.WORKING").val == false && (Sonne_vormittag == 'Sonne vormittag weg' || Temperatur == 'Kühl')) { if (getState("hm-rpc.2.LEQ0170301.3.LEVEL").val < '99' || getState("hm-rpc.2.LEQ0170348.3.LEVEL").val < '99') { setState("hm-rpc.2.LEQ0170301.3.LEVEL"/*Beschattung1:3.LEVEL*/, '100'); setState("hm-rpc.2.LEQ0170348.3.LEVEL"/*Beschattung2:3.LEVEL*/, '100'); } } }); schedule("*/30 * * * * *", function () { // Beschattung Automatik Nachmittag if ((getState("hm-rpc.2.LEQ0170301.3.WORKING").val == false || getState("hm-rpc.2.LEQ0170348.3.WORKING").val == false) && Temperatur == 'Warm' && Wind == 'Kein Wind' && Sonne_nachmittag_B == 'Sonne nachmittags B da' && (Regen == 'Kein Regen' || Regen == null)) { if (getState("hm-rpc.2.LEQ0170301.3.LEVEL").val > '2' || getState("hm-rpc.2.LEQ0170348.3.LEVEL").val > '2') { setState("hm-rpc.2.LEQ0170301.3.LEVEL"/*Beschattung1:3.LEVEL*/, '0'); setState("hm-rpc.2.LEQ0170348.3.LEVEL"/*Beschattung2:3.LEVEL*/, '0'); } } if (getState("hm-rpc.2.LEQ0170301.3.WORKING").val == false && getState("hm-rpc.2.LEQ0170348.3.WORKING").val == false && (Sonne_nachmittag_B == 'Sonne nachmittags B weg' || Temperatur == 'Kühl')) { if (getState("hm-rpc.2.LEQ0170301.3.LEVEL").val < '99' || getState("hm-rpc.2.LEQ0170348.3.LEVEL").val < '99') { setState("hm-rpc.2.LEQ0170301.3.LEVEL"/*Beschattung1:3.LEVEL*/, '100'); setState("hm-rpc.2.LEQ0170348.3.LEVEL"/*Beschattung2:3.LEVEL*/, '100'); } } }); schedule("* * * * * *", function () { // Beschattung Regen / Wind einfahren ohne Verzögerung if ((getState("hm-rpc.2.LEQ0170301.3.LEVEL").val < '99' || getState("hm-rpc.2.LEQ0170348.3.LEVEL").val < '99') && (Regen == 'Regen' || Wind == 'Wind Stufe 1')) { setState("hm-rpc.2.LEQ0170301.3.LEVEL"/*Beschattung1:3.LEVEL*/, '100'); setState("hm-rpc.2.LEQ0170348.3.LEVEL"/*Beschattung2:3.LEVEL*/, '100'); } }); schedule("*/30 * * * * *", function () { // Rollo Automatik Vormittags if (compareTime("12:45", "15:00", "between") && getState("hm-rpc.0.JEQ0299851.1.WORKING").val == false && getState("hm-rpc.0.JEQ0299861.1.WORKING").val == false && Sonne_vormittag == 'Sonne vormittag da' && Temperatur == 'Warm' && Wind == 'Kein Wind' && (Regen == 'Kein Regen' || Regen == null)) { if (getState("hm-rpc.0.JEQ0299861.1.LEVEL").val > '2' || getState("hm-rpc.0.JEQ0299851.1.LEVEL").val > '2') { setState("hm-rpc.0.JEQ0299861.1.LEVEL"/*Rollo Links.LEVEL*/, '0'); setState("hm-rpc.0.JEQ0299851.1.LEVEL"/*Rollo Rechts.LEVEL*/, '0'); } } else if (compareTime("12:45", "15:00", "between") && getState("hm-rpc.0.JEQ0299851.1.WORKING").val == false && getState("hm-rpc.0.JEQ0299861.1.WORKING").val == false && (Sonne_vormittag == 'Sonne vormittag weg' || Temperatur == 'Kühl')) { if (getState("hm-rpc.0.JEQ0299861.1.LEVEL").val < '99' || getState("hm-rpc.0.JEQ0299851.1.LEVEL").val < '99') { setState("hm-rpc.0.JEQ0299861.1.LEVEL"/*Rollo Links.LEVEL*/, '100'); setState("hm-rpc.0.JEQ0299851.1.LEVEL"/*Rollo Rechts.LEVEL*/, '100'); } } // Rollo Automatik Nachmittags if (compareTime("15:00", "22:00", "between") && getState("hm-rpc.0.JEQ0299851.1.WORKING").val == false && getState("hm-rpc.0.JEQ0299861.1.WORKING").val == false && Sonne_nachmittag == 'Sonne nachmittag da' && Temperatur == 'Warm' && Wind == 'Kein Wind' && (Regen == 'Kein Regen' || Regen == null)) { if (getState("hm-rpc.0.JEQ0299861.1.LEVEL").val > '2' || getState("hm-rpc.0.JEQ0299851.1.LEVEL").val > '2') { setState("hm-rpc.0.JEQ0299861.1.LEVEL"/*Rollo Links.LEVEL*/, '0'); setState("hm-rpc.0.JEQ0299851.1.LEVEL"/*Rollo Rechts.LEVEL*/, '0'); } } else if (compareTime("15:00", "22:00", "between") && getState("hm-rpc.0.JEQ0299851.1.WORKING").val == false && getState("hm-rpc.0.JEQ0299861.1.WORKING").val == false && (Sonne_nachmittag == 'Sonne nachmittag weg' || Temperatur == 'Kühl')) { if (getState("hm-rpc.0.JEQ0299861.1.LEVEL").val < '99' || getState("hm-rpc.0.JEQ0299851.1.LEVEL").val < '99') { setState("hm-rpc.0.JEQ0299861.1.LEVEL"/*Rollo Links.LEVEL*/, '100'); setState("hm-rpc.0.JEQ0299851.1.LEVEL"/*Rollo Rechts.LEVEL*/, '100'); } } // Rollo Automatik Vormittags }); >! 0 == 0;
Die Screenshots sind aber auch in der Reihenfolge wie das Script aufgebaut ist.
1 –> Abfrage sonne (vormittag, nachmittag ist dasselbe nur andere Zeit + Helligkeit) alle 2 Minuten.
2 --> Abfrage Wind (jede Sekunde)
3 --> Abfrage Regen (nach Regensensor Update) [Früher auch mal nach jeder Sekunde wie bei Wind]
4 –> Ausführen jede Minute Beschattung ausfahren (bei entsprechenden Vorraussetzungen durch die vorherigen Abfragen)
5 --> Ausführen jede Sekunde Beschattung einfahren (bei Vorraussetzung durch Regen oder Wind)
6 --> Test Blockly mit Sonnen - Zähler System anstattt Timeouts.
Ich hoffe das konnte dir einen Überblick geben.
-
Habe dank Deines Tips bei der Regen Abfrage jetzt mal einen Stop Timeout eingefügt.
Ich glaube vorher haben sich Timeouts und Schleifen überlagert… Möglicherweise auch schon beim Abfrage Sonne Block.
Ich hatte nämlich auch schon die Situation dass die Beschattung rauf und runter gefahren ist, und quasi beides gleichzeitig wollte / nicht mehr wusste wo sie war.
Mal schauen wie es morgen läuft (hoffentlich regnets... :twisted: )
-
Hm ich habe versucht das gesamte Blockly Layout als Bild zu exportieren, hab ich aber leider nicht hinbekommen. Hab kurz nach gegoogled, aber auch nichts gefunden. Sorry `
filename="blöcke export.png" index="0">~~Bitte in Tag "spoiler" UND "Code" einbetten.
Grüße
-
Hi Rantaplan, danke für deine Erläuterung. Wenn ich das so mache kommt bei mir nur ein Fenster mit Codezeilen, welche ich kopieren könnte - jedoch keine Bilddatei.
Habe jetzt nochmal versucht die Regenabfrage zu optimieren, mit deinen Tips.
1. –> Stop Timeouts gesetzt, damit sich die Timeouts nicht überlagern
2. --> Abfrage gesetzt ob ein Timeout gerade läuft (ob das überhaupt möglich ist weiß ich nicht, ich habs einfach mal probiert - siehe Foto)
Ich hoffe das sich die Beschattungen nicht mehr überlagen. Die sind nämlich heute schon wieder durch zuviele aufeinanderfolgende Befehle "heiß" gelaufen, das heißt die Motoren schalten sich für ne Weile ab.
Manchmal habe ich auch das Gefühl dass sie irgendwann nicht mehr wissen was Level = 100 bedeutet (was ja in der Homematic die Behanghöhe ist). Leider habe ich noch nicht rausgefunden wie man einfach den pauschalen Befehl für "up" oder "down" aus io.broker ansteuert - hat da jemand eine Idee?
Denn dann fährt die Beschattung von der Theorie her ja auch einfach so lange, bis die Motorensteuerung sagt dass sie nun "angekommen" ist.
3472_iobroker.admin_-_google_chrome_2017-09-07_23.05.21.png -
Hi Rantaplan, danke für deine Erläuterung. Wenn ich das so mache kommt bei mir nur ein Fenster mit Codezeilen, welche ich kopieren könnte - jedoch keine Bilddatei. `
Hi smileJa, das ist richtig. Das mit strg+c kopieren und hier mit strg+v einfügen.
Aber wie schon gesagt, bitte in ein spoiler und code Tag einfügen.
Dann kann ich das importieren und schwupps habe ich Dein Blockly (ohne Deine Datenpunke) und kann es komlett sehen.
Grüße
-
Alles klar, hier kommt der Blockly Export:
<block xmlns="http://www.w3.org/1999/xhtml" type="on_ext" id="/q*fhP`a}D~:yGIl2Rz]" x="-462" y="2238.1600036621094"><mutation items="1"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION">true</field> <value name="OID0"><shadow type="field_oid" id="!k]IS277@k`sP^g=Eqkm"><field name="oid">hm-rpc.0.LEQ1288980.1.STATE</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="/lGDf!o#|U*eIwAXW;I1"><value name="IF0"><block type="logic_operation" id="}Y[6R:jFi[2kV3[5%d{r"><field name="OP">OR</field> <value name="A"><block type="logic_operation" id="U6O8[BN7e9iJn`P9A0Hv"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="y9BPccUgkPbs(XA(C-Ua"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="j``KC-3q8}i!nW1BW:2@"><field name="VAR">Regen</field></block></value> <value name="B"><block type="text" id="6{rE(fXNn9L-|64:Ba@n"><field name="TEXT">Kein Regen</field></block></value></block></value> <value name="B"><block type="logic_compare" id="_gio_J9:cAyapYmizLa`"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="O]y!Cfj2RXL^`](!_7qT"><field name="VAR">Regen</field></block></value> <value name="B"></value></block></value></block></value> <value name="B"><block type="logic_compare" id="1}W22SPXABoar;oNBW%y"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="o;N1xav(uT)8G{xS93Nj"><field name="VAR">Regen</field></block></value> <value name="B"><block type="text" id="Nm}J?f21HngKd/yyP2-V"><field name="TEXT">Regen Abklingphase</field></block></value></block></value></block></value> <statement name="DO0"><block type="debug" id="4I)jAzD^Clm[~M,1xhtF"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="]u{I@T1=]ciorGiYiULV"><field name="TEXT">Regen</field></shadow></value> <next><block type="timeouts_cleartimeout" id="HbROdXG2mP2@hRk,;F;Z"><field name="NAME">timeout_Regen4</field> <next><block type="timeouts_cleartimeout" id="e!-sVViI@G5s9Q07PrR,"><field name="NAME">timeout_Regen3</field> <next><block type="variables_set" id="dP431ZOlBrrlV;sELkuL"><field name="VAR">Regen</field> <value name="VALUE"><block type="text" id="i|P?`;buz}g1fu!a#LTK"><field name="TEXT">Regen</field></block></value> <next><block type="procedures_callnoreturn" id="AO1%}Bl.diaV;=yX%p~P"><mutation name="Regen_Wind_Rollo"></mutation> <next><block type="pushover" id="TKkFuNpoNB[`.6kuESPS"><field name="INSTANCE">.0</field> <field name="PRIORITY">0</field> <value name="MESSAGE"><shadow type="text" id="txQ_WuqpCB`U|J/kh-:i"><field name="TEXT">Es regnet in Braak</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></statement></block></statement></block>
Ein Problem scheint noch beim Regensensor Blockly zu sein:
Ich kriege es noch nicht hin, dass er bei dauerndem Regen nicht andauernd immer wieder NEU Regen meldet.
Ich muss dazu sagen dass ich mit dem Regensensor etwas geschummelt hab: Es ist nicht der Original Homematic Regensensor. (weil der so unzuverlässig war). Sondern ein normaler Regensensor, welcher an einen Homematic Fensterkontakt gelötet wurde Wenn es regnet meldet der Fensterkontakt "offen".
Jedoch habe ich das Problem dass ich ständig eine Meldung vom Regensensor bekomme, wenn es regnet:
10:07:51.788 [info] javascript.0 script.js.Beschattung_Auto_2: Regen 10:20:32.115 [info] javascript.0 script.js.Beschattung_Auto_2: Regen 10:22:52.371 [info] javascript.0 script.js.Beschattung_Auto_2: Regen 10:41:48.981 [info] javascript.0 script.js.Beschattung_Auto_2: Regen 10:41:53.742 [info] javascript.0 script.js.Beschattung_Auto_2: Regen 10:42:03.481 [info] javascript.0 script.js.Beschattung_Auto_2: Regen 10:42:27.489 [info] javascript.0 script.js.Beschattung_Auto_2: Regen 10:42:33.028 [info] javascript.0 script.js.Beschattung_Auto_2: Regen 10:44:21.751 [info] javascript.0 script.js.Beschattung_Auto_2: Regen 10:44:44.032 [info] javascript.0 script.js.Beschattung_Auto_2: Regen 10:48:16.016 [info] javascript.0 script.js.Beschattung_Auto_2: Regen
Also in viel zu kurzen Intervallen. Wäre das mit einem original HM Regensensor anders? Oder muss ich das einfach umscripten?
Kann hierfür die Funktion "wurde geändert" statt "ist wahr" hilfreich sein?
Danke nochmals für den Support :!:
-
Hi
Da scheint beim Export etwas nicht geklappt zu haben.
Da muss alles selektiert werden.
Das fängt mit <xml…......an<br>und hört mit auf.
(Einfach STRG+a)
Klick vor dem Export auch bitte mal auf "Blöcke prüfen"
Grüße</xml…......an<br>
-
Alles klar, da ich leider aufgrund von zu vielen Zeichen das Script hier nicht posten kann, hab ich das mal in ein .txt. Dokument gepackt - hoffe das geht so.
3472_blockly_export.txt -
Import hat geklappt.
Aber da muss ich erst in Ruhe durchsteigen :shock:
Warum alles in einem Blockly?
Ich sehe da einiges an Aufräumpotential
Ich melde mich.
Grüße
-
Also, wenn ich Deine Anforderungen so sehe, würde ich Dir diese Seite mal empfehlen:
https://www.stall.biz/project/so-steuer … -homematic
Ich habe dieses Skript in abgewandelter Form und mit meinen Werten angepaßt seit gut drei Jahren laufen. Die HM-Skripte werde ich demnächst in blockly überführen. Ich denke, da ist einiges dabei, was Du auch als mögliche trigger möchtest. Wenn Du dort einmal durchgestiegen bist, dürfte es nicht schwer sein, das auf blockly zu übertragen.
Grüße Andreas
-
Also, wenn ich Deine Anforderungen so sehe, würde ich Dir diese Seite mal empfehlen:
https://www.stall.biz/project/so-steuer … -homematic
Ich habe dieses Skript in abgewandelter Form und mit meinen Werten angepaßt seit gut drei Jahren laufen. Die HM-Skripte werde ich demnächst in blockly überführen. Ich denke, da ist einiges dabei, was Du auch als mögliche trigger möchtest. Wenn Du dort einmal durchgestiegen bist, dürfte es nicht schwer sein, das auf blockly zu übertragen.
Grüße Andreas `
Hi Andreas, danke für den Link, da hat sich jemand wirklich Mühe gegeben.Bei mir sind ein paar Anforderungen anders, bzw. manches ist bisher halt anders gelöst.
Der von stall.biz misst z.B. nach Temperaturdifferenz, bei mir ist es Abfrage (Mindest-)Außentemperatur + Helligkeit, was auch völlig ok ist.
@ rantaplan:
Warum alles in einem Blockly?
Hm gute Frage, warum nicht? Sollte man das lieber auf mehrere verteilen?
Ich wollte z.B. ja nicht für jeden Rolladen Helligkeitswerte einzeln abfragen, sondern ein Gesamtscript dafür nutzen.
Darüber hinaus kann ich so mit einem Knopfdruck das Script deaktivieren und habe so einen "manuell" Schalter für die Beschattungen.
Momentan kämpfe ich hauptsächlich mit 2 Dingen:
–> Ich kann die Homematic Rolladenaktoren nur mit 0% oder 100% (Oder Zwischenzahl) ansteuern, also sprich feste Werte. Mir fehlt der Simple Befehl UP oder DOWN, aber ich komme aus io.broker da irgendwie nicht ran. Siehe Screenshot, das sind die möglichen Variablen in io.broker von dem Homemativ wired Rolladenaktor.
Folge: Wenn das Script mal durcheinander kommt und mehrere Befehle hintereinander sendet, dann weiß glaube ich der Rolladen)aktor) nicht mehr was 0% und was 100% ist, und bleibt an willkürlichen Stellen stehen. Sehr bescheiden bei Regen....
--> Der "Türkontakt-Regensensor" löst zwar zuverlässig aus, aber ich bekomme es nicht so hingescripted, dass er nicht jede Minute ein Auslöse Update macht.
Oder sollte ich den lieber auch per Zeitintervall abfragen?
-
Also, wenn ich Deine Anforderungen so sehe, würde ich Dir diese Seite mal empfehlen:
https://www.stall.biz/project/so-steuer … -homematic
Ich habe dieses Skript in abgewandelter Form und mit meinen Werten angepaßt seit gut drei Jahren laufen. Die HM-Skripte werde ich demnächst in blockly überführen. Ich denke, da ist einiges dabei, was Du auch als mögliche trigger möchtest. Wenn Du dort einmal durchgestiegen bist, dürfte es nicht schwer sein, das auf blockly zu übertragen.
Grüße Andreas `
Hi Andreas, danke für den Link, da hat sich jemand wirklich Mühe gegeben.Bei mir sind ein paar Anforderungen anders, bzw. manches ist bisher halt anders gelöst.
Der von stall.biz misst z.B. nach Temperaturdifferenz, bei mir ist es Abfrage (Mindest-)Außentemperatur + Helligkeit, was auch völlig ok ist.
… `
Das stimmt. Wobei die Temperaturdifferenz genau genommen eine Art Sonnendetektor ist.
Schau mal hier: https://www.stall.biz/project/robuster- … nz-einfach
und hier:https://www.stall.biz/project/sonnensen … nsteuerung
Den zweiten mit dem Marmeladenglas und dem Metallrohr habe ich nachgebaut und der funktioniert 1A!
Das ganze wird mit einer Hysterese von 20 Minuten über eine Variable gesteuert. Damit umgehst du zu häufiges öffnen und schließen bei schnellem Helligkeitswechsel durch z.B. schnelle Wolken bei Wind. Wird es dunkel, schlägt auch der Sonnendetektor an (Sonne ist ja weg).
Schöner Nebeneffekt. Du kannst die Sonnenscheindauer grafisch sehr gut darstellen.
Grüße Andreas
-
Hallo smile
Einen Teil habe ich mal umgetellt.
Da Du alles über Timer-Trigger gelöst hast, ist das alles recht unübersichtlich.
Und mehrere Trigger können gleichzeitig starten, was jede Menge ungewollte Nebeneffekte hat.
Um Dein Blockly in mehrere logische Einheiten aufzudröseln, müssen wir als erstes von den lokalen Variablen weg!
Über globale Variablen/Zustände können sich die einzelnen Blocklys "unterhalten".
Und da wären wir beim nächten Thema, Zustände!
Man muss z.B. nicht jede Minute den "Wind" überprüfen.
Man muss nur reagieren, wenn der "Wind" seinen "Zustand" ändert!
Genau so mit der Temperatur es ist quatsch diese alle 5 Sek. zu überprüfen!!!
Ich bin mal mit dem Teil "Rollo Automatik Vormittag/Nachmittag" angefangen.
Dazu müssen einige globale Variablen in ioBroker angelegt werden.
Das solltest Du in ein neues Blockly importieren und als ERSTES starten!
Export Variablen:
<xml xmlns="http://www.w3.org/1999/xhtml"><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></xml>
So sieht mein "Umbau" aus.
OHNE ANPASSUNG DER ANDEREN TEILE KLAPPT DAS NARÜRLICH NOCH NICHT.
Aber Du kannst ja schon mal schauen.
Hier der Exort:
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="IR94DiuG7v6~=Zg2dVp6" x="-762" y="4638"><field name="COMMENT">Variablen initialisieren</field> <next><block type="procedures_callnoreturn" id="iW:+%8blE]XvSDS~rIw5"><mutation name="InitVariablen"></mutation> <next><block type="comment" id="_:tJ@Ut#F5ws5(QdD#18"><field name="COMMENT">Variablen überwachen</field> <next><block type="comment" id="Mlyo7L0-(5%m9dgr4!hg"><field name="COMMENT">Wenn sich eine ändert, startet Trigger</field> <next><block type="on_ext" id="QiHPKverivP=8WkSGytV"><mutation items="5"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="+,BC{lp_F!LRvdS~JX5?"><field name="oid">javascript.0.Sonne vormittag</field></shadow></value> <value name="OID1"><shadow type="field_oid" id="Yp8-^gw:4dzjsmj2:E|X"><field name="oid">javascript.0.Sonne nachmittag</field></shadow></value> <value name="OID2"><shadow type="field_oid" id="_L%Q;_E;przz^IB8H7ku"><field name="oid">javascript.0.Wind</field></shadow></value> <value name="OID3"><shadow type="field_oid" id="4%FQBEBoKZscIw(xCfvK"><field name="oid">javascript.0.Regen</field></shadow></value> <value name="OID4"><shadow type="field_oid" id="(YD{}gWxz15@1erb8dYW"><field name="oid">javascript.0.Temperatur</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="KBTszICK@=[wDZb5;*~,"><field name="COMMENT">Rollo Automatik Vormittags</field> <next><block type="controls_if" id="PE7b{%TNQd*9zP!jf^Vh"><value name="IF0"><block type="time_compare" id="wiw`_@oW7L;@Lqp}_Bbk"><mutation end_time="true"></mutation> <field name="OPTION">between</field> <field name="START_TIME">12:45</field> <field name="END_TIME">15:00</field></block></value> <statement name="DO0"><block type="controls_if" id="-qm_GxNYec;/oVqc#/FG"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_operation" id="3MvSq_rbvziv0hO!pv4X" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="(4xyzp46rX#2!bau(%nV"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="xXd].0z/eJi_OfvmDFxA"><field name="ATTR">val</field> <field name="OID">javascript.0.Sonne vormittag</field></block></value> <value name="B"><block type="text" id="MOZ_dv*(#ZY/~FULWUPu"><field name="TEXT">Sonne vormittag da</field></block></value></block></value> <value name="B"><block type="logic_operation" id="S};QeEeRv)|[*|0@2)c8" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="vu2.^T;[R(_T6hOXlr_."><field name="OP">EQ</field> <value name="A"><block type="get_value" id="~F:Z},!7~ykNJwrOkbGO"><field name="ATTR">val</field> <field name="OID">javascript.0.Temperatur</field></block></value> <value name="B"><block type="text" id="n*xk_f@Zq@~B.=up.`US"><field name="TEXT">Warm</field></block></value></block></value> <value name="B"><block type="logic_operation" id="_=4D??A;0FI8ra-O(0F?" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="[PHCg{Ie(#.YcDNAWXmd"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="8{ERfH|U})t=s3IU#^13"><field name="ATTR">val</field> <field name="OID">javascript.0.Wind</field></block></value> <value name="B"><block type="text" id="um}}z7,tc/4!Hi@tah*5"><field name="TEXT">Kein Wind</field></block></value></block></value> <value name="B"><block type="logic_compare" id="LMn!w9FZvoVEuwl%D6mY"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="2%;WPqm*uJ|_WvU=(n|D"><field name="ATTR">val</field> <field name="OID">javascript.0.Regen</field></block></value> <value name="B"><block type="text" id=":7(gB.uFfPECZEwe3pxW"><field name="TEXT">Kein Regen</field></block></value></block></value></block></value></block></value></block></value> <statement name="DO0"><block type="controls_if" id="yC6hZ|KW5Stt%3^5rlh2"><value name="IF0"><block type="logic_compare" id="%{03m~#w#0V;65s{%?nv"><field name="OP">GT</field> <value name="A"><block type="get_value" id="DU)Iz,zfo_moiHn0ViwR"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.JEQ0299861.1.LEVEL</field></block></value> <value name="B"><block type="text" id="ba6YoJ6#1bP-y9hi7(Fw"><field name="TEXT">2</field></block></value></block></value> <statement name="DO0"><block type="control" id="_yRXeMIFf6*;^DuLm0{Y"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.JEQ0299861.1.LEVEL</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="8v@#`#`P@u_J,_xFVA-1"><field name="TEXT">0</field></block></value></block></statement> <next><block type="controls_if" id="da_(t)1H+*[|uObdu^7E"><value name="IF0"><block type="logic_compare" id="@1{B?Sr;8on}:0~Z/bv}"><field name="OP">GT</field> <value name="A"><block type="get_value" id="92TuOd8vS[yojxAkXsdz"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.JEQ0299851.1.LEVEL</field></block></value> <value name="B"><block type="text" id=":Ky@O(uLcK*h5cE|MRl4"><field name="TEXT">2</field></block></value></block></value> <statement name="DO0"><block type="control" id="OhJ*jMYtH]-,vuf7J0Nj"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.JEQ0299851.1.LEVEL</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="/(ZI:L2Z*dv@5r}W2enm"><field name="TEXT">0</field></block></value></block></statement></block></next></block></statement> <value name="IF1"><block type="logic_operation" id="vJ5:~jZO:NC(Pd96O(;G" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="Ad!8`?NG.(OL.g_odN~o"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="S7/gkd+O%sL!3genk)cI"><field name="ATTR">val</field> <field name="OID">javascript.0.Sonne vormittag</field></block></value> <value name="B"><block type="text" id="9Fs[=kKwVkBLVK?]#jN3"><field name="TEXT">Sonne vormittag weg</field></block></value></block></value> <value name="B"><block type="logic_compare" id="G2+kr0haz~Ox4Vo!EM)W"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="5io?01yhTDr)?mdJJ_F2"><field name="ATTR">val</field> <field name="OID">javascript.0.Temperatur</field></block></value> <value name="B"><block type="text" id="-jtS7S)=EeSKNn[v0iI."><field name="TEXT">Kühl</field></block></value></block></value></block></value> <statement name="DO1"><block type="controls_if" id="FcNEyO_Z11Ce7C=:!(}S"><value name="IF0"><block type="logic_compare" id="~6U1U.`obRseMnyazi!n"><field name="OP">LT</field> <value name="A"><block type="get_value" id="Z3^aVRk+QqhVuP4k0TZn"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.JEQ0299861.1.LEVEL</field></block></value> <value name="B"><block type="text" id="n,!VeekwVG~sM94[XNQN"><field name="TEXT">99</field></block></value></block></value> <statement name="DO0"><block type="control" id="|s@Eet(_I#Q9o(yH}a1-"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.JEQ0299861.1.LEVEL</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id=";j*Ma@j~rj/h/npu3%Sx"><field name="TEXT">100</field></block></value></block></statement> <next><block type="controls_if" id="Zg^9xF`u;g67wy8/U@To"><value name="IF0"><block type="logic_compare" id="!Ar%r9;J+0}x)E5}ZE`Y"><field name="OP">LT</field> <value name="A"><block type="get_value" id="-[3W?T{(ij8b`9-5OQrn"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.JEQ0299851.1.LEVEL</field></block></value> <value name="B"><block type="text" id="T@LFM75gL}gt3-LjhRl,"><field name="TEXT">99</field></block></value></block></value> <statement name="DO0"><block type="control" id="Xzb5[el97QU~kgep1wCC"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.JEQ0299851.1.LEVEL</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="vY4e8ev;i1/y;K+ww`Kr"><field name="TEXT">100</field></block></value></block></statement></block></next></block></statement></block></statement> <next><block type="comment" id="WebbG)%):f^o3IOrXx9k"><field name="COMMENT">Rollo Automatik Nachmittags</field> <next><block type="controls_if" id="`1r57@w,vq.]_)1URYw{"><value name="IF0"><block type="time_compare" id="mv#=V=^xD_3#5K7@0,;#"><mutation end_time="true"></mutation> <field name="OPTION">between</field> <field name="START_TIME">15:00</field> <field name="END_TIME">22:00</field></block></value> <statement name="DO0"><block type="controls_if" id="06]icFPv.|4I]5RZFVxK"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_operation" id="H)[?N6jnM;U/P,N2k%c3" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id=",*e.*[%4U5aOqU|+6piK"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="*hp9dJ)CcN8C:m11UvGS"><field name="ATTR">val</field> <field name="OID">javascript.0.Sonne nachmittag</field></block></value> <value name="B"><block type="text" id="qd0#1t7adf%NzoxZIPe;"><field name="TEXT">Sonne nachmittag da</field></block></value></block></value> <value name="B"><block type="logic_operation" id="0[8LT!cRt?8vVFyYvR%-" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id=";tTT}MT4?wfKPcv4R0z}"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="Za216GQPdEI5TAHu(8wm"><field name="ATTR">val</field> <field name="OID">javascript.0.Temperatur</field></block></value> <value name="B"><block type="text" id="J)p4A^J^?3B?6`nC]{G+"><field name="TEXT">Warm</field></block></value></block></value> <value name="B"><block type="logic_operation" id="f9}0Bzs5hiI4;NGj,,x_" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="_QmL%I+!rf/(Q@!3%-*|"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="QI1*j%HxyXp3(J5LyE#s"><field name="ATTR">val</field> <field name="OID">javascript.0.Wind</field></block></value> <value name="B"><block type="text" id="?bJyjwmT{QX.!]zge^ml"><field name="TEXT">Kein Wind</field></block></value></block></value> <value name="B"><block type="logic_compare" id="rL__AI7HbK.6TXQKjENq"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="f9X*^y]z6O)7o6#CUVNT"><field name="ATTR">val</field> <field name="OID">javascript.0.Regen</field></block></value> <value name="B"><block type="text" id="kzGhN6U:[gC);VgYO+or"><field name="TEXT">Kein Regen</field></block></value></block></value></block></value></block></value></block></value> <statement name="DO0"><block type="controls_if" id="cmE{`w9X:d6z~U(;h)q2"><value name="IF0"><block type="logic_compare" id="}=t1L@V75YROUx76UtJI"><field name="OP">GT</field> <value name="A"><block type="get_value" id="(-6;[Tvq`yFSRfRQ)fl}"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.JEQ0299861.1.LEVEL</field></block></value> <value name="B"><block type="text" id="e6IT6bR~(kd2lU2kVwxg"><field name="TEXT">2</field></block></value></block></value> <statement name="DO0"><block type="control" id="rK5dtkmDK*?o6+RNY!m`"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.JEQ0299861.1.LEVEL</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="c2kl1smjFi;R2`Zxm)=)"><field name="TEXT">0</field></block></value></block></statement> <next><block type="controls_if" id="=(kBQkiVxmc{IK@/BnN["><value name="IF0"><block type="logic_compare" id="HW^lkc(tnxE9sXz3el7H"><field name="OP">GT</field> <value name="A"><block type="get_value" id="F(VWL|VR}uTz}AH-KkJR"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.JEQ0299851.1.LEVEL</field></block></value> <value name="B"><block type="text" id=";I?@e#;0`~G,k:C2l/fn"><field name="TEXT">2</field></block></value></block></value> <statement name="DO0"><block type="control" id="s9V*Poyqeda}hCDiq8Rg"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.JEQ0299851.1.LEVEL</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="ZWNuP0|avd=bwa0gl[bq"><field name="TEXT">0</field></block></value></block></statement></block></next></block></statement> <value name="IF1"><block type="logic_operation" id="deYn|DwA4C6WDszez|N?" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="3otRi*ZZ^.DmSmOsCTd5"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="GNsq}r-(XJSOr#`TkcpG"><field name="ATTR">val</field> <field name="OID">javascript.0.Sonne nachmittag</field></block></value> <value name="B"><block type="text" id="qCdb(O-FlFpl/4%bQ|ZH"><field name="TEXT">Sonne nachmittag weg</field></block></value></block></value> <value name="B"><block type="logic_compare" id="!5R4nTl9UB9Gu2I|!.r_"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="iC^b3Q8DO:ajXg=5n9l2"><field name="ATTR">val</field> <field name="OID">javascript.0.Temperatur</field></block></value> <value name="B"><block type="text" id="yDJp[#W)ST{V{YQP}br]"><field name="TEXT">Kühl</field></block></value></block></value></block></value> <statement name="DO1"><block type="controls_if" id="BrJx+TOrgC5::]2b6fbQ"><value name="IF0"><block type="logic_compare" id="9CZ5^vv#K7S*_ZK7igZ4"><field name="OP">LT</field> <value name="A"><block type="get_value" id="@gEto~k2Uj|q@{ey{Tce"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.JEQ0299861.1.LEVEL</field></block></value> <value name="B"><block type="text" id="628tYGpk@^xz0j%8gjg1"><field name="TEXT">99</field></block></value></block></value> <statement name="DO0"><block type="control" id="[.MirZd!YIUo`BuD`xh("><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.JEQ0299861.1.LEVEL</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="2SMw+RRV-XTXko0:uL1~"><field name="TEXT">100</field></block></value></block></statement> <next><block type="controls_if" id="zS@pM}dP.?Jj;g[l7Nl3"><value name="IF0"><block type="logic_compare" id="_ujq6r5ysA7(d^7bI=1:"><field name="OP">LT</field> <value name="A"><block type="get_value" id=";*Ch*E/(v7s,CiFe1TKY"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.JEQ0299851.1.LEVEL</field></block></value> <value name="B"><block type="text" id="9OU@m_5Y|FF]Mwi~Jf*n"><field name="TEXT">99</field></block></value></block></value> <statement name="DO0"><block type="control" id="+r4~Y6o!J(VNB`CJ,RJ|"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.JEQ0299851.1.LEVEL</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="DrF0QNw_G0?(/Q*/eM#R"><field name="TEXT">100</field></block></value></block></statement></block></next></block></statement></block></statement></block></next></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block> <block type="procedures_defnoreturn" id="(+6Mz{Je,L}7n^5*t*wO" x="-187" y="4662"><field name="NAME">InitVariablen</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"><block type="control" id="XPIeH#R01T5KR1EP?ge6"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Temperatur</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"></value> <next><block type="control" id="p?`r0r!rP+l-DL?HVpBE"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Wind</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"></value> <next><block type="control" id="d:8g!N[q^)G{PlAhNaz-"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Regen</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"></value> <next><block type="control" id="aE`7d?_]rfE]MD%PNtMy"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Sonne nachmittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"></value> <next><block type="control" id="}j@12@xg3yqq;4gXl%rl"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Sonne vormittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"></value></block></next></block></next></block></next></block></next></block></statement></block></xml>
Grüße
-
Wahnisnn. Ich bin mega begeistert. Danke für deine Hilfe…. :shock:
Ich mach mich gleich mal ran und werde das bei mir eintickern und testen
Kurz vorab zu deiner Frage:
Man muss z.B. nicht jede Minute den "Wind" überprüfen.
Man muss nur reagieren, wenn der "Wind" seinen "Zustand" ändert!
Genau so mit der Temperatur es ist quatsch diese alle 5 Sek. zu überprüfen!!! `
Das hatte ich so gemacht, um in mehreren Intervallen die Zustände zu prüfen, ob diese immer noch vorliegen.z.B. Bei Sonne: Prüfe ob Sonne da ist, und prüfe in 30 Sekunden ob sie immer noch da ist. Damit nicht immer die Beschattungen rein und rausfahren.
Bei Wind sekündlich, da dies natürlich ein Wert ist auf den sofort eine Reaktion kommen muss.
Aber du hast Recht, wenn ich so darüber nachdenke… reicht es natürlich wenn immer nur dann eine Meldung erfolgt, wenn der entsprechende Wert unter - oder überschritten wird. Logo.
Danach kann man ja mit Zeittriggern weiterarbeiten und beim Aktionsscript des Rollos nach z.B. 2 Minuten eine Abfrage machen, ob "Sonne da" immer noch wahr ist !?!?
-
Aber du hast Recht, wenn ich so darüber nachdenke… reicht es natürlich wenn immer nur dann eine Meldung erfolgt, wenn der entsprechende Wert unter - oder überschritten wird. Logo.
Danach kann man ja mit Zeittriggern weiterarbeiten und beim Aktionsscript des Rollos nach z.B. 2 Minuten eine Abfrage machen, ob "Sonne da" immer noch wahr ist !?!? `
Du brauchst keinen Zeit-TriggerAls nächstes baue ich die "Steuerzentrale".
Mal sehen ob ich heute noch Zeit finde.
Momentan ist bei mir "Sonnen Nachmittag da"
Grüße
PS. Du musst nichts "eintickern" sondern IMPORTIEREN.
Aber laufen wird es "noch" nicht.
-
Momentan ist bei mir "Sonnen Nachmittag da" `
Bei uns in Hamburg heute auch!Ich hab schon angefangen dein Blockly zu Importieren und mir anzuschauen.
Ich teste das ganze jetzt mal mit meiner Klima Automatik.
Gehört ja quasi zu einer Beschattungs Steuerung dazu, denn all diese Sachen sollen ja durchaus das Klima / Temperatur in der Wohnung beeinflusssen.
Temperaturabfrage mit Variablensetzung
Klima Einschalten NICHT nach Zeitsteuerung sondern sobald sich eine Variable ändert.
filename="Klima_Ausführen.png" index="0">~~<xml xmlns="http://www.w3.org/1999/xhtml"><block type="procedures_defnoreturn" id="M-.z#fgX|~KI@30*R;vF" x="-412" y="-662"><field name="NAME">Temperatur Abfrage</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"><block type="controls_if" id="2:W^w:ig.+dp?Y_`8t,t"><value name="IF0"><block type="logic_compare" id="G42]?_F/nz*wxEc?3?M8"><field name="OP">GT</field> <value name="A"><block type="get_value" id="fD#FRl~`/cn1Ji4kh*P8"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.KEQ0048986.1.TEMPERATURE</field></block></value> <value name="B"><block type="text" id="bZC~%nv_z.D@/}tJ5eCT"><field name="TEXT">24</field></block></value></block></value> <statement name="DO0"><block type="controls_if" id="[C8Csoo%)icUb/2IEtHP"><value name="IF0"><block type="logic_operation" id="[;{N?f7xSk%(@ZG1O-OM"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="VRvO`.RmfaN=g0bt_N@B"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="G|Bqeb(2JdrvQnK)!@t("><field name="VAR">Temperatur</field></block></value> <value name="B"><block type="text" id="wEv%OB%ana!:y?8ywgTX"><field name="TEXT">kühl</field></block></value></block></value> <value name="B"><block type="logic_operation" id="Tl+t4/6:6MpDq0V/=?ik"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="gH0n-~dmhKESF{)?6VPH"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="d-h18U(P_hXJS{2Kmu|/"><field name="VAR">Temperatur</field></block></value> <value name="B"><block type="text" id="oD%|4pe0gqY^JE*_-M:d"><field name="TEXT">angenehm</field></block></value></block></value> <value name="B"><block type="logic_compare" id="BK~nz@9QZ:z_cP~/o00I"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="TiF:e!gO;gJO]aK{z[V3"><field name="VAR">Temperatur</field></block></value> <value name="B"></value></block></value></block></value></block></value> <statement name="DO0"><block type="variables_set" id="!U8W^mT^O.=o5.u,]oY9"><field name="VAR">Temperatur</field> <value name="VALUE"><block type="text" id="tPl}yQiNWM2RrFB+YHww"><field name="TEXT">warm</field></block></value> <next><block type="debug" id="z}la@I.`9Zp-rnN*ONNJ"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="YRvmAA||WilQ?;0#bQ{F"><field name="TEXT">warm</field></shadow></value></block></next></block></statement></block></statement> <next><block type="controls_if" id="WQ*t]M|jhl6[*#1f_LO9"><value name="IF0"><block type="logic_operation" id="JKg5aPy?cLnts{aMJFyW"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="t0Xa*0x.:[~1ny#GoP|G"><field name="OP">LTE</field> <value name="A"><block type="get_value" id="e2dEF6IJ(i{fK.@Mnv5("><field name="ATTR">val</field> <field name="OID">hm-rpc.0.KEQ0048986.1.TEMPERATURE</field></block></value> <value name="B"><block type="text" id="eC0X=zoR7x~e274%{AWz"><field name="TEXT">24</field></block></value></block></value> <value name="B"><block type="logic_compare" id="W!t6pY5xZ:2HJVXu6nLp"><field name="OP">GTE</field> <value name="A"><block type="get_value" id="XeTO#O-9mV.[[]-xB4N!"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.KEQ0048986.1.TEMPERATURE</field></block></value> <value name="B"><block type="text" id="j^|Bv;;BIjZ4@k_XEzMc"><field name="TEXT">21</field></block></value></block></value></block></value> <statement name="DO0"><block type="controls_if" id="OwmXoujd-`Ro`CM{ZJ[N"><value name="IF0"><block type="logic_operation" id="C:?m]3IY+g(m6s^]O[y-"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="MHtVH@X.)B*44nEb_Rdu"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="lvA0fHr?BXZ5tlTi7I}y"><field name="VAR">Temperatur</field></block></value> <value name="B"><block type="text" id="2O,{K2rURG8_No~O4!#Q"><field name="TEXT">warm</field></block></value></block></value> <value name="B"><block type="logic_operation" id=")0#B@WN|maTR4hcI*Za6"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="OdS=.T3dV;Mrk1N+geW="><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="I|Noz_8-g?Sw6MR%RomU"><field name="VAR">Temperatur</field></block></value> <value name="B"><block type="text" id=")+w+(7g15q;z.~IZiAC2"><field name="TEXT">kühl</field></block></value></block></value> <value name="B"><block type="logic_compare" id="aFP*D_uc#jW24ojS[T%("><field name="OP">EQ</field> <value name="A"><block type="variables_get" id=":f^l2U.+n^7]K)+GTSln"><field name="VAR">Temperatur</field></block></value> <value name="B"></value></block></value></block></value></block></value> <statement name="DO0"><block type="variables_set" id="zBV(agAeh?5_RnVqp.*k"><field name="VAR">Temperatur</field> <value name="VALUE"><block type="text" id="MlvJPsP]fO1AKF=V5oP{"><field name="TEXT">angenehm</field></block></value> <next><block type="debug" id="C:(jJ}y(g%WmnGaJ11q~"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="aGBiMR7`%IXBNl#1s96."><field name="TEXT">angenehm</field></shadow></value></block></next></block></statement></block></statement> <next><block type="controls_if" id="{3{%g6t8Pm;XyHWhOKpX"><value name="IF0"><block type="logic_compare" id="N^l`9clBFvc?Xn/;}WCc"><field name="OP">LT</field> <value name="A"><block type="get_value" id="4EGjklq)IP5#ryz%fykH"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.KEQ0048986.1.TEMPERATURE</field></block></value> <value name="B"><block type="text" id="BOLDj9}yy.6OZAKSh`vW"><field name="TEXT">21</field></block></value></block></value> <statement name="DO0"><block type="controls_if" id="FG~-}Qk6KJzl7-bD|_j1"><value name="IF0"><block type="logic_operation" id="J~-+n~kURA4p=rC_AirF"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="6db|O2V!nS`mcrAf*qma"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="L`(N@b_/!5J4|zn?=x|s"><field name="VAR">Temperatur</field></block></value> <value name="B"><block type="text" id="NH?l}/gS^PtXa1hO}S:6"><field name="TEXT">angenehm</field></block></value></block></value> <value name="B"><block type="logic_operation" id="(^)JromdE6X+V-hk27hC"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="VN,w?|+^%Vr[YN-#bYi~"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id=";W2xtZXh2%%Vq_[:(!PS"><field name="VAR">Temperatur</field></block></value> <value name="B"><block type="text" id="]4^Co2`~_!^Y-=`o5Bf!"><field name="TEXT">warm</field></block></value></block></value> <value name="B"><block type="logic_compare" id="G.w[n-4(l;?~N;c`]Rw4"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="}Hg4{xZ5E`uz2Smzrm^%"><field name="VAR">Temperatur</field></block></value> <value name="B"></value></block></value></block></value></block></value> <statement name="DO0"><block type="variables_set" id="s_:t)7Mp%#kKIY(h_BxA"><field name="VAR">Temperatur</field> <value name="VALUE"><block type="text" id=")ZOtM|-bv|1FZ*=~+uQO"><field name="TEXT">kühl</field></block></value> <next><block type="debug" id=";Kr6(jM+CLv;V9hVZeD."><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="?s=.a{)4@gant^H+^Blj"><field name="TEXT">kühl</field></shadow></value></block></next></block></statement></block></statement></block></next></block></next></block></statement></block> <block type="comment" id="Vlxo`y:Fxt|8tlNww){B" x="-413" y="12"><field name="COMMENT">Klima einschalten</field> <next><block type="procedures_callnoreturn" id="fC~cc+fM!#jI717dqqD3"><mutation name="Temperatur Abfrage"></mutation> <next><block type="on_ext" id="S|tlmQi*+~k;1g!8`rAJ"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="NdM!z9Nft`Y*xsf)d_Ht"><field name="oid">default</field></shadow> <block type="variables_get" id="x}:[f;6SW,RSu.1Pu/n#"><field name="VAR">Temperatur</field></block></value> <statement name="STATEMENT"><block type="controls_if" id="a-]ch.!MT+Hn03_t~#x7"><value name="IF0"><block type="logic_operation" id="jtsXJ%bH_4OJyp2GA7X8" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_operation" id="AIOi=[Aq|.iH}rm;~|dz" inline="false"><field name="OP">AND</field> <value name="A"><block type="time_compare_ex" id="SJ]-Ix(IxMuF8[5%usBf"><mutation 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="vwTkZhalu=p,yw%%Y]`l"><field name="TEXT">11:00</field></shadow></value> <value name="END_TIME"><shadow type="text" id="s5L+uX_a{fgkbtPj^UOI"><field name="TEXT">23:00</field></shadow></value></block></value> <value name="B"><block type="logic_compare" id="^(Y~KddcNPe^NFtU-{,P"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="N)n|kXO}XZ+McHUPxVov"><field name="VAR">Temperatur</field></block></value> <value name="B"><block type="text" id="+-:ct]AV!fe*@ia-[:JU"><field name="TEXT">warm</field></block></value></block></value></block></value> <value name="B"><block type="logic_operation" id="]mpb*Ov4L.6WkODr)iPR"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="J,3ye{.d[EFS0:9z3d)q"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="~q9=iU:*{]V#J#K-_=5^"><field name="VAR">Klimaanlage</field></block></value> <value name="B"><block type="text" id="5GDKS`O{_]B]k;}mY*Z~"><field name="TEXT">Klima aus</field></block></value></block></value> <value name="B"><block type="logic_compare" id="y5X|m=/lqgku.bue#(,L"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="-gmW?34V`_)M+t7F{,R5"><field name="VAR">Klimaanlage</field></block></value> <value name="B"></value></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="?/WNJOfO/:lLo9g#N=5q"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.BidCoS-RF.9.PRESS_SHORT</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="nC8}.7SsG]bG4u_r?l7C"><field name="BOOL">TRUE</field></block></value> <next><block type="variables_set" id="z??u^sEs#)CY+q)MTsK)"><field name="VAR">Klimaanlage</field> <value name="VALUE"><block type="text" id="a!eRrys:TfND{g)KXu(1"><field name="TEXT">Klima an 20°</field></block></value> <next><block type="debug" id="U%w.Sp}k=!Mhp7KM!JYO"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="cpc,OUzBccic?Ldkv:ky"><field name="TEXT">Klima läuft</field></shadow></value></block></next></block></next></block></statement> <next><block type="comment" id=")~T4i5c?Tf#YQ|yFi_Sw"><field name="COMMENT">Klima ausschalten</field> <next><block type="controls_if" id="L]!,y5hBwGBv|W/R3Y(y"><value name="IF0"><block type="logic_operation" id="whpLC^,mj4N2J2#n(IZ?" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="2_FW*t;}Em].~64fFlHM"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="z7#-J5?NoO63txy-hE{D"><field name="VAR">Klimaanlage</field></block></value> <value name="B"><block type="text" id="1E6oSELdr)Txz6z=O+[N"><field name="TEXT">Klima an 20°</field></block></value></block></value> <value name="B"><block type="logic_operation" id="G=cKdG{*DLx,:?BS`aIz"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="j*((*OoS09X`F6/,t/vw"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="{MxyQjlb6=BG0?W@]N}5"><field name="VAR">Temperatur</field></block></value> <value name="B"><block type="text" id="KG{;3EaOJ.4s{,q+5dzq"><field name="TEXT">angenehm</field></block></value></block></value> <value name="B"><block type="logic_compare" id="Nr@iI#JR-d}HAty_TSeg"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="v4C6@ZxymG!L!K9T*!Hf"><field name="VAR">Temperatur</field></block></value> <value name="B"><block type="text" id="b[wUp.G5si~WSVqpExJ)"><field name="TEXT">kühl</field></block></value></block></value></block></value></block></value> <statement name="DO0"><block type="variables_set" id="KklN4ykwIm5l/5:{EIx("><field name="VAR">Klimaanlage</field> <value name="VALUE"><block type="text" id="MPmEc|%95*t_yn!9fFk+"><field name="TEXT">Klima Restlaufzeit</field></block></value> <next><block type="timeouts_settimeout" id="=-oTruDZK*8./~A}3HxE"><field name="NAME">timeout</field> <field name="DELAY">120</field> <field name="UNIT">min</field> <statement name="STATEMENT"><block type="control" id="Ee?@_zLBoef07]q{W7La"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.BidCoS-RF.12.PRESS_SHORT</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="YUgvqzTL2QJT.(;L`tDE"><field name="BOOL">TRUE</field></block></value> <next><block type="variables_set" id="LH!JX5w.G{sx1TX[*zCa"><field name="VAR">Klimaanlage</field> <value name="VALUE"><block type="text" id="txsJ4(Xs`-cEfLsN,_vJ"><field name="TEXT">Klima aus</field></block></value> <next><block type="debug" id="NKEHsLr{R-Z!YLt6iS[,"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="g3sDxB30^L|s=k_]94DB"><field name="TEXT">Klima läuft nicht mehr</field></shadow></value></block></next></block></next></block></statement></block></next></block></statement></block></next></block></next></block></statement></block></next></block></next></block></xml>
Dazu fällt mir ein: Wenn man das und auch das Beschattungs Script das erste mal startet, und es z.B. gerade "Warm" ist, dann löst der trigger doch nicht aus, weil er die Schwelle ja nicht aktiv überschritten hat, korrekt? Wäre dann ggf. ein kleiner Nachteil gegenüber der Zeitgesteuerten Abfrage?
Kleine Nebeninfo zur Klimaanlage: Ist eine Daikin Klimaanlage, welche sich eigentlich nur mit der Systemeigenen Fernbedienung ansteuern lässt. Die Brücke schlage ich hier üer ir.trans, ein kleiner Infrarot Miniserver der sich im Netzwerk befindet, dem ich vorher die Daikin Befehle beigebracht habe und nun kann ich per Homematic / CuxD http Befehl die Klimaanlage steuern 8-)
-
Hallo smile
Mir ist schon ganz schwindelig
So viele doppelte und teilweise widersprüchliche Bedingungen erschweren den Durchblick.
Und alles in einem Blockly
Zum "aufdröseln" fange ich mal mit der Sonne an.
Das nächste Beispiel kannst Du in ein neues Blockly importieren und z.B. "checkSonne" benennen.
Brauchen wirst Du noch "checkWind", "checkTemperatur", "checkRegen"
Schau Dir mal "checkSonne" an. Vielleicht bekommst Du ja die anderen alleine hin.
Diesmal nur den Export.
Bei Fragen…fragen.
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="iq)T|5XZ5a[grP|:#]ko" x="-412" y="-2063"><field name="COMMENT">Hier musst Du Deinen Datenpunkt einsetzen</field> <next><block type="on_ext" id="X^pURd.J~{|Qy%!FAT:c"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="Pzhtf4n4H6K8[tlkt]~1"><field name="oid">default</field></shadow> <block type="text" id="ll^6_zy.(b)W^Ni@IuF~"><field name="TEXT">Datenpunk Brightness</field></block></value> <statement name="STATEMENT"><block type="comment" id="wDSePIi}BB4`W7{k|OV_"><field name="COMMENT">Abfrage Sonne Vormittag</field> <next><block type="controls_if" id="vp!,0i}:wu*OJ][nB8=."><value name="IF0"><block type="time_compare" id="6i6dO#/N`hGx8B-8;tH3"><mutation end_time="true"></mutation> <field name="OPTION">between</field> <field name="START_TIME">08:00</field> <field name="END_TIME">15:00</field></block></value> <statement name="DO0"><block type="controls_if" id="}^)vQcW(i0DQ?Ty{rMZB"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_compare" id="yHWuOq#S2@:qwcn(NCj("><field name="OP">GT</field> <value name="A"><block type="get_value" id="+{PQ.~sdV7,2TCisbUB@"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.BRIGHTNESS</field></block></value> <value name="B"><block type="text" id="%T}.Q8rVjc!/;,4mj+tn"><field name="TEXT">200</field></block></value></block></value> <statement name="DO0"><block type="control" id="#X6xT+IU%qObrw^I:D7L"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Sonne vormittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="(I=U0!0Ils:27}I;-RqJ"><field name="TEXT">Sonne vormittag da</field></block></value> <next><block type="debug" id="bG0I2XaGZ,4C^_?[Q!w!"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="_e4F?`=/t9GoPJ4w_79_"><field name="TEXT">***Sonne vormittag da</field></shadow></value></block></next></block></statement> <value name="IF1"><block type="logic_compare" id="WvG%rNBkDFZAdnkrd46m"><field name="OP">LT</field> <value name="A"><block type="get_value" id="6I?G^y`_@09`)_{`/AVw"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.BRIGHTNESS</field></block></value> <value name="B"><block type="text" id="ZI|k3w-PzfO3]~=WOltK"><field name="TEXT">200</field></block></value></block></value> <statement name="DO1"><block type="control" id="}l_QoYUoMU(s{9m.7Z2T"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Sonne nachmittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="hr.PTQOz)OyqSHpnk8Jx"><field name="TEXT">Sonne vormittag weg</field></block></value> <next><block type="debug" id="`N%wGh+cZ+U3x;6EK)0D"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="CS+;:.SD?}CxMf**Xoy9"><field name="TEXT">***Sonne vormittag weg</field></shadow></value></block></next></block></statement></block></statement> <next><block type="comment" id="d)eKPvYD=b{i?(FD*R}X"><field name="COMMENT">Abfrage Sonne Nachmittag</field> <next><block type="comment" id="EpTYEa;+b;vi2p`Mo]kE"><field name="COMMENT">Zeit >15:00 !!!!! s. Bedingung vorher!!!</field> <next><block type="controls_if" id="fySpyS~y%2bWw|DnDHaR"><value name="IF0"><block type="time_compare" id="=nyP^-OQbA*-Z5fe1AU3"><mutation end_time="true"></mutation> <field name="OPTION">between</field> <field name="START_TIME">15:01</field> <field name="END_TIME">22:00</field></block></value> <statement name="DO0"><block type="controls_if" id="ei1,8806M]^hHj_tgIoO"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_compare" id="d3bMmntK18Wyn;?twFeR"><field name="OP">GT</field> <value name="A"><block type="get_value" id="BE~.aZoA0%4?(6X_#Q/*"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.BRIGHTNESS</field></block></value> <value name="B"><block type="text" id="u[)MQ6*Kt=GcfBOfs+/c"><field name="TEXT">205</field></block></value></block></value> <statement name="DO0"><block type="control" id="%*,.g]Dm*_f;Jt3w+-6X"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Sonne nachmittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="@cAw:.T1GGLW.o;CFx0S"><field name="TEXT">Sonne nachmittag da</field></block></value> <next><block type="debug" id="sBh={G..8CZX@e%1A?6c"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="ND@9!1JgC:W0Fg!=_Qt^"><field name="TEXT">***Sonne Nachmittag da</field></shadow></value></block></next></block></statement> <value name="IF1"><block type="logic_compare" id="5GlygkH`O[xilq0I-F!D"><field name="OP">LT</field> <value name="A"><block type="get_value" id="}yiCbDnHf@[tTW9;Z-/Q"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1100463.1.BRIGHTNESS</field></block></value> <value name="B"><block type="text" id="^R9wf{r9J{PN(pXC812="><field name="TEXT">205</field></block></value></block></value> <statement name="DO1"><block type="control" id="g8[Ye^d^8Ri]BljN6vU~"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Sonne nachmittag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="LMx=CYq)))0b.*@m1,D!"><field name="TEXT">Sonne nachmittag weg</field></block></value> <next><block type="debug" id="HthN5,l`oW[:/rX-fuan"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="`k5[~_m@;9ZtJzu!)ptH"><field name="TEXT">***Sonne Nachmittag weg</field></shadow></value></block></next></block></statement></block></statement></block></next></block></next></block></next></block></next></block></statement></block></next></block></xml>
Grüße
-
Klima Einschalten NICHT nach Zeitsteuerung sondern sobald sich eine Variable ändert. `
HiDu bist ja wieder bei lokalen Variablen und einem Blockly :?
Das wird so nicht funktionieren!!!
Lokale Variablen lassen sich NICHT triggern!
Wenn Du den ersten Teil ausgeführt hast, hast Du doch eine Globale Variable "Temperatur".
Grüße
-
Langsam wird n Schuh draus
Was ich heute dazu gelernt habe: Es gibt Lokale Variablen (Quasi in ein und demselben Script) und Globale Variablen, welche ich dann unter den "Objekten" finden kann.
Das mag für die meisten von euch so banal und dämlich klingen, aber vor 2 Wochen wusste ich noch nichtmal was Variablen sind….. :roll:
Dementsprechend habe ich mich nun rangemacht und erstmal mit dem einfacheren Klima Script angefangen und nach der Anleitung von rantaplan das Klimascript umgestellt:
Temperaturabfrage mit globalen Variablen:
Daraufhin Ausführen der Klimaanlage:
Da sind zwar auch wieder lokale Variablen für den aktuellen Status Klimaanlage mit dabei, aber das sollte erstmal nicht stören. Werd ich ggf. später noch ändern.
Nichts desto trotz bleibt für mich für dieses Script als auch für das Beschattungs Script die Frage: Ohne "Timeouts" und zweitmaliger Abfrage werde ich das Problem haben dass zu viel hin und hergeswitched wird, oder?
Beisiel: Die Helligkeitsschwelle liegt bei 205. Nun ist es hell und die Wetterstation meldet den Wert 206, –> Variable "Sonne da" wird gesetzt, Beschattung fährt aus. 2 Min später (oder wie auch immer das Sendeintervall der HM Wetterstation ist), liegt der Helligkeitswert zufällig bei 204. Die Beschattung würde dann wieder einfahren.
Wenn es z.B. wolkig ist mit Abwechselnd Sonne / Wolken, dann würden entsprechend viele Trigger gesetzt werden und die Beschattung fährt ständig ein und aus.
Dies hatte ich vorher mit der "Zeitplan" abfrage etwas unter kontrolle, indem ich einfach gesagt habe er sollte z.B. nur alle 4 Minuten statt 1 Minute abfragen.
Bzw. mit Timeout: Wenn der Trigger gesetzt wird, soll er nochmal 4 Minuten warten und dann prüfen ob die Variable immer noch Wahr ist, und erst dann die Beschattung ausfahren.
Also wäre jetzt ein Timeout die passende Wahl oder?