NEWS
[Vorlage] Heizungsthermostatsteuerung 2.1 - Script
-
Meinst du diesen Absatz hier im Heizungsscript? `
Nein, anscheinend haben sich durch die Anpassung an die eigenen Gegebenheiten die Zeilennummern zu sehr verändert. Suche einfach nachsetState(stateId
und füge vor der Zeile
setState(stateId, val); ````den Austausch der ID ein
if(stateId == 'hm-rpc.1.OEQ1712335.4.MANU_MODE') stateId = 'javascript.0.Heizung.Heizplan.Schlafzimmer.Source_Last_Temp';
Im Skript für den Hauptregler der Kaskade sende dann direkt an den HKT, indem Du die richtige ID vorgibst.
const yid = 'hm-rpc.1.OEQ1712335.4.MANU_MODE'; // neue Temperaturvorgabe ( Ausgang PI-Regler ) an HKT
-
So sieht mein Regelscript momentan aus, anders bekomme ich es leider nicht hin. Ich stell mich da wohl zu sehr an. Bei dem Regelscript hat mir paul53 schon sehr geholfen.Es wartet und wenn eine "0" gemeldet wird, sagt er das auch in der LOG, jedoch schickt das Script dann erst nach der eingestellten Zeit ( 10 Minuten ) den neuen Wert an dein Heizscript. `
Hi,
mein Verständnis über das was du erreichen willst
-
Ausgangspunkt ist der Wochenheizpolan
-
Du machst Anpassungen an der aktuellen Temperatur
-
und willst diese als aktuelle SollTemp verwenden
-
gleichzeitig willst du die Funktionatäten des scriptes nutzen (Anwesenheiten, Urlaub, ICAL)
Es gibt zwei Möglichkeiten das zu erreichen
1. Ich mache ein paar Anpassungen damit die manuell gesetzte Temp erhalten bleibt und Anwesenheit etc noch funktiuoniert
Nachteil: manuelle Temperaturen (am Thermostat eingestellt) werden nicht funktionieren. Das zusätzlich zu machen ein hoher Aufwand
2. Du nutzt den aktuellen ZeitSlot (und sicherst die geplante Temp weg und ersetzt diese mit deiner neuen.) Nach Ablauf der Temp speicherst du die gesicherte Temp im abgelaufenen Slot und so weiter.
Nachteil: erfordert mehr Programmierung auf deiner Seite
was meinst du ?
vG Looxer
-
-
Meinst du diesen Absatz hier im Heizungsscript? `
Nein, anscheinend haben sich durch die Anpassung an die eigenen Gegebenheiten die Zeilennummern zu sehr verändert. Suche einfach nachsetState(stateId
und füge vor der Zeile
setState(stateId, val); ````den Austausch der ID ein
if(stateId == 'hm-rpc.1.OEQ1712335.4.MANU_MODE') stateId = 'javascript.0.Heizung.Heizplan.Schlafzimmer.Source_Last_Temp';
Im Skript für den Hauptregler der Kaskade sende dann direkt an den HKT, indem Du die richtige ID vorgibst.
const yid = 'hm-rpc.1.OEQ1712335.4.MANU_MODE'; // neue Temperaturvorgabe ( Ausgang PI-Regler ) an HKT
```` `
Ich hab das von dir einmal versucht, jedoch wenn man den Regler aus dem Heizscript nimmt ( aus dem Gewerk Heizung ), dann läuft das Heizscript nicht mehr. Und die Temperatur wird auf "4.SET_TEMPERATURE" gesetzt.
Frage mich aber gerade, wie ich an beide Regler senden kann? Da steh ich nach vielen Versuchen am Schlauch :roll:
So sieht mein Regelscript momentan aus, anders bekomme ich es leider nicht hin. Ich stell mich da wohl zu sehr an. Bei dem Regelscript hat mir paul53 schon sehr geholfen.Es wartet und wenn eine "0" gemeldet wird, sagt er das auch in der LOG, jedoch schickt das Script dann erst nach der eingestellten Zeit ( 10 Minuten ) den neuen Wert an dein Heizscript. `
Hi,
mein Verständnis über das was du erreichen willst
-
Ausgangspunkt ist der Wochenheizpolan
-
Du machst Anpassungen an der aktuellen Temperatur
-
und willst diese als aktuelle SollTemp verwenden
-
gleichzeitig willst du die Funktionatäten des scriptes nutzen (Anwesenheiten, Urlaub, ICAL)
Es gibt zwei Möglichkeiten das zu erreichen
1. Ich mache ein paar Anpassungen damit die manuell gesetzte Temp erhalten bleibt und Anwesenheit etc noch funktiuoniert
Nachteil: manuelle Temperaturen (am Thermostat eingestellt) werden nicht funktionieren. Das zusätzlich zu machen ein hoher Aufwand
2. Du nutzt den aktuellen ZeitSlot (und sicherst die geplante Temp weg und ersetzt diese mit deiner neuen.) Nach Ablauf der Temp speicherst du die gesicherte Temp im abgelaufenen Slot und so weiter.
Nachteil: erfordert mehr Programmierung auf deiner Seite
was meinst du ?
vG Looxer `
Du hast soweit alles korrekt verstanden, jedoch setzte ich die Temperatur nicht nur einmal, sonder alle 5 Minuten.
Da ich Programmiertechnisch nicht fit bin, tue ich mich noch relativ schwer :shock:
Ich denke, dass man auf die am Regler gesetzte manuelle Temp verzichten kann, da ich am Regler selbst händisch nichts ändere, sondern alles über io.Broker laufen lasse.
Aktuell habe ich die Scriptänderung von @paul53 eingebaut und setzte durch mein anderes Script die Temperatur direkt auf den Regler. Dadurch erfährt dein Script das. Einziges Manko bis jetzt ist, dass bei einem Tempwechsel durch das Wochenprogramm 5 Minuten Leerlaufzeit statt findet, bis mein anderes Script die Temp wieder zum Regler schickt. Da ich nun einen zweiten Regler mit eingebunden habe, wird die neue Temp auch an diesen gesendet. Ich werde dies heute mal so laufen lassen. Da ich Beruflich gerade eingespannt bin, melde ich mich zeitnah wieder.
-
-
Also, ich schreibe mal ein kleines Update, denn ich habe Gestern mal wieder etwas Zeit zum "basteln" gehabt.
Ich habe das Update von @looxer01 gerade eingespielt und lasse nun testweise alles laufen.
Den Vorschlag von Paul53 habe ich ins Heizscript aufgenommen und somit alle SET_TEMPERATURE aller Regler ausgegrenzt.
! ````
//-----------------------------------------------------------------------------------------------------
// Wird verwendet um State-Werte zu setzen, merkt sich wenn ein eigener State geändert wurde,
// um das später ignorieren zu können
//-----------------------------------------------------------------------------------------------------
function setOwnState(stateId, val) {
if (stateId.indexOf(path) !== -1 && cron === 0) {
if (! ownStateChanges[stateId]) ownStateChanges[stateId] = 1;
else ownStateChanges[stateId]++;
}
if(stateId == 'hm-rpc.0.OEQ1712335.4.SET_TEMPERATURE') stateId = 'javascript.0.Heizung.Heizplan.Schlafzimmer_test_paul53.Source_Last_Temp';
if(stateId == 'hm-rpc.0.OEQ1704782.4.SET_TEMPERATURE') stateId = 'javascript.0.Heizung.Heizplan.Schlafzimmer_test_paul53.Source_Last_Temp';
setState(stateId, val);Ich lasse meinen Regler jetzt den neuen Temp-Wert auf eine Systemvariable in die CCU2 übertragen und ein Script in der CCU2 übernimmt das setzten der Temperaturen zu den Heizthermostaten. ( Damit wären auch die Übertragungsfehler seitens der CCU2 behoben, die ich ab und an hatte ) Mir ist nur folgende Bedeutung noch nicht so richtig klar, was da eigentlich gemacht wird mit der Zeile: >! ```` if(stateId == 'hm-rpc.0.OEQ1712335.4.SET_TEMPERATURE') stateId = 'javascript.0.Heizung.Heizplan.Schlafzimmer_test_paul53.Source_Last_Temp';
Ein weiteres Script überprüft nun alle 30 Minuten, vergleicht die Aussentemperatur mit einem fest gewählten Schwellpunkt und setzt dann den Datenpunkt "javascript.0.Heizung.Heizplan.GlobaleParameter.Heizperiode" entweder auf "true" oder auf "false". Wenn die Heizperiode wieder eingeschalten wird, wird zudem mit einer Verzögerung von 1000 ms der Datenpunkt "View_Manually_Adjusted" auf Null gesetzt. Somit beginnt das Heizscript einmal alles einzulesen ( was ich von der LOG so verstanden habe ). Diesen Datenpunkt "View_Manually_Adjusted" setzte ich deswegen auf Null, da es gestern beim Wechsel der Heizperiode von FALSE auf TRUE Probleme gab und das Heizscript nichts mehr gemacht hat. ( eventuell gelöst durch die neue Version )
Script Heizperiode Sommer/Winter: ( hab ich leider nur mittels Blockly so hinbekommen )
!
schedule("*/30 * * * *", function () { if (getState("hm-rpc.1.CUX1300001.1.TEMPERATURE").val < getState("javascript.0.Heizung.Heizplan.GlobaleParameter.Vorgabe_Heizplanabschaltung_über_Aussentemperatur").val) { // Heizperiode Aktivieren setState("javascript.0.Heizung.Heizplan.GlobaleParameter.Heizperiode"/*Wenn Heizperiode dann Aktivierung der Heizplaene*/, true); // Heizplan Schlafzimmer "Manuelle" Temperatur auf "0" setzten, um Heizscript neu zu starten if (getState("javascript.0.Heizung.Heizplan.GlobaleParameter.Heizperiode").val == false) { setStateDelayed("javascript.0.Heizung.Heizplan.Schlafzimmer.View_Manual_Temp_Duration"/*Gueltigkeit in Minuten fuer manuelle Temperatur Aenderung*/, 0, true, 1000, false); console.log('Heizplan: "Manuelle" Temperatur auf "0" gesetzt'); } console.log('Heizperiode AN'); } else if (getState("javascript.0.Heizung.Heizplan.Schlafzimmer.View_Manually_Adjusted").val >= getState("javascript.0.Heizung.Heizplan.GlobaleParameter.Vorgabe_Heizplanabschaltung_über_Aussentemperatur").val) { // Heizperiode Deaktivieren setState("javascript.0.Heizung.Heizplan.GlobaleParameter.Heizperiode"/*Wenn Heizperiode dann Aktivierung der Heizplaene*/, false); console.log('Heizperiode AUS'); } }); !
-
Update:
Es gab noch ein kleines Problem mit meiner Abschaltung über die Aussentemp, dies hab ich gefixt und es klappt nun.
Des weiteren, gibt es noch ein kleines Problem, dass das Heizscript ja die manuelle Temp aus dem Regler wieder liest und dann den Zeitstempel auf den aktuellen Zeitabschnitt legt.
-
Update:
Es gab noch ein kleines Problem mit meiner Abschaltung über die Aussentemp, dies hab ich gefixt und es klappt nun.
Des weiteren, gibt es noch ein kleines Problem, dass das Heizscript ja die manuelle Temp aus dem Regler wieder liest und dann den Zeitstempel auf den aktuellen Zeitabschnitt legt.
filename="View.png" index="0">~~ `
Hi.
Dazu hatte ich ja vorher schon geschrieben. Schau dir das bitte nochmal an.
Vg looxer
Gesendet von meinem SM-G965F mit Tapatalk
-
Hi @looxer01,
gibt es da auch eine Möglichkeit die heizperiode pro thermostat an bzw aus zu stellen ?
Im moment haben wir ja den globalen wert der sich dan auf alle auswirkt, in meiner situation möchte ich aber gerne bestimmte räume welche nicht benutzt werden für ein par tagen nicht beheizen.
Gr,
Dutch
-
Hi Dutch,
gibt es da auch eine Möglichkeit die heizperiode pro thermostat an bzw aus zu stellen ? `
dazu faellt mir nur ein Workaround im Moment ein.Ueber ICAL und setzen eines Party Events mit z.B. 3 Grad Absenkungstemperatur der jeweiligen Räume könnte das gemacht werden.
Alle andere Räume muessten dann eine Absenkung von null haben. Ist aber nur ein Workaround.
Das Einbauen dieser Funktion wäre natürlich möglich. Müsste ich mir mal genauer ansehen.
Willst du erstmal den Workaround testen ?
vG Looxer
-
Wäre nicht auch ein 2. Wochenprofil eine Lösung?
Grüße Brati
Von unterwegs gesendet…
-
Wäre nicht auch ein 2. Wochenprofil eine Lösung? `
Hi Brati,na klar. Vielleicht besser aber auch etwas aufwändiger.
Das Profil kann manuell oder per ICAL aktiviert werden.
Durch entsprechende Einstellung brauch auch nur eine einzige Temp geändert werden.
vG Looxer
-
Noch ein Punkt zur Funktionalität der Heizperiode.
Wenn die Heizperiode ausgeschaltet wird, dann wird die Temp auf die vordefinierte Temp gesetzt um die Ventile zu öffnen und zu schliessen.
Unschön ist es, wenn die Ventile geöffnet werden sollen und Fensterverschluesse dann immer wieder zur Absenkung führen.
Daher habe ich meine SommerTemp auf 12 Grad gesetzt. (Temp bei geöffneten Fenstersensoren) Die Thermostate sind dann gesamten Sommer über ruhig und nicht unnotig Batterieenergie.
Im Profil kann aber natürlich ebenfalls z.B. 12 Grad hinterlegt werden.
vG Looxer
-
Hmm wochenprofiel währe wohl die beste lösung das stimmt damit gehts
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Update:
Es gab noch ein kleines Problem mit meiner Abschaltung über die Aussentemp, dies hab ich gefixt und es klappt nun.
Des weiteren, gibt es noch ein kleines Problem, dass das Heizscript ja die manuelle Temp aus dem Regler wieder liest und dann den Zeitstempel auf den aktuellen Zeitabschnitt legt.
View.png `
Hi.
Dazu hatte ich ja vorher schon geschrieben. Schau dir das bitte nochmal an.
Vg looxer
Gesendet von meinem SM-G965F mit Tapatalk `
Hallo looxer01,
Aktuell mal muss ich glücklicherweise sagen, dass alles sauber seit 2 Tagen durchläuft. Die HKT werden sauber geregelt, die Ab - und Zuschaltung über Aussentemperatur funktioniert tadellos und auch die sonstigen Funktionen ( die für mich persönlich relevant sind ) funktionieren einwandfrei.
Ich wolle mich persönlich bei @looxer01 und @paul53 noch für die tatkräftige Unterstützung und für das behalten der Nerven bedanken :lol:
Natürlich werde ich das hier gelernte auch für andere bereit stellen und diese unterstützen.
Sollte jemand das Script für die Ab - und Zuschaltung mittels Aussentemp benötigen kann sich gerne melden.
-
atürlich werde ich das hier gelernte auch für andere bereit stellen und diese unterstützen. `
Danke dir Quorle,Freut mich, dass es jetzt bei dir laeuft.
jede Unterstützung hier ist hoch willkommen.
vG Looxer
-
Wollte euch hier nun einmal die Regelung mittels des Heizscriptes, dem PI-Regler und dem Script für die Abschaltung über die Aussentemperatur zeigen. Nun heißt es nur doch "Optimierungen".
-
Ich habe ein Problem mit dem View.
Ein einzelnes View (in meinem Fall das vom Wohnzimmer) geht. Aber jedes weiter liefert nur eine Anzeige wie auf dem Bild.
Die Objekte für den Staus habe ich angepasst aber weder im Profil unten noch an verschiedenen anderen Stellen wird etwas angezeigt.Dort erscheinen immer nur Fehler. Ich habe jetzt schon seit Stunden probiert aber es will einfach nicht. Im Editor Fenster werden komischer weiße die Werte angezeigt.
6144_problem.png -
Ein einzelnes View (in meinem Fall das vom Wohnzimmer) geht. Aber jedes weiter liefert nur eine Anzeige wie auf dem Bild. `
Hi,es gibt einige Möglichkeiten warum das so aussehen kann
1. Der Raum "Schlafzimmer" ist nicht in den Datenobjekten angelegt
-
überprüfe die Objektliste (ist der Raum dort angelegt ?)
-
Überprüfe die Räume in den Aufzählungen (es könnte Probleme mit Klein-und Großschreibung geben)
2. Der VIS view wurde nicht korrekt mit dem Raum Schlafzimmer in allen Objekten versehen
-
evt gibt es Probleme mit Klein-und Großschreibung (muss mit den Aufzählungen abgeglichen werden)
-
evt gibt es Probleme mit dem Editor. Ich empfehle notepad++ (Vermeidung von Steuerzeichenproblemen)
-
Suchen und Ersetzen war fehlerhaft für den VIS view (kann immer mal passieren )
-
Sonderzeichen im Raumnamen können Probleme machen
vG Looxer
-
-
Hey Leute, ich hab wieder ein Problem. Hab mein Script ungenannt in Heizung. Dann habe ich den Raum Wohnzimmer anstatt Schlafzimmer eingebunden und dies funktioniert auch alles inclusive VIS.
Heute wollte ich den Raum Kind_1 einbinden. Den Thermostat sauber eingebunden in Gewerke und Räume. Im Script unter Roomlist den Raum Kind_1 eingebunden und Script Heizubg gestartet. Jedoch erstellt das Script den Ordner mit den States unter Objekte nicht. Hab schon alles versucht und das Script sagt immer ( wenn man es nur alleine mit Kind_1 startet ) das keine Thermostate gefunden werden.
Langsam verzweifle ich wieder einmal.
-
Hi Quorle,
habe mal wieder kein System vor mir.
Kannst du das mal statt mit Kind_1 mit Kind1 versuchen ?
Stelle auch sicher, dass auf den objektzeilen (objektliste) der Thermostate Raum und Gewerk richtig zugeordnet sind.
vG Looxer
-
Ich muss mal ganz blöd Frage wie man das mit der Zuordnung der Gewerke macht?
Ich habe einfach bei den Sammlungen ein Punkt Heizung angelegt und diesen inkls dem Raum zugeordnet.
Ich nutze mehrere Max Thermostate, laut Anleitung müssen diese ja eigentlich gar keinem Raum zugeordnet werden
Gesendet von meinem MHA-L29 mit Tapatalk