NEWS
Erstes Scipt reagiert nicht wie geplant
-
@raspido Was mir aufgefallen ist: Bei genau 25°C passiert nichts. Ebenso wenn die Temperatur unter 25°C und das Licht kleiner 2500 ist. Ist das so gewollt?
-
@dr-bakterius sagte: Bei genau 25°C passiert nichts. . Ist das so gewollt?
So prüfst Du es. Ändere Zeile 20 in
} else if (licht>2500) {
wenn licht die Außenhelligkeit enthält und die Rollos nur über 2500 auf 100 % fahren sollen.
Allerdings solltest Du eine größere Hysterese einbauen, damit die Rollos nicht im Bereich von 25°C ständig rauf und runter fahren. -
@paul53 Eigentlich war das so geplant, dass die Rollos nur Tagsüber runter fahren, wenn es über 25 Grad wird. Sobald es kälter wird und es Tagsüber ist, sollen die Rollos hoch fahren.
Ich dachte über den Weg bekomme ich das hin. Den ich möchte ja nicht, dass die Rollos Nachts plötzlich hoch fahren. Deshalb habe ich den Helligkeitssensor genommen mit über 2500 Lux als Wert.
Und zur Info, falls es nicht bekannt ist 0 ist Unten und 100 ist oben. Also bei den Rollos.
Ich hoffe man versteht was ich versuche aus zu drücken.
Die reguläre Rollosteuerung läuft aktuell noch über die CCU selber. Also bei Sonnenuntergang Rollos runter, bei Sonnenaufgang Rollos Hoch. Diese Erweiterung war dafür gedacht, dass vor allem im Sommer es nicht so heiß in der Bude wird.
Ich hab nochmal verschiedene Tutorials mal rein geguckt und oben bei dem abfragen der Temperatur habe ich den Parameter bei Chance von "le" auf "ne" geändert und gerade tat sich plötzlich was. Also alle Rollos sind nun auf 25% muss nur beobachten ob das nun so klappt wie gewünscht oder was passiert.
Michael
-
@raspido sagte in Erstes Scipt reagiert nicht wie geplant:
. Also alle Rollos sind nun auf 25%
... und dein Duty Cycle explodiert in der CCU !
... fahre die Rollladen einzeln mit Verzögerung .
-
@glasfaser Okay, muss ich gucken, wie ich in JavaScript eine Pause von 5 Sekunden oder so rein fummel. Aber erst später. Gerade ist für so anstrengende Arbeit etwas zu warm.
-
@raspido sagte in Erstes Scipt reagiert nicht wie geplant:
setState("hm-rpc.0.PEQ0181559.1.LEVEL", 25);
setStateDelayed("hm-rpc.0.PEQ0181559.1.LEVEL", 25, 5000, false); setStateDelayed("hm-rpc.0.PEQ0181557.1.LEVEL", 25, 10000, false); setStateDelayed("hm-rpc.0.PEQ0181507.1.LEVEL", 25, 15000, false);
-
@glasfaser Oder so. Danke für die Hilfe.
-
@paul53 said in Erstes Scipt reagiert nicht wie geplant:
Hysterese
Meist am besten zusätzlich noch eine "Pause" einbauen, dass nach dem Fahren der Rollos z.B. 15 - 30 Minuten keine weitere Aktion gestartet wird oder so?
Also so oder so ähnlich:
await Sleep(900000);
Michael
-
@glasfaser sagte: und dein Duty Cycle explodiert in der CCU !
Auch, weil bei jeder Temperaturänderung wieder an alle Rollos gesendet wird. Besser so:
var level = getState('hm-rpc.0.PEQ0181456.1.LEVEL').val; on('hm-rpc.1.0010D8A990A07B.1.ACTUAL_TEMPERATURE', function (dp) { let temp = dp.state.val; let licht = getState("hm-rpc.1.000D58A9915FBC.1.AVERAGE_ILLUMINATION").val; if(licht > 2500) { if (temp > 25) level = 25; else if (temp < 24) level = 100; if(level != getState('hm-rpc.0.PEQ0181456.1.LEVEL').val) { setState("hm-rpc.0.PEQ0181456.1.LEVEL", level); setStateDelayed("hm-rpc.0.PEQ0181557.1.LEVEL", level, 5000); setStateDelayed("hm-rpc.0.PEQ0181507.1.LEVEL", level, 10000); setStateDelayed("hm-rpc.0.OEQ2341971.1.LEVEL", level, 15000); setStateDelayed("hm-rpc.0.PEQ0181297.1.LEVEL", level, 20000); setStateDelayed("hm-rpc.0.PEQ0181518.1.LEVEL", level, 25000); setStateDelayed("hm-rpc.0.PEQ0181504.1.LEVEL", level, 30000); setStateDelayed("hm-rpc.0.PEQ0181520.1.LEVEL", level, 35000); setStateDelayed("hm-rpc.0.PEQ0181559.1.LEVEL", level, 40000); } } });
-
@paul53 Okay danke für die Hilfe. Ich merke, ich muss noch einiges "üben" und lernen was Programmieren an geht.
Aber ich denke es wird schon mit etwas Mühe.
Einer der nächsten Projekte was noch auf dem Plan steht, eine Werteliste aus einem Datenpunkt in ein Array packen, den im Anschluß in ein neues Format zu packen und in ein neuen Array packen und im Anschluß in einen anderen Datenpunkt zu packen. Aber ich denke dafür werde ich nochmal etwas üben.
Also der Plan ist aus dem Datenpunkt A (Auto,Apfel,Baum,...) einen Datenpunkt B folgenden Inhalt bringen (Auto=Auto,Apfel=Apfel,Baum,Baum,...). Dieses "Problem" ist für mein Sonos Lautsprecher.
Michael
-
Das Problem mit dem Array habe ich gelöst. Vielleicht nicht die Eleganteste Lösung aber zumindest der Teil mit den Datenpunkten funktioniert. Nur leider bringt mir das mit meiner Situation im Habpanel nicht weiter.
Aber trotzdem wollte ich mal mein Code zeigen, der mit Sicherheit nicht der eleganteste ist, aber er funktioniert.
on({id: 'hm-rpc.0.PEQ0177610.1.PRESS_SHORT'/*Display Wz:1 PRESS SHORT*/}, function (obj) { var favoritenliste = getState("javascript.0.sonos.favTexte").val; var listederfavoriten = favoritenliste.split(";"); var aneueliste = ["a","b"]; var sneueliste = "a"; var elemente = listederfavoriten.length; console.log(elemente); for (var i = 0; i<elemente; i++) { aneueliste[i] = listederfavoriten[i] + "=" + listederfavoriten[i]; console.log(aneueliste[i]); } setState("javascript.0.sonos.favoriten", aneueliste.join(",")); });
Mein Plan war es eigentlich über meinen neu erzeugten Datenpunkt die Items des Auswahlwidgets zu erzeugen, nur leider klappt das nicht wie erhofft. Bei der Manuell erzeugten Liste, ändert das Auswahlwidget beim auswählen den Datenpunkt vom Sonos, welcher den aktuellen Favoriten in die Wiedergabe bringt. Also den Datenpunkt favorietes_set mit der Auswahl füllt.
Vielleicht hat von euch jemand eine Idee oder kennt eine Möglichkeit für mein Problem.
Ich hoffe man versteht was ich machen möchte und wozu.
Michael