NEWS
[Vorlage] Heizungsthermostatsteuerung 2.1 - Script
-
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 ];
-
Wow,
dasDing ist ja wirklich gut gemacht.
Eine ganz blöde Frage:
Lässt sich das eventuell auch auf DECT Thermostate adaptieren?
Die Datenpunkte scheinen ja zu den HM Thermostaten anders zu sein und es gibt bei den Dingern per Remote Befhl keinen manuellen Modus.
Hat das schon jemand versucht oder hilft vielleicht das Bild weiter?
5779_dect.jpg -
Lässt sich das eventuell auch auf DECT Thermostate adaptieren? `
Hi,
die erste Voraussetzung ist, dass du die SollTemp in IoBroker setzen kann und das Thermostat diese auch annimmt.
Ich sehe, dass du eine Target Temp hast. Wenn die also nicht nur Read Only ist, dann ja, dann sollte es gehen.
Die Datenpunkte scheinen ja zu den HM Thermostaten anders zu sein und es gibt bei den Dingern per Remote Befehl keinen manuellen Modus. `
Ich nehme an, dass das Thermostat ein eigenes Programm hat, dass du einstellen kannst.
Wenn das Thermostat ausschließlich nach der eigenen Planung arbeiten kann, dann hat es keinen manuellen mode.
Das heißt aber nicht, dass du das Thermostat nicht steuern kannst. Wenn du Beispielsweise nur einmal am Tag eine Temp eingeben würdest und ioBroker eine Minute später schlicht wieder übersteuerst, dann ist das zumindest ein Workaround um damit umzugehen.
Nun weiß ich nicht wie das Thermostat genau funktioniert aber ich würde es mal probieren.
vG Looxer
-
Hallo,
ich wollte heute mal das Script ausprobieren. Jedoch bekomme ich leider beim start immer folgende Meldung im Log:
16:05:05.580 [info] javascript.0 Start javascript script.js.common.heating 16:05:05.580 [info] javascript.0 script.js.common.heating: Routine GetDevices Devices initialisiert 16:05:05.581 [info] javascript.0 script.js.common.heating: registered 0 subscriptions and 0 schedules 16:05:07.423 [info] javascript.0 script.js.common.heating: Heizungsscript verarbeitung benutzt Trigger und Events 16:05:07.424 [warn] javascript.0 at setOwnState (script.js.common.heating:494:5) 16:05:07.425 [warn] javascript.0 at LoopRooms (script.js.common.heating:773:5) 16:05:07.425 [warn] javascript.0 at Object. (script.js.common.heating:431:9)
Kann mir jemand weiterhelfen? :?:
LG
-
Hi
@ErazorVIP:Jedoch bekomme ich leider beim start immer folgende Meldung im Log: `
sieht nach einem Problem bei der Konfiguration aus (warnung).javascript.0 at Object. (script.js.common.heating:431:9)
Zeile 431 (falls du keine global Scripte verwendest)
Wenn du den Konfig Teil postest laesst sich evt was sagen.
vG Looxer
-
Ich habe eigentlich alles bei den Standardeinstellungen gelassen.
Ich habe nur HM-IP Thermostate.
Es werden auch keine States angelegt.
javascript.0 2018-10-02 17:18:20.097 warn at Object. <anonymous>(script.js.Heizungssteuerung.Heating:431:9) javascript.0 2018-10-02 17:18:20.097 warn at LoopRooms (script.js.Heizungssteuerung.Heating:773:5) javascript.0 2018-10-02 17:18:20.097 warn at setOwnState (script.js.Heizungssteuerung.Heating:494:5) javascript.0 2018-10-02 17:18:20.093 warn State "javascript.0.Heizung.Heizplan.GlobaleParameter.Source_last_Program_Run" not found</anonymous>
// Beginn Generelle Einstellungen // werden an dieser Stelle benoetigt - Einstellungen sind nur in Spezialfaellen notwendig //------------------------------------------------------------------------------ // Anpassung nur wenn unbedingt notwendig. Hier ist der Ansatz um z.B. Einliegerwohnungen separat zu steuern var JSPath = "javascript.0."; // JS- Pfad var path = JSPath + 'Heizung.Heizplan'; // Pfad fuer create states var Gparameterpath = path + ".GlobaleParameter"; // Pfad in die Globalen Parameter var ICALPath = "ical.0.events"; // Pfad zu den ICAL events zur Profilauswahl //------------------------------------------------------------------------------ // Ende Generelle Einstellungen // Usereinstellungen sind Einstellungen, die ueblicherweise gemacht werden //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ // Beginn USER Einstellungen //------------------------------------------------------------------------------ // 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. // Alle x Minuten wird gecheckt ob die SollTemp angepasst werden muss - Empfehlung wenn cron dann 5 // Wenn Wert = 0 ist dann läuft das Skript über Events (empfohlener Weg) var cron = 0; // 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 = false; // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet var RoomList = []; RoomList[0] = ['Wohnzimmer']; // Liste der Raeume die gesteuert werden soll zum Testen RoomList[1] = ['Raum2']; RoomList[2] = ['Raumx']; RoomList[3] = ['Raum3']; RoomList[4] = ['Raum4']; RoomList[5] = ['Raum5']; RoomList[6] = ['Raum6']; RoomList[7] = ['Raum7']; RoomList[8] = ['Raum8']; RoomList[9] = ['Raum9'];
-
Wo sind die Homematic IP Geräte angebunden?
Ccu?
Ich Tipp drauf dass der Name des Gewerks nicht passt…..
Gesendet von meinem ONEPLUS A3003 mit Tapatalk
-
Danke.
Ich habe schon etwas mit den Dingern experimentiert und kann vermutlich das interne Programm auf eine Temperatur festlegen (wäre ja dann als Fallbacklösung geeignet).
Steuerbefehle zur Temperaturregelung kann ich bereits absenden. Also beispielsweise bei offenem Fenster die TargetTemp auf 10 °C setzen funktioniert problemlos.
Ich werde mal das Scrip bei einem Raum probeweise einsetzen und schauen wie sich das verhält.
Da ich in den Räumen mehrere Temperatursensoren habe ist das natürlich die deutlich bessere Lösung als sich auf die intern erfasste Temperatur zu verlassen.
Ich muss nur noch herausfinden wie ich die Temperatursensoren so einbinde das der Offset zum internen Wert eingearbeitet wird.
Beispiel:
Raumtemperatur gemessen/gemittelt = 22 °C
Temperatur am Thermostat = 24 °C
Regeltemperatur müsste dann 24 °C sein obwohl ich als Wunschtemperatur 22 °C einstellen möchte.
Hast du sowas irgendwo im Script vorgesehen?
-
Man könnte ja mit der berechneten Differenz einen Offset an die Thermostate schicken
Gesendet von meinem ONEPLUS A3003 mit Tapatalk
-
Hi,
@Chaot:Hast du sowas irgendwo im Script vorgesehen? `
Im Script ist das so nicht vorgesehen. Das Problem, dass ich dabei sehe ist, dass das Offset wahrscheinlich nicht immer 2 Grad ist.Das hängt vermutlich von der Aussentemperatur des Heizkörpers ab. In der Übergangszeit dürften es z.B. weniger als 2 Grad sein. (lauwarmer Heizkörper).
Wenn es stabil 2 Grad sein sollen, dann kommt die Diff-Temp bei Abwesenheit oder Urlaub in Frage. Die kann man negativ oder positiv setzen.
vG Looxer
-
gelöscht - doppelter Beitrag
-
Ich habe eigentlich alles bei den Standardeinstellungen gelassen.
Ich habe nur HM-IP Thermostate.
Es werden auch keine States angelegt. `
Ich vermute auch, dass es mit den Raum- bzw Gewerkezuordnungen zusammenhängt. Ist auch schon sehr häufig vorgekommen.In der Objektliste von iobroker bei den Objekten der Thermostate kannst du sehr schön sehen ob die Zuordnungen ok sind.
vG Looxer
-
Ich habe aktuell noch eine Fehlermedlung.
Ich denke das das mit dem Adapter "Feiertage" zusammenhängt. Nach der Installation kam dieser Fehler:
javascript.0 2018-10-03 11:12:15.242 error at ContextifyScript.Script.runInContext (vm.js:59:29) javascript.0 2018-10-03 11:12:15.242 error at script.js.Heizung.HeizungGesamt:343:1 javascript.0 2018-10-03 11:12:15.242 error at initializeData (script.js.Heizung.HeizungGesamt:350:5) javascript.0 2018-10-03 11:12:15.242 error at getDevices (script.js.Heizung.HeizungGesamt:580:32) javascript.0 2018-10-03 11:12:15.242 error TypeError: roomName.replace is not a function javascript.0 2018-10-03 11:12:15.241 error ^ javascript.0 2018-10-03 11:12:15.241 error roomNoSpace = roomName.replace(/\s/g, "_"); javascript.0 2018-10-03 11:12:15.241 error script.js.Heizung.HeizungGesamt: script.js.Heizung.HeizungGesamt:580
-
Ich habe aktuell noch eine Fehlermedlung. `
Hi,
ich sehe das hier
javascript.0 2018-10-03 11:12:15.241 error ^
Scheint mir, dass es ein Syntax Fehler ist, vermutlich entstanden bei der Anpassung des Scripts.
vG Looxer
-
Ok, der Fehler ist weg wenn ich
var UseRoomList = true; // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet
benutze.
Steht da false ist der Fehler vorhanden.
Nächstes Problem:
javascript.0.Heizung.Heizplan.Toilette.Source_Global_Parameter steht auf "Abwesenheit Absenkung"
Woher kommt der Wert?
var UseEventsGlobalParameter = false; // mit diesen Events koennen Urlaub Party etc geplant werden - Empfehlung erst im zweiten Schritt aktivieren var UseEventsGlobalProfilSelect = false; // Events mit denen das Profil umgeschaltet werden kann - fuer alle Raeume - Empfehlung erst im zweiten Schritt aktivieren var UseEventsRaumProfilSelect = false; // Events mit denen das Profil fuer einzelne Raeume umgeschaltet werden kann - Empfehlung erst im zweiten Schritt aktivieren var EventG_UrlaubAbwesend = "Urlaub_Abwesend"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist var EventG_UrlaubAnwesend = "Urlaub_Anwesend"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist var EventG_Party = "Party"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist var EventG_Gaeste = "Gaeste"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist var EventG_Abwesend = "Keiner_DA"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist var EventG_Feiertag = "Feiertag"; // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist // Die folgenden EVENT Texte muessen in ICAL angelegt werden. Sobald die Texte im google Kalender // aktiv sind wird das Event fuer die Heizungsthermostatsteuerung ausgewertet. // Achtung die Zeichen <> und der Text innerhalb dieser Klammer duerfen nicht geaendert werden // siehe Dokumentation fuer mehr infos var UseEventG_Profil = "Global_Profil_<profilnummer>"; // Events mit denen das Profil umgeschaltet werden kann - muss in ICAL angelegt werden wenn UseEventP_Profil = true ist var UseEventR_Profil = "<raumname>_Profil_<profilnummer>"; // Events mit denen das Raumprofil umgeschaltet werden kann - muss in ICAL angelegt werden wenn UseEventsRaumProfilSelect = true ist // Integration zur Anwesenheitsermittlung - var UseAnwesenheitserkennung = false; // wenn true, dann wird die o.g. Anwesenheitsvariable genutzt - Empfehlung erst im zweiten Schritt aktivieren var StateAnwesenheitFunction = JSPath + "Anwesenheitssteuerung.Userlist.JemandDa"; // Wenn UseAnwesenheitserkennung = true, dann muss der Pfad angepasst werden // Integration zum Feiertagskalender - var UseFeiertagskalender = true; // wenn der Kalender genutzt wird bitte auf true setzen - Empfehlung: Feiertagsadapter installieren und auf true setzen var StateFeiertagHeuteAdapter = "feiertage.0.heute.boolean"; // wenn UseFeiertagskalender, dann wird dieser Pfad verwendet var StateFeiertagMorgenAdapter = "feiertage.0.morgen.boolean"; // wenn UseFeiertagskalender, dann wird dieser Pfad verwendet wenn es darum geht den nächsten Schaltpunkt zu ermitteln wenn dieser am nächsten Tag liegt</profilnummer></raumname></profilnummer>
Wurde auch noch nie aktiviert.
-
Hallo Zusammen!
Ihr habt doch den Überblick über die vorhandenen Scripte. Soll ich diesen hier nehmen oder den -> viewtopic.php?f=21&t=10111 ?
Ich habe mehrere Homematic-Thermostate und ein Stellventil. Mein Ziel wäre es, alle Thermostate über IOBroker laufen zu lassen.
Was meint ihr?
Schöne Grüße
Thomas
-
Ich habe mir jetzt folgendermaßen beholfen:
// Integration zur Anwesenheitsermittlung - var UseAnwesenheitserkennung = true; // wenn true, dann wird die o.g. Anwesenheitsvariable genutzt - Empfehlung erst im zweiten Schritt aktivieren var StateAnwesenheitFunction = JSPath + "javascript.0.Heizung.JemandDa"; // Wenn UseAnwesenheitserkennung = true, dann muss der Pfad angepasst werden
Datenpunkt angelegt und manuell auf "false" gesetzt.
Jetzt schein die "Anwesenheitserkennung" nicht mehr in die Steuerung einzugreifen.
-
Hallo, zunächst danke für euer tolles Skript. Ich habe Max! Heizkörperthermostate/Cube und Xiaomi Fensterkontakte im Einsatz.
Alles funktioniert sowiet prima. Nur wenn ich ein Fenster öffne wird die Temperatur am Heizkörper nicht abgesenkt.
Die Öffnung des Fenster wird aber erkannt.
Log-Fenster geöffnet:
javascript.0 2018-10-03 14:50:38.006 info script.js.common.Heizung: Routine SensorChange: Sensor status ist ? true
javascript.0 2018-10-03 14:50:38.006 info script.js.common.Heizung: Routine SensorChange: Sensor ist direktverknuepft ? false
javascript.0 2018-10-03 14:50:38.006 info script.js.common.Heizung: Routine SensorChange: Raum Bad
javascript.0 2018-10-03 14:50:38.006 info script.js.common.Heizung: Routine SensorChange: Fenster mihome.0.devices.magnet_158d000248cb7a.state status geaendert fuer mihome.0.devices.magnet_158d000248cb7a.state Bad true
javascript.0 2018-10-03 14:50:38.006 info script.js.common.Heizung: Routine SensorStatCalc: Sensorstatus ist true fuer devtype = NoneHM und id mihome.0.devices.magnet_158d000248cb7a.state
Log-Fenster geschlossen:
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Ignoriere Trigger nach Änderung für State javascript.0.Heizung.Heizplan.Bad.Source_Global_Parameter
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Setze Schedule für nächste Planzeit 10 0 16 * * * für Raum Bad
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Schedule gelöscht für Bad
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Setze Bad.Source_Global_Parameter zu Verschluss geschlossen TemperaturAbsenkung zurueck gesetzt
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine ExecuteTempDetermination: raum BadSolltemp nach overrule: 22 Findung Verschluss geschlossen TemperaturAbsenkung zurueck gesetzt
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine ExecuteTempDetermination: raum BadSolltemp nach Switchtime: 22 Findung Mi_16:00:44
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine SelectSwitchTime - Aktuelle Solltemperatur ist 22 fuer Raum Bad Raumprofil ist 1
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine LoopDevices:Verschluss geschlossen TemperaturAbsenkung zurueck gesetzt
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine LoopDevices: Sensorstatus fuer raum Bad ist false
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine SensorChange: Sensor status ist ? false
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine SensorChange: Sensor ist direktverknuepft ? false
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine SensorChange: Raum Bad
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine SensorChange: Fenster mihome.0.devices.magnet_158d000248cb7a.state status geaendert fuer mihome.0.devices.magnet_158d000248cb7a.state Bad false
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine SensorStatCalc: Sensorstatus ist false fuer devtype = NoneHM und id mihome.0.devices.magnet_158d000248cb7a.state
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine SensorFind ID = mihome.0.devices.magnet_158d000248cb7a.state Raum = Bad
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine SensorFind ID = mihome.0.devices.magnet_158d000248b611.state Raum = Kueche
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine SensorFind ID = mihome.0.devices.magnet_158d00024245c4.state Raum = Schlafzimmer
javascript.0 2018-10-03 14:52:10.659 info script.js.common.Heizung: Routine SensorFind ID = mihome.0.devices.magnet_158d000232c4a9.state Raum = Wohnzimmer
javascript.0 2018-10-03 14:52:10.655 info script.js.common.Heizung: Routine SensorFind ID = mihome.0.devices.magnet_158d000248cb6f.state Raum = Vivian
Definition Sensoren:
NoneHMSenorTab[0] = ['Vivian', 'mihome.0.devices', 'magnet_158d000248cb6f', 'state', false, false];
NoneHMSenorTab[1] = ['Wohnzimmer', 'mihome.0.devices', 'magnet_158d000232c4a9', 'state', false, false];
NoneHMSenorTab[2] = ['Schlafzimmer', 'mihome.0.devices', 'magnet_158d00024245c4', 'state', false, false];
NoneHMSenorTab[3] = ['Kueche', 'mihome.0.devices', 'magnet_158d000248b611', 'state', false, false];
NoneHMSenorTab[4] = ['Bad', 'mihome.0.devices', 'magnet_158d000248cb7a', 'state', false, false];
Definition Thermostate:
NoneHMTab[0] = ['Vivian', 'maxcube.0.devices', 'thermostat_1a1ccf', 'setpoint', 12];
NoneHMTab[1] = ['Wohnzimmer', 'maxcube.0.devices', 'thermostat_1a109b', 'setpoint', 12];
NoneHMTab[2] = ['Schlafzimmer', 'maxcube.0.devices', 'thermostat_1a6e46', 'setpoint', 12];
NoneHMTab[3] = ['Kueche', 'maxcube.0.devices', 'thermostat_1a702c', 'setpoint', 12];
NoneHMTab[4] = ['Bad', 'maxcube.0.devices', 'thermostat_1a1cd7', 'setpoint', 12];
Was läuft hier schief?
Schon mal Danke für eure Unterstützung.
K-L-S
-
Was läuft hier schief? `
Hi,
es gab/gibt einen Fehler und einen Fix dazu, den ich aber noch nicht online gestellt.
Bitte schaue in den Post von mir vom 30.09.2018, 19:56
vG Looxer
-
Hallo,
habe den Fix auf vorheriger Seite gefunden und angewendet. Funktioniert prima.
Herzlichen Dank K-L-S