NEWS
Kombinieren von Zeit und Lichwert (LUX)
-
Hallo,
ich möchte meine Rollos via script in Abhängigkeit des Lichtwertes und der Uhrzeit steuern, mit folgenden Bedingungen:
-
Immer auf 15% wenn Helligkeit kleiner als 150 Lux.
-
Immer um 22:30 geschlossen auf 0%
-
Werktags auf 100% wenn nach 6:30 Uhr und Helligkeit > 150 Lux.
-
Wochenende auf 100% wenn nach 9:00 Uhr und Helligkeit > 150 Lux.
Nun mein Problem, mir ist klar wie ich die Helligkeit abfrage und auch wie ich die Uhrzeit abfrage, nur nicht wie ich beides kombiniere.
Ich verwende folgendes:
// Helligkeit über Bewegungsmelder on('hm-rpc.0.DEIN_BM.BRIGHTNESS', function (obj) { if (obj.newState.val > 150) jalousie_fahren("100"); }); // Über schedule Abragen der Uhrzeit 22:30 Uhr schedule("30 22 * * 1-7", function () { //log('Nachts zu'); jalousie_fahren("0"); });Kann mir mal einer auf die Sprünge helfen wie ich das kombinieren muss?
Danke schonmal
Peoples
-
-
Könnte folgenderweise funktionieren:
on({id: 'hm-rpc.0.MEQ0692930.1.BRIGHTNESS', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rpc.0.MEQ0692930.1.BRIGHTNESS").val < 150) { setState("hm-rpc.0.JEQ0116457.1.LEVEL"/*Rollo_Kueche:1.LEVEL*/, 15); } }); schedule("30 22 * * *", function () { setState("hm-rpc.0.JEQ0116457.1.LEVEL"/*Rollo_Kueche:1.LEVEL*/, 0); }); schedule("30 6 * * 1-5", function () { if (getState("hm-rpc.0.MEQ0692930.1.BRIGHTNESS").val > 150) { setState("hm-rpc.0.JEQ0116457.1.LEVEL"/*Rollo_Kueche:1.LEVEL*/, 100); } }); schedule("0 9 * * 0,6", function () { if (getState("hm-rpc.0.MEQ0692930.1.BRIGHTNESS").val > 150) { setState("hm-rpc.0.JEQ0116457.1.LEVEL"/*Rollo_Kueche:1.LEVEL*/, 100); } });Javascript kann ich aber nicht. Hab es aus Blockly exportiert:
! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">
! <block type="on_ext" id="ZV69-!2CL@Mg=[%r(Y3=" x="38" y="38"><mutation items="1"></mutation>
! <field name="CONDITION">ne</field>
! <value name="OID0"><shadow type="field_oid" id="?S{^%^hpp,ORi[aZN_#?"><field name="oid">hm-rpc.0.MEQ0692930.1.BRIGHTNESS</field></shadow></value>
! <statement name="STATEMENT"><block type="controls_if" id="mHYL#at4mE#%|Tj)vdHq"><value name="IF0"><block type="logic_compare" id="OZ6]h2O~zwOpI~.yCSKh"><field name="OP">LT</field>
! <value name="A"><block type="get_value" id="Gi=d5hTTXCVZLUPabro5"><field name="ATTR">val</field>
! <field name="OID">hm-rpc.0.MEQ0692930.1.BRIGHTNESS</field></block></value>
! <value name="B"><block type="math_number" id="L/Xi~FQoK=jqMp/7Nyg"><field name="NUM">150</field></block></value></block></value>
! <statement name="DO0"><block type="control" id=")/}!~:]dw]IwCZVuzI"><mutation delay_input="false"></mutation>
! <field name="OID">hm-rpc.0.JEQ0116457.1.LEVEL</field>
! <field name="WITH_DELAY">FALSE</field>
! <value name="VALUE"><block type="math_number" id="N#.]WRNw;gzP5NBtt6y"><field name="NUM">15</field></block></value></block></statement></block></statement> ! <next><block type="schedule" id="WuD1NXjzZpW-jy?wM}X"><field name="SCHEDULE">30 22 * * </field>
! <statement name="STATEMENT"><block type="control" id="?LyiMiz/wi}Zk-O+1RF"><mutation delay_input="false"></mutation>
! <field name="OID">hm-rpc.0.JEQ0116457.1.LEVEL</field>
! <field name="WITH_DELAY">FALSE</field>
! <value name="VALUE"><block type="math_number" id="J-2h6:w?LzV6/SX.!K?"><field name="NUM">0</field></block></value></block></statement>
! <next><block type="schedule" id="OXs]0.X9vWkHLVt69b|A"><field name="SCHEDULE">30 6 * * 1-5</field>
! <statement name="STATEMENT"><block type="controls_if" id="[5Rb2?qCi4:9X}Ac/K6^"><value name="IF0"><block type="logic_compare" id="n*;7eR7Xhzs[KQIZ;["><field name="OP">GT</field>
! <value name="A"><block type="get_value" id="iz]S{uT};,@HIF|s=4z"><field name="ATTR">val</field> ! <field name="OID">hm-rpc.0.MEQ0692930.1.BRIGHTNESS</field></block></value> ! <value name="B"><block type="math_number" id="RyUIMTc1u(nCT1L3k[Ip"><field name="NUM">150</field></block></value></block></value> ! <statement name="DO0"><block type="control" id="Vg];wO_s:Z47SSc5WP)"><mutation delay_input="false"></mutation>
! <field name="OID">hm-rpc.0.JEQ0116457.1.LEVEL</field>
! <field name="WITH_DELAY">FALSE</field>
! <value name="VALUE"><block type="math_number" id="^daj]F9Rt,9*r%:gh1i|"><field name="NUM">100</field></block></value></block></statement></block></statement>
! <next><block type="schedule" id="l8F6Gayrsa]JE_!CVZ!["><field name="SCHEDULE">0 9 * * 0,6</field>
! <statement name="STATEMENT"><block type="controls_if" id="tHze[:P%0]?f!9d_h7XX"><value name="IF0"><block type="logic_compare" id="`2x/eLZh]jT:*8Skz1}V"><field name="OP">GT</field>
! <value name="A"><block type="get_value" id="T:-Ke4@j_5cJuz[b%Awq"><field name="ATTR">val</field>
! <field name="OID">hm-rpc.0.MEQ0692930.1.BRIGHTNESS</field></block></value>
! <value name="B"><block type="math_number" id="{5NW@J^b46SJ^@7sQl)G"><field name="NUM">150</field></block></value></block></value>
! <statement name="DO0"><block type="control" id="B=S[;!IKb0cN)e(Ogggb"><mutation delay_input="false"></mutation>
! <field name="OID">hm-rpc.0.JEQ0116457.1.LEVEL</field>
! <field name="WITH_DELAY">FALSE</field>
! <value name="VALUE"><block type="math_number" id="pOhm/*VvIn{=F2PtPww,"><field name="NUM">100</field></block></value></block></statement></block></statement></block></next></block></next></block></next></block></xml>
1146_unbenannt.jpg -
Diesen Ansatz hatte ich auch schon aber ich denke dass das so nicht funktioniert weil:
Wenn -> nach 6:30 Uhr -> und -> Helligkeit über 150 Lux -> dann Rollo hoch
Aber was ist wenn es um 6:30 Uhr noch nicht hell genug ist, dann wäre die Bedingung ja falsch und somit passiert nichts.
Die Frage die sich mir nun stellt, wird die schedule Funktion erneut ausgeführt nach 6:30 und somit die if-Bedingung erneut ausgeführt oder nur um 6:30 Uhr und dann nicht mehr?
-
Diesen Ansatz hatte ich auch schon aber ich denke dass das so nicht funktioniert weil:
Wenn -> nach 6:30 Uhr -> und -> Helligkeit über 150 Lux -> dann Rollo hoch
Aber was ist wenn es um 6:30 Uhr noch nicht hell genug ist, dann wäre die Bedingung ja falsch und somit passiert nichts.
Die Frage die sich mir nun stellt, wird die schedule Funktion erneut ausgeführt nach 6:30 und somit die if-Bedingung erneut ausgeführt oder nur um 6:30 Uhr und dann nicht mehr? `
Nur um 6:30 Uhr und dann nicht mehr. -
Diesen Ansatz hatte ich auch schon aber ich denke dass das so nicht funktioniert weil:
Wenn -> nach 6:30 Uhr -> und -> Helligkeit über 150 Lux -> dann Rollo hoch
Aber was ist wenn es um 6:30 Uhr noch nicht hell genug ist, dann wäre die Bedingung ja falsch und somit passiert nichts.
Die Frage die sich mir nun stellt, wird die schedule Funktion erneut ausgeführt nach 6:30 und somit die if-Bedingung erneut ausgeführt oder nur um 6:30 Uhr und dann nicht mehr?
Nur um 6:30 Uhr und dann nicht mehr.
Dann so:on({id: 'hm-rpc.0.MEQ0692930.1.BRIGHTNESS', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rpc.0.MEQ0692930.1.BRIGHTNESS").val < 150) { setState("hm-rpc.0.JEQ0116457.1.LEVEL"/*Rollo_Kueche:1.LEVEL*/, 15); } }); schedule("30 22 * * *", function () { setState("hm-rpc.0.JEQ0116457.1.LEVEL"/*Rollo_Kueche:1.LEVEL*/, 0); }); on({id: 'hm-rpc.0.MEQ0692930.1.BRIGHTNESS', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rpc.0.MEQ0692930.1.BRIGHTNESS").val > 150 && compareTime("06:30", "22:30", "between")) { setState("hm-rpc.0.JEQ0116457.1.LEVEL"/*Rollo_Kueche:1.LEVEL*/, 100); } }); on({id: 'hm-rpc.0.MEQ0692930.1.BRIGHTNESS', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rpc.0.MEQ0692930.1.BRIGHTNESS").val > 150 && compareTime("09:00", "22:30", "between")) { setState("hm-rpc.0.JEQ0116457.1.LEVEL"/*Rollo_Kueche:1.LEVEL*/, 100); } }); -
Super Lösung!
Hier fehlt aber noch die Wochentag bzw. Wochenende Abfrage oder?
Wenn man es um:
daytype = new Date().getDay(); if (getState("hm-rpc.0.MEQ0692930.1.BRIGHTNESS").val > 150 && compareTime("06:30", "22:30", "between") && (daytype !== 0 || daytype != 6 )) { setState("hm-rpc.0.JEQ0116457.1.LEVEL"/*Rollo_Kueche:1.LEVEL*/, 100);erweitert solle es funktionieren.
Vielen Dank auf jeden Fall, ich werde es später mal probieren und berichten.
Peoples
-
So die endgültige Version sieht jetzt so aus:
var Wohnz_Tuerkontakt = getState("hm-rpc.0.NEQXXX.1.STATE").val;/*Drehgriffkontakt.Wohnz.Tuer.NEQXXX:1.STATE*/ function jalousie_fahren(Wunsch_Level) { if(getState("hm-rpc.0.NEQXXX.1.LEVEL").val != Wunsch_Level) { setTimeout(function(){setState("hm-rpc.0.NEQXXX.1.LEVEL", Wunsch_Level);}, 1000);/*Jalousieaktor.Kueche.Fenster.NEQXXX:1.LEVEL*/ } if(getState("hm-rpc.0.NEQXXX.1.LEVEL").val != Wunsch_Level) { setTimeout(function(){setState("hm-rpc.0.NEQXXX.1.LEVEL", Wunsch_Level);}, 2000);/*Jalousieaktor.Kueche.Fenster.NEQXXX:1.LEVEL*/ } if(getState("hm-rpc.0.NEQXXX.1.LEVEL").val != Wunsch_Level) { setTimeout(function(){setState("hm-rpc.0.NEQXXX.1.LEVEL", Wunsch_Level);}, 3000);/*Jalosieaktor.Wohnz.Fenster.NEQXXX:1.LEVEL*/ } if(getState("hm-rpc.0.NEQXXX.1.LEVEL").val != Wunsch_Level) { setTimeout(function(){setState("hm-rpc.0.NEQXXX.1.LEVEL", Wunsch_Level);}, 4000);/*Jalousieaktor.Wohnz.NEQXXX:1.LEVEL*/ } if((getState("hm-rpc.0.NEQXXX.1.LEVEL").val != Wunsch_Level) && (Wohnz_Tuerkontakt == "0")) { setTimeout(function(){setState("hm-rpc.0.NEQXXX.1.LEVEL", Wunsch_Level);}, 5000);/*Jalousieaktor.Wohnz.Terrassentuere.NEQXXX:1.LEVEL*/ } } on("hm-rpc.0.XXX.1.LUX", function (obj) {/*Lichtsensor.Aussen.NEQXXX:1.LUX*/ daytype = new Date().getDay(); if ( (getState("hm-rpc.0.NEQXXX.1.LUX").val > 150 && (daytype !== 0 || daytype != 6 ) && compareTime("06:30", "22:30", "between")) || (getState("hm-rpc.0.NEQXXX.1.LUX").val > 150 && (daytype === 0 || daytype == 6 ) && compareTime("09:00", "22:30", "between")) ) { jalousie_fahren("100"); } if (getState("hm-rpc.0.NEQXXX.1.LUX").val < 150) { jalousie_fahren("15"); } }); // Über schedule Abragen der Uhrzeit 22:30 Uhr schedule("30 22 * * 1-7", function () { //log('Nachts zu'); jalousie_fahren("0"); });Werde im Lauf des nächsten Tages sehen ob das funktioniert :D
-
Super Lösung!
Hier fehlt aber noch die Wochentag bzw. Wochenende Abfrage oder?
Wenn man es um:
daytype = new Date().getDay(); if (getState("hm-rpc.0.MEQ0692930.1.BRIGHTNESS").val > 150 && compareTime("06:30", "22:30", "between") && (daytype !== 0 || daytype != 6 )) { setState("hm-rpc.0.JEQ0116457.1.LEVEL"/*Rollo_Kueche:1.LEVEL*/, 100);erweitert solle es funktionieren.
Vielen Dank auf jeden Fall, ich werde es später mal probieren und berichten.
Peoples `
Ja, stimmt. Aus Versehen rausgeworfen. Aber in Kombination sollte es dann gehen. Viel Erfolg beim Testen :)
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login