NEWS
Skript für Rollladensteuerung
-
Hi,
hab hier im Forum schon gesucht, aber nix passendes gefunden. Ich will eigentlich nur meine Rollläden in abhängigkeit von Wetter und Zeit steuern.
Versuche das über blockly abzubilden, aber da sind glaub noch einige Würmer drin. Kann mir da jmd bitte etwas behilflich sein?
Zielbild ist, dass jeden Tag im 10Uhr die Wettervorhersage geprüft wird. Sollte es über 25C werden, sollen die Rollläden runtergefahren werden.
Bonus: Er prüft noch ob die Terrassentür auf ist. Ist sie offen, sollen die Rollläden nicht runtergefahren werden.
schedule("* 10 * * *", function () { on({id: "yr.0.forecast.day0.temperatureMax"/*Forecast of temperature for today*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (parseFloat((obj.state ? obj.state.val : "")) >= 25) { setState("hm-rpc.0.OEQ0885581.1.LEVEL"/*Rollladen schlafzimmer rechts.LEVEL*/, 90); setState("hm-rpc.3.001118A98A3F62.4.LEVEL"/*Rollladen wohnzimmer.LEVEL*/, 90); setState("hm-rpc.3.001118A98BC15A.4.LEVEL"/*Rollladen schlafzimmer links.LEVEL*/, 90); setState("hm-rpc.3.001118A98A4119.4.LEVEL"/*Rollladen küche.LEVEL*/, 90); } }); }); false && false; obj.channelId;
-
Trigger im Trigger ist immer ne blöde Idee. Dein interner Trigger funktioniert nur einmal am Tag um 10 Uhr und wenn nicht gerade exakt in dem Moment seine Bedingung erfüllt wird, dann macht er eben auch nichts und das dürfte zu 100% immer der Fall sein
Lass einfach den unnötigen Zeitplan weg, dann sollte das schon laufen. Was für ein Typ ist den Dein abgefragter DP, wenn der erst mal nach Zahl konvertiert werden muss?
-
nur einmal am Tag um 10 Uhr `
60 mal am Tag zwischen 10 Uhr und 10:59 Uhr. Es werden täglich 60 Datenpunkt-Trigger erzeugt :!: -
OK, wenn er alle Minute noch mit drin hat, was aller Wahrscheinlichkeit nach trotzdem in die Hose geht :lol:
Dann hat er da nach seiner Vorgabe den nächsten Fehler, denn täglich um 10 Uhr wäre "0 10 * * *
-
Ok, den Timer hab ich korrigiert. Ich brauch ihn schon da der Rollladen ja nicht nachts runterfahren soll, weil es an dem Tag heiss wird. Resourcenschonender is es sicher auch, wenn das Skript nicht den ganzen Tag laufen soll und immer prüft ob es schon 10 Uhr is.
Hab es jetzt nochmal überarbeitet. Jetzt siehts glaub ganz gut aus. Oder sieht noch jmd nen Fehler?
7870_unbenannt.jpg -
Der String-Vergleich funktioniert nicht immer. Z.B. ist bei einem Stringvergleich "3 °C" > "25 °C". Wenn "Forecast of temerature for today" als String vorliegt, muss mit nach Zahl gewandelt werden und mit einer Zahl verglichen werden, so wie im ersten Skript.
-
Danke! Habs angepasst
-
LEVEL ist ein String ? Wenn es HomeMatic-Datenpunkte sind, müssen Zahlen verwendet werden. Auch "CLOSED(0)" sieht eigenwillig aus.
-
Das Closed (0)"" hab ich aus dem Datenpunkt rauskopiert. ich konvertier es jetzt mal Zahl. Kann ja nicht schaden. Rest hab ich angepasst. Denke dann sollte es jetzt passen