NEWS
[Vorlage] Heizungsthermostatsteuerung 2.1 - Script
-
Hallo,
ich habe seit dem Wochenende das Script 201 im Einsatz.
Meine Umgebung: Max-Cube mit Max!-Thermostaten, Xiaomi-Fenster-Tür-Kontakte.
Mein Problem:
Wenn ich z.B. die Raumthemperatur auf 20 Grad und die Abwesenheitsabsenkung auf 5 Grad einstelle und in der View das Flag Anwesend entferne wird zunächst die Soll-Themperatur richtig auf 15 Grad gestellt. Einige Sekunden später springt die Soll-Themperatur wieder auf 20 Grad und in der View sehe ich manuell gesetzte Soll-Themperatur bei 20 Grad für 120 Minuten.
Da scheint irgend etwas schief zu laufen.
Ansonsten tolles Programm und danke für deinen Einsatz. `
Wie sehen denn deine Einstellungen für die Xiaomi Sensoren unter: // Tabelle der Verschlusssensoren fuer NichtHomematic Geräte
aus?
Danke
SG
Mario
-
-
Hallo,
hier meine gesamten Anpassungen:
Guten Morgen,
danke für den Tipp. Leider bekomme ich den Raum mit dem Xiaomi Verschluss nicht angezeigt.
Ich sollte wohl etwas genauer ins Detail gehen.
Zur Situation:
1. Raum, die Wohnkücke, wird korrekt eingebunden. In diesem Raum ist das Heizkörperthermostat HM-CC-RT-DN und der Homematicverschluss HM-Sec-SCo verbaut.Wird eingebunden und funktioniert problemlos.
2. Raum, Kinderzimmer, wird nicht eingebunden. In diesem Raum ist auch das Heizkörperthermostat HM-CC-RT-DN verbaut. Aber mit den Xiaomi Tür und Fenstersensor.
Raum und Funktion (Gewerk) sind korrekt zugewiesen, Scriptversion 2.01 vom 31.10.2018
// Gewerke - wichtige Einstellung, da nur die Geraete eingelesen werden, die im Gewerk vorhanden sind // Das Gewerk muss alle Thermostate bzw Sensoren enhalten var HeizungGewerk = "Heizung"; // diesem Gewerk muessen alle Thermostate zugeordnet sein. var SensorGewerk = "Verschluss"; // diesem Gewerk muessen alle Verschlusssensoren zugeordnet sein.
// Raumliste - empfohlen zu benutzen fuer kleine Systeme // UseRoomList heisst, dass die nur hier gelisteten Raeume angelegt und abgearbeitet werden - somit werden nicht sofort alle Datenpunkte aller Räume angelegt (ca. 100 pro Raum und Profil) // dies dient hauptsaechlich zur Anlage der Daten - So koennen Raum fuer Raum alle States angelegt wrden // Das sollte genutzt werden mit langsamen Rechnern wie Raspi mit SD karte var UseRoomList = true; // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet var RoomList = []; RoomList[0] = ['Wohnkueche']; // Liste der Raeume die gesteuert werden soll zum Testen RoomList[1] = ['Kinderzimmer']; //RoomList[2] = ['Raumx']; //RoomList[3] = ['Raum3']; //RoomList[4] = ['Raum4']; //RoomList[5] = ['Raum5']; //RoomList[6] = ['Raum6']; //RoomList[7] = ['Raum7']; //RoomList[8] = ['Raum8']; //RoomList[9] = ['Raum9'];
// Tabelle der Verschlusssensoren fuer NichtHomematic Geräte // 5 = wenn script die Absenktemperatur setzen soll, dann false var NoneHMSenorTab = []; // 0= Raum 1 = Datenpunkt vis vor Geraet 0.RPC-Pfad 2\. Datenpunkt Geraet 3\. Datenpunkt FensterstatusGeraeteType 4.Verschlussstatus bei geschlossen 5\. TempAbsenkung automatisch, NoneHMSenorTab[0] = ['initial', 'javascript.0.Heizung.Heizplan', 'Wohnzimmer' , 'TestZusaetzlichesFenster' , false, false]; NoneHMSenorTab[1] = ['initial', 'fhem.0', 'OG_DU_TF' , 'state' , 'closed', false]; NoneHMSenorTab[2] = ['initial', 'maxcube.0.devices', 'contact_0a9d75', 'opened', false, true]; NoneHMSenorTab[3] = ['Kinderzimmer','mihome.0.devices', 'magnet_158d0001e4c32d' , 'state', false, false];
Die Möglichkeiten aus diesem Beitrag habe ich auch versucht: viewtopic.php?f=21&t=10096&start=440#p181466
Ohne Erfolg.
Jemand eine Idee?
Danke
SG
Mario
-
Warum schreibst du den Xiaomi Kontakt nicht als "NoneHMSenorTab[0]" ein oder gibt es die Geräte? (Dann würde ich auch dort die Räume benennen) Bei mir laufen die Xiaomi Kontakte ohne Probleme:
var NoneHMSenorTab = []; // 0= Raum 1 = Datenpunkt vis vor Geraet 0.RPC-Pfad 2\. Datenpunkt Geraet 3\. Datenpunkt FensterstatusGeraeteType 4.Verschlussstatus bei geschlossen 5\. TempAbsenkung automatisch, NoneHMSenorTab[0] = ['Kind1', 'zigbee.0', '00158dxxx518af3' , 'opened' , false, false]; NoneHMSenorTab[1] = ['Kind2', 'mihome.0.devices', 'magnet_158d000251xxx2' , 'state' , false, false]; NoneHMSenorTab[2] = ['Kind2', 'mihome.0.devices', 'magnet_158d00025xxxxc' , 'state' , false, false];
Grüße
Brati
-
Habs eingebaut… FOlgende Meldung im Log : `
jo, das zeigt, dass das Script davon ausgeht, dass der Sensor direktverknuepft ist.Ich glaube ich habe da einen fehler gefunden:
Tausche bitte nochmal aus:
if (SensorList[tabNo][9] ) { // Sensor ist direktverknuepft und wurde geoeffnet log("Routine SensorChange: Sensor Direktverknuepft Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+ SensorList[tabNo][7], "info" ); writelog(room, id, "Routine SensorChange: Sensor Direktverknuepft Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+ SensorList[tabNo][7]) ; return; // nichts machen, da die Absenkung automatisch passiert } vG Looxer ```` `
Also mit dieser Änderung und den folgenden Einstellungen, weil ich den Xiaomi - Sensor als Cux eingebunden habe, funktioniert es jetzt auch bei mir, super danke
ThermostatTypeTab[2] = ['hm-rpc.0.', 'HM-CC-RT-DN' , 'Heizkoerperthermostat(neu)' ,'HT', '4.SET_TEMPERATURE' , false, '4.MANU_MODE', false, '4.ACTUAL_TEMPERATURE', '4.CONTROL_MODE', 12, 0]; SensorTypeTab[1] = ['hm-rpc.0.', 'HM-Sec-SC' , 'Fenstersensor (alt)' , 'HM', '1.STATE' , false, false, false ]; ```` `
… wie hast du denn den Xiaomi Sensor mit Cux eingebunden?
Gibts da irgendwo eine Anleitung dazu?
Danke
SG
Mario
-
Warum schreibst du den Xiaomi Kontakt nicht als "NoneHMSenorTab[0]" ein oder gibt es die Geräte? (Dann würde ich auch dort die Räume benennen) Bei mir laufen die Xiaomi Kontakte ohne Probleme:
var NoneHMSenorTab = []; // 0= Raum 1 = Datenpunkt vis vor Geraet 0.RPC-Pfad 2\. Datenpunkt Geraet 3\. Datenpunkt FensterstatusGeraeteType 4.Verschlussstatus bei geschlossen 5\. TempAbsenkung automatisch, NoneHMSenorTab[0] = ['Kind1', 'zigbee.0', '00158dxxx518af3' , 'opened' , false, false]; NoneHMSenorTab[1] = ['Kind2', 'mihome.0.devices', 'magnet_158d000251xxx2' , 'state' , false, false]; NoneHMSenorTab[2] = ['Kind2', 'mihome.0.devices', 'magnet_158d00025xxxxc' , 'state' , false, false];
Grüße
Brati `
Die anderen Sensoren gibt es nicht. Habe jetzt mal nur den real vorhandenen Xiaomi eingetragen und alles neu gestartet. Brachte leider auch keinen Erfolg. Trotzdem danke.
// Tabelle der Verschlusssensoren fuer NichtHomematic Geräte // 5 = wenn script die Absenktemperatur setzen soll, dann false var NoneHMSenorTab = []; // 0= Raum 1 = Datenpunkt vis vor Geraet 0.RPC-Pfad 2\. Datenpunkt Geraet 3\. Datenpunkt FensterstatusGeraeteType 4.Verschlussstatus bei geschlossen 5\. TempAbsenkung automatisch, //NoneHMSenorTab[0] = ['initial', 'javascript.0.Heizung.Heizplan', 'Wohnzimmer' , 'TestZusaetzlichesFenster' , false, false]; //NoneHMSenorTab[1] = ['initial', 'fhem.0', 'OG_DU_TF' , 'state' , 'closed', false]; //NoneHMSenorTab[2] = ['initial', 'maxcube.0.devices', 'contact_0a9d75', 'opened', false, true]; NoneHMSenorTab[0] = ['Kinderzimmer','mihome.0.devices', 'magnet_158d0001e4c32d' , 'state', false, false];
SG
Mario
-
jo, das zeigt, dass das Script davon ausgeht, dass der Sensor direktverknuepft ist.
Ich glaube ich habe da einen fehler gefunden:
Tausche bitte nochmal aus:
if (SensorList[tabNo][9] ) { // Sensor ist direktverknuepft und wurde geoeffnet log("Routine SensorChange: Sensor Direktverknuepft Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+ SensorList[tabNo][7], "info" ); writelog(room, id, "Routine SensorChange: Sensor Direktverknuepft Sensorstatus geaendert - ID " + id + " Raum " + room +" auf "+ SensorList[tabNo][7]) ; return; // nichts machen, da die Absenkung automatisch passiert } vG Looxer ```` `
Also mit dieser Änderung und den folgenden Einstellungen, weil ich den Xiaomi - Sensor als Cux eingebunden habe, funktioniert es jetzt auch bei mir, super danke
ThermostatTypeTab[2] = ['hm-rpc.0.', 'HM-CC-RT-DN' , 'Heizkoerperthermostat(neu)' ,'HT', '4.SET_TEMPERATURE' , false, '4.MANU_MODE', false, '4.ACTUAL_TEMPERATURE', '4.CONTROL_MODE', 12, 0]; SensorTypeTab[1] = ['hm-rpc.0.', 'HM-Sec-SC' , 'Fenstersensor (alt)' , 'HM', '1.STATE' , false, false, false ]; ```` `
… wie hast du denn den Xiaomi Sensor mit Cux eingebunden?
Gibts da irgendwo eine Anleitung dazu?
Danke
SG
Mario `
-
… so, hab jetzt noch mal von vorne begonnen und alles neu angelegt. Rechner neu gestartet und jetzt funktioniert es.
Keine Ahnung wo der Fehler gelegen ist.
Danke
SG
Mario
-
Hallo,
danke erstmal für das tolle script.
Ich habe leider noch Probleme bei der Installation.
Mein Log zeigt an
Log.PNG
Ich verwende Max-Thermostate und Xiaomi Fensterkontakte
Was habe ich geändert…
var UseRoomList = true; // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet var RoomList = []; RoomList[0] = ['Kinderzimmer_OG']; // Liste der Raeume die gesteuert werden soll zum Testen RoomList[1] = ['GästeWC']; RoomList[2] = ['Wohnzimmer'];
NoneHMTab[0] = ['Kinderzimmer_OG','maxcul.0','KMD3029774','desiredTemperature',12]; NoneHMTab[1] = ['GästeWC','maxcul.0','JMD3035215','desiredTemperature',12]; NoneHMTab[2] = ['Wohnzimmer','maxcul.0','KMD3029415','desiredTemperature',12];
NoneHMSenorTab[0] = ['Kinderzimmer_OG','mihome.0.devices','magnet_158d00016c8c03' ,'state' ,false,false]; NoneHMSenorTab[1] = ['GästeWC', 'mihome.0.devices','magnet_158d0001b95a90' ,'state' ,'false',false];
Räume und Funktion auch zugewiesen und auf richtige Schreibweise geachtet.
Jemand eine Idee?
Danke euch `
Ich habe jetzt mal nur ein Thermostat angegeben ,aber leider kommt der gleiche Fehler noch.
Kann mir vielleicht noch jemand helfen?
-
Was hast Du denn an Stelle 2207 im Heizungsscript stehen? Vielleicht kommen wir dadurch auf die Spur.
-
Was hast Du denn an Stelle 2207 im Heizungsscript stehen? Vielleicht kommen wir dadurch auf die Spur. `
<code>createState(State, 0, {read: true, write: true, type: 'number', name: 'Im View manuell eingestellte Temperatur - 0=reset' , desc: 'Im View manuell eingestellte Temperatur - 0=reset'}); Da habe ich nichs geändert</code>
-
Hallo miteinander,
"leider" scheint es hier so gut wie keine Fragen von Anfängern in Javascript o. ä. zu geben, nun da muss ich da wohl durch .
Folgende Ausgangslage im Versuchsaufbau:
piVCCU mit ioBroker und Homematic
1x HM-CC-RT-DN Homematic Heizkörperthermostat
1x Xiaomi Temperatur und Luftfeuchtigkeitssensor über Zigbee Adapter angebunden
Eingebunden sind alle im Raum Wohnzimmer und dem Gewerk Heizung. Diese heißen ebenfalls in der CCU so. Wenn ich mit dem Rega Adapter die Räume und Gewerke reinhole, sind das aber Englische Begriffe und andre Räume. Diese Räume habe ich mittlerweile wieder gelöscht aus ioBroker und bin zurück zu Wohnzimmer und Heizung.
Hier Screenshots der benötigten Teile:
Der HM-CC-RT-DN Thermostat:
Hier der Xiaomi Sensor:
Wenn ich nun das Script, auch wenn nur die nötigsten Sachen angepasst sind laufen lasse, passiert im Endeffekt gar nichts spürbares.
Unter Javascript werden keine Datenpunkte erstellt:
Cron habe ich auf 1s gestellt, damit er sicher jede Minute was tut.Ebenso hatte ich das Logging aktiviert, die Datei wurde aber nicht einmal erstellt.
Wo könnte hier der Fehler liegen? Habe die Befürchtung das ich irgend einen kleinen Schritt einfach nicht weiß und es deswegen nicht klappt.
Danke für die Hilfe!
-
Was hast Du denn an Stelle 2207 im Heizungsscript stehen? Vielleicht kommen wir dadurch auf die Spur. `
<code>createState(State, 0, {read: true, write: true, type: 'number', name: 'Im View manuell eingestellte Temperatur - 0=reset' , desc: 'Im View manuell eingestellte Temperatur - 0=reset'}); Da habe ich nichs geändert Hast Du mal probiert das Sonderzeichen "Underscore" im Raum zu entfernen?</code> ``` `
-
Ich würde das Sonderzeichen "Underscore" entfernen. Wenn Du die Funktion anschaust da steht:
room = room.replace(/\s/g, "_")
-
Ich würde das Sonderzeichen "Underscore" entfernen. Wenn Du die Funktion anschaust da steht:
room = room.replace(/\s/g, "_") `
danke dir:-) jetzt sieht es schon mal besser aus
-
Hallo miteinander, auch wenn ich noch keine Antwort bekommen habe, hier ein Statusupdate.
Der Fehler waren die in der CCU3 voreingestellten Röume und Gewerke. Diese alle rausgelöscht und selbst angelegt schon gehts.
Zwei Fragen hätte ich aber noch:
Mein Ziel war es durch dieses Script die IST Temperatur der Thermostate zu übergehen und die Temperatur meiner Xiaomi Sensoren zu benutzen. Habe den Xiaomi Sensor in meiner VIS als SOLL Temperatur eingetragen. Reicht das damit er mit diesem Wert arbeitet? In einem kleinen Versuchsaufbau hat es nicht funktioniert. Habe den Sensor auf 10Grad runtergekühlt und das Thermostat hat das Ventil trotzdem nicht viel geöffnet, trotz Zieltemperatur 21 Grad.. Wie muss ich das sonst einstellen?
Mir werden nun die ganzen States unter Objekte angezeigt. Hat man aber auch eine Möglichkeit die Tabellen anzusehen? Zum Beispiel die Geräteliste die das Script erstellt?
Danke!
-
Hallo looxer01,
vielen Dank an dieser Stelle für das Script. Der Wahnsinn. So muss ich nicht jedes Mal in die CCU, um was anzupassen. Allerdings habe ich auch das Problem, das die manuellen Werte leider auf 4,5°C gesetzt werden. Ich weiß das Thema gab es schon, ich habe es in den vielen Beiträgen aber nicht mehr gefunden. Siehe Screenshots. Gab es hier schon eine Lösung? `
Gab es denn eine Lösung für mein geschildertes Problem?
-
Hallo zusammen,
zunächst ein großes Dankeschön an die Community. Ich bin seit einigen Wochen dabei, ioBroker bei mir einzurichten und bin begeistert! Vor allem in Kombination mit Node-Red, welches ich bisher für mein smartes Zuhause eigesetzt habe, lassen sich tolle Sachen auf die Beine stellen.
Nun habe ich folgendes Problem:
Die Aktivierung der Zeitverzögerung nach dem Schließen eines Fensters funktioniert bei mir leider nicht.
Als Verschlusssensor wird ein Aqara Kontaktsensor benutzt. Die Einbindung des Sensors in Homematic ging auch, dank CuxD. Das Öffnen/Schließen des Fensters wird vom Skript korrekt erkannt und der Temperatursollwert entsprechend angepasst.
Nun versuche ich bespielsweise ein 2min "Delay nach Verschluss zu" einzustellen:
ThermostatTypeTab[2] = ['hm-rpc.1.', 'HM-CC-RT-DN' , 'Heizkoerperthermostat(neu)' ,'HT', '4.SET_TEMPERATURE' , false, '4.MANU_MODE', true, '4.ACTUAL_TEMPERATURE', '4.CONTROL_MODE', 12, 2];
Dies führt zur dauerhaften Absenkung der Solltemperatur auf eingestellte 12°C.
Laut Debug-Ausgabe (direkt nach dem Öffnen) liegt der "DelayTime" Zeipunkt in der Vergangenheit, denn der Wert des aktuellen Zeitstempels ist größer.
javascript.0 2018-11-13 23:38:38.547 info script.js.common.Heizungssteuerung: aktuelle Millisekunden 1542148718000 javascript.0 2018-11-13 23:38:38.547 info script.js.common.Heizungssteuerung: Routine ManAdjustments: DelayTime fuer Raum Kinderzimmer ist 1542148693886
Danach kommt eine unendliche Ausgabeschleife, in der der aktuelle Zeitstempel immer weiter Ansteigt.
Fehlt mir noch irgendeine Einstellung? Hat jemand bereits Ähnliches beobachtet?
Ich bin für jede Hilfe dankbar!
Grüße,
Max
-
Hallo Max,
hast Du eine Lösung für das Delay Problem gefunden? Bei mir ist es genauso, habe auch die HM-CC-RT-DN in Verbindung mit den Xiaomi Aqara Sensoren im Einsatz, was auch bis auf das "Delay nach Verschluss" alles super funktioniert (auch von mir ein großes Dankeschön in die Entwickler!).
Wäre so wie Du auch sehr an eine Lösung interessiert.
-
Habe es schon mal mit der Manuelle Temperatur probiert und die Zeit dafür auf 600 Minuten eingestellt. So bald aber der Fenstersensor geöffnet bzw wieder geschlossen wird springt das Skript wieder in die Automatik rein. `
das ist ein Fehler. Da werde ich mich demnächst drum kümmern.Ist es möglich eine Funktion noch mit anzulegen mit der ich einzelne Räume abschalten bzw die Heizung abschalten bzw dauerhaft runter zu regeln? `
Ich hatte ja gerade weiter oben die Boostfunktion beschrieben. Die Abschaltfunktion ist im Grunde ja genau das gleiche, nur eben mit einer Low -Temperatur. Daher baue ich das gleichzeitig mit ein. Da ist kaum zusätzlicher Aufwand mit verbunden.
Schau dir das mal in meiner Beschreibung für die Boost Funktion an.
vG Looxer ` Hallo,
wo finde ich die Erklärung zu der Boost Funktion?
Ich hatte die letzte Tage keine Zeit mich darum zu kümmern aber jetzt würde ich den gern Nachgehen bestimmte Räume einzeln abzuschalten. Eben dann wenn der Kamin läuft.
Gesendet aus Hessen.