NEWS
[Vorlage] Heizungsthermostatsteuerung - Script
-
Hi,
EDIT - 28.12.2017
bevor ihr weiterlest möchte ich darauf hinweisen, dass es eine neue Version (2.0) gibt.
Die gibt es hier: http://forum.iobroker.net/viewtopic.php?f=21&t=10096
EndEDIT
Heute möchte ich euch mein Script zur Steuerung von Heizungsthermostaten vorstellen.
Ihr bekommt das Script, ein Beispiel-View und Dokumentation.
Ein Bild sagt mehr als viele Worte:
Die Funktionsliste findet sich hier:
! Funktionsübersicht
! Das Programm stellt folgende Funktionen zur Verfügung:
! - Unterstützung von verschiedenen Thermostaten
! o Alte HM-Wandthermostate
! o Neue HM-Thermostate (Wandthermostate und Heizkörperthermostate)
! o Homematic IP (Wand- und Heizkörperthermostate)
! o Unterstützung von Nicht-Homematic Thermostaten
! - Absenkung der Heizungsthermostate auf die „Fenster-Offen“-Temperatur
! - eingebundene Thermostate reagieren wie bei native Homematic mit Gruppenbildung. Manuelle Anpassungen werden erkannt und synchronisiert
! - Wochenprogramm mit bis zu 6 Zeiten/Temperaturen je Tag (Montag – Sonntag) und ein separates Feiertags-Programm (somit 8 Zeilen je Woche mit je 6 Zeiten/Temperaturvorgaben)
! - Feiertagszeile kann auch für Urlaub bei Anwesenheit genutzt werden)
! - Einfacher Verweis auf den Vortag („wie Vortag“- Funktion)
! - Möglichkeit der Planung mit bis zu 9 Profilen
! Dient z.B. für Schichtplanung oder dem einfachen Umschalten bei Ferienhäusern, etc)
! o Wochenprogramm je Profil
! o Diverse Profilparameter wie (Grad Celsius Absenkung oder Anhebung von Temperaturen und Definition einer Mindesttemperatur)
! o Aktivierung / Deaktivierung von Profilen manuell oder über Google Kalender
! - Verwendung von Raumparameter für
! o die Eingaben einer manuellen Temperatur
! o die Vorhaltezeit der manuellen Temperatur in Minuten
! o die Anzeige der Gültigkeit bis für die manuelle Temperatur
! o Reset der manuellen Temperatur
! o das automatische setzen des manuellen Modus
!
! - Verwendung von globalen Parametern (manuell oder über Google Kalender), die für alle Räume und Profile gleich gültig sind für da
! o An/Abwesenheit, (Absenkung bei Abwesenheit)
! o Urlaub, (Absenkung bei Urlaub)
! o Party, (Absenkung bei Party)
! o Gäste (Anhebung bei Gäste)
! - Für die o.g. globalen Parameter können je Raum-Profil Temperaturanpassungen in Grad Celsius vorgenommen werden. Diese können negativ/positiv oder null sein.
! - Lieferung eines Views der rel. schnell für weitere Räume kopiert werden kann. Der View ist so aufgebaut, dass (fast) alle Eingaben per Touch bedient werden können. Der View beinhaltet für Raum und Profil das Wochenprogramm, die Profilparameter, die Raumparameter und die globalen Parameter
! - Automatisierungen
! o Findung eines Profils durch z.B. Google Kalender über ICAL
! z.B. für Schichtpläne durch Integration mit z.B. Google Kalender (ICAL)
! o Findung von Feiertagen über den Feiertagsadapter oder alternativ ICAL
! o Findung von Temperaturparameter (z.B. Gäste, Party, Urlaub Abwesend, Urlaub Anwesend etc.) durch Integration mit z.B. Google Kalender (ICAL)
! o Automatische Abwesenheitsabsenkung falls gewünscht (Integration mit einer An/Abwesenheitssteuerung)
! - Automatische Temperaturanpassungen können nicht unter eine je Raum/Profil bestimmbare Mindesttemperatur sinken
! - Automatische Einstellung des manuellen (MANU) Modus (für die neuen Thermostate)
! - Handling von manuellen Änderungen (z.B. am Thermostat oder über Alexa)
! o Erkennung von manuell eingestellten Temperaturen.
! o Einstellung der Vorhaltedauer von manuell eingestellten Temperaturen je Raum (in
! Minuten)
! o Darstellung der Zeit bis zu der die manuelle Temperatur gültig ist (Datum/Uhrzeit)
! o Sofortige Erkennung von Temperaturanpassung am Thermostat durch Subscription
! o Funktioniert auch ohne Direktverknüpfung
! - Verschlusssensoren
! o Temperaturabsenkung auch für nicht durch direktverknüpfte Geräte
! o Sofortige Erkennung von „Verschluss offen" durch Subscription
!
! - 3-stufiges Logging
! o Stufe 1 – Speicherung der letzten Temperaturfindung in Datenpunkte
! und Anzeige im View
! o Stufe 2 – erweitertes online-Logging (einstellbar)
! o Stufe 3 – Externes Logging in Excel Format (einstellbar)
! - Steuerung von separaten Wohneinheiten (z.B. Einliegerwohnung und Hauptwohnung) mit unabhängigen Parametern. (durch Kopie des Programmes und weiteren Einstellungen zur Separierung )Wenn ihr es ausprobieren wollt, ein paar Hinweise:
Einstellungen im Programm
nur die Zurodnung zu Gewerke für Sensoren und Thermostate ist notwendig. Das Script ist danach sofort lauffähig.
View
Bevor ihr den View importiert solltet ihr den zugeordnetenn Raum austauschen. Das könnt ihr mit einem normalen Editor machen (z.B. notepad++)
"Bitte nicht mit WORD". Nutzt einfach die REPLACE funktion des Editors und ersetzt "Schlafzimmer" mit dem Namen eures Raumes.
Falls ihr blanks im Raumnamen habt, dann müssen diese mit Unterstrich (also "_") ersetzt werden. Kinderzimmer 1 wird also zu Kinderzimmer_1.
Den View könnt ihr dann mit eurer Umgebung mit VIS-Funktionen einbinden. Die Art der Einbindung hängt ab von den eigenen Views, bzw. Vorstellungen ab. Eine Möglichkeit ist über Container Views und einem Transparenten Widget auf die Temperatur eines Raumes zu klicken.
Installation
Sobald das Programm aufgerufen wird werden alle Datenpunkte für alle Räume und Profile angelegt. Falls ihr einen langsamen Rechner (z.B. Raspi oder Vergleichbares mit SD-Karte) habt, dann solltet ihr raumweise vorgehen. Das ist in der Doku beschrieben.
Wenn das Programm läuft und ihr Zugriff auf die Views habt, dann müsst ihr noch ein aktivies Profil (erstmal 1) im View zuordnen. Erst dann werden die Räume entsprechend des Planes beheizt.
EDIT–- DIES hat sich mit Version 0.81 geändert. Jetzt sind die Profile nach dem Anlegen sofort aktiv. Das erste Auslesen der Thermostate dürfte dazu führen, dass die gegenwärtigen Soll-Temperaturen als manuell gesetzt erkannt werden. Sie ändern sich nicht sofort aber nach 120 Minuten werden die Temperaturen erstmalig über die Profilpläne (Heizpläne) gesteuert.
Bitte schaut in die Doku. Dort sind alle Einzelheiten beschrieben
Hinweise, wenn das Programm Thermostate/Sensoren nicht erkennt:
Falls die Thermostate/Sensoren nicht eingelesen werden, dann gibt es vermutlich Ungereimtheiten beim SetUp der Räume/Gewerke. Es empfiehlt sich folgende Vorgehensweise:
1. Überprüfen, dass die Thermostate / Sensoren in der CCU wirklich den richtigen Gewerken und Räumen zugeordnet sind
2. Überprüfen, dass in den ioBroker Aufzählungen (rooms und functions) die Räume und Gewerke gelistet sind. Irgendwelche $functions oder $rooms sollten nicht auftauchen.
3. Bei Ungereimtheiten in den Aufzählungen könnt ihr versuchen manuell zu korrigieren. Wenn bei den Aufzählungen nur CCU Räume und Gewerke vorhanden sind, dann empfiehlt sich einmal die rooms und functions komplett zu loeschen.
4. nachdem geändert wurde muss der REGA adapter neu geladen werden ( bei den Instanzen). Bei mir war es so, dass ich ioBroker stoppen musste und neu starten musste, um die Aenderungen wirksam im Programm zu sehen (obwohl die Aufzählungen korrigiert waren) ich vermute, dass das mit der Nutzung von REDIS zusammenhängt -
Open Issues:
Im Zusammenhang mit "View in Widget " widgets und auch container widgets gibt es drei Fehler im VIS, die ich hier und auch in Trello reportet habe. Ich hoffe auf einen baldigen Fix:
http://forum.iobroker.net/viewtopic.php?f=22&t=5510
Script:
View:
Dokumentation:
viele Gruesse
Looxer
-
Muss sagen sieht echt gut aus. Werde es mir auch mal anschauen.
Gesendet von meinem SM-G900F mit Tapatalk
-
Hi,
ist ja klar, dass nicht alles fehlerfrei ist
es gibt ein kleines Problem bei Räumen mit blanks im Namen. Ist schon gefixt.
Ich warte aber noch bis ggf noch mehr auffällt und stelle dann eine neue Version ein.
EDIT: Ich habe Version 0.71 eingestellt. Hatte vergessen ein TestStatement herauszunehmen
Auch ist der Fix fuer Räume mit blanks im Namen enthalten
vG Looxer
-
RESPEKT!!! :shock:
Asstrein, ich hab noch das Script aus dem homematic Forum auf der CCU laufen. Das ist genau das was ich gesucht habe!!! :mrgreen: Das werde ich am WE direkt mal antesten. Danke dafür!!!
-
Sieht wirklich gut aus und hat so wie ich das sehe alle Funktionen wie das Script das auf der CCU läuft.
Habe mal versucht das für einen Raum zu testen.
Leider passiert garnichts. Es werden keine Variablen angelegt.
Habe den Debugmodus mal angeschaltet. Im Log steht dann folgendes
javascript.0 2017-04-13 15:03:23.489 info script.js.Heizung: registered 0 subscriptions and 1 schedule javascript.0 2017-04-13 15:03:23.488 info script.js.Heizung: schedule(cron=*/5 * * * *) javascript.0 2017-04-13 15:03:23.486 warn State "javascript.0.Heizung.Heizplan.GlobaleParameter.Source_last_Program_Run" not found javascript.0 2017-04-13 15:03:23.485 info script.js.Heizung: Devices initialisiert javascript.0 2017-04-13 15:03:23.392 info script.js.Heizung: getEnums(enumName=rooms) => [{"id":"enum.rooms.Wohnzimmer","members":["hm-rpc.0.LEQ0400973.4","hm-rpc.0.LEQ0400973.1","hm-rpc.0.LEQ0593850.1","hm-rpc.0.LEQ0593850.3","hm-rpc.0.LEQ0 javascript.0 2017-04-13 15:03:23.385 info Start javascript script.js.Heizung
Mehr steht im Logfile nicht. Eventuell kannst du mir sagen wo ich da suchen muss.
Gruß Norbert
-
Hi,
Welche Thermostattypen nutzt du ? (HM-IP ist noch nicht richtig konfiguriert, da ich solche Geräte nicht habe.
Wenn jemand aber IP hat, dann kann ich das noch hinzufügen (konfigurieren nur)
bitte überprüfe die folgenden Punkte:
-
es gibt zwei Gewerke in den Einstellungen. Die musst du auf jeden Fall dort hinterlegen
-
Die Geräte aus der CCU müssen dem Gewerk und Raum zugeordnet sei. Bitte in der CCU überprüfen
-
Sind die Räume in den Aufzählungen identisch zu den CCU Räumen ?
Wenn du keine manuellen Einstellungen bei den Räumen in ioBroker vorgenommen hast, kannst du alle Räume aus den Aufzählungen
löschen und den RegaAdapter neu starten. Danach ist alles 100% ig Synchron
Hier ist die Stelle wo die Thermostate rausgefiltert werden:
$('channel[state.id=*.'+ThermostatTypeTab[x][4]+'] (rooms='+roomName+') (functions='+HeizungGewerk+') ').each(function (id, i) {
Bedingung 1 = Der Thermostattype muss konfiguriert sein. Diese sind konfiguriert: HM-TC-IT-WM-W-EU, 'HM-CC-TC, HM-CC-RT-DN
Bedingung 2 = Das Gerät muss einem Raum zugeordnet sein und der Raum muss in den Aufzählungen fehlerfrei enthalten sein
Bedingung 3 = Das Gerät muss dem Gewerk zugeorndet sein, dass im Programm eingestellt wird:
Wenn alles korrekt ist, dann muss es funktionieren
vG Looxer
-
-
So Problem ist gelöst.
Die Gewerke waren auf der CCU richtig angelegt. Im ioBroker aber fehlerhaft Importiert. Hier waren falsche Namen vorhanden. Ist wohl ein alter Fehler den ich bis jetzt nicht korigiert hatte.
Nun werden erstmal alle Variablen angelegt.
Dann kann ich jetzt weiter testen.
-
Das erste Thermostat habe ich nun umgestellt und es funktioniert super.
Allgemeine Anmerkungen zum View
-
Datumsanzeigen im Deutschen Format
-
Temperatur immer mit Kommer und eine Nachkommerstelle anzeigen
Die var VerschlussAbsenkungsGrenze sollte eventuell auch im View eingestellt werden.
Die neuen Thermostate erkennen ja einen schnellen Temperaturabfall selber als Fenster offen. Wird da auch die var VerschlussAbsenkungsGrenze benutzt und wie lange ist die dann wirksam?
Bei Heizperiode aktiv = aus sollten dann die Thermostate alle auf 100% gefahren werden um dann über den Sommer die Thermostate zu schonen.
Bei jeden lauf des Scriptes wird ja immer die Function CreateStates aufgerufen um die Variablen anzulegen. Hier sollte man versuchen dieses nur ein mal zu machen. Ist bestimmt dann auch schneller.
Hast da wirklich eine Super Arbeit geleistet. Vielen Dank.
Ich teste weiter.
-
-
…freut mich, dass es soweit bei dir klappt.
Nun zu deinen Punkten:
- Datumsanzeigen im Deutschen Format
da gibt es eines - letzter Programmlauf - nehme ich mal auf
- Temperatur immer mit Kommer und eine Nachkommerstelle anzeigen
das liegt am Widget. Ich habe dieses Widget set gewählt, weil es touch bedienbar ist.
- Die var VerschlussAbsenkungsGrenze sollte eventuell auch im View eingestellt werden.
****die ist standardmaessig auf 12 Grad wie auch bei der CCU. Dies sollte über alle Thermostate und dem Script synchronsiert sein. Dann
gibt es kein Problem****
- Die neuen Thermostate erkennen ja einen schnellen Temperaturabfall selber als Fenster offen. Wird da auch die var VerschlussAbsenkungsGrenze
benutzt und wie lange ist die dann wirksam?
ich habe das nicht getestet. Sensoren sind auf jeden Fall die bessere Wahl. Wenn das Thermostat auf 12 Grad geht und nach z.B. 15 Minuten wieder auf Normaltemperatur sollte es keine Probleme geben ( die Dauer z.B. 15 kann in der CCu eingestellt werden )
- Bei Heizperiode aktiv = aus sollten dann die Thermostate alle auf 100% gefahren werden um dann über den Sommer die Thermostate zu schonen.
das kann eingestellt werden und steht auf 30 Grad . 100 geht in ioBroker nicht
- Bei jeden lauf des Scriptes wird ja immer die Function CreateStates aufgerufen um die Variablen anzulegen. Hier sollte man versuchen dieses nur ein
mal zu machen. Ist bestimmt dann auch schneller.
****das ist nicht so. Die States werden nur einmal ausgelesen und das ist bei Programmstart. Im Schedule werden die States nicht mehr gecheckt.
Darum muss auch bei neuen Thermostaten das Programm neu gestartet werden, damit es diese erkennt. Eine merkliche Performance Anforderung ist
ohne nur dann vorhanden, wenn neue States angelegt werden müssen****
vG Looxer
-
` > - Bei Heizperiode aktiv = aus sollten dann die Thermostate alle auf 100% gefahren werden um dann über den Sommer die Thermostate zu schonen.
das kann eingestellt werden und steht auf 30 Grad . 100 geht in ioBroker nicht `
Bei Heizperiode aktiv = aus muss die Ventielstellung auf 100 % gesetz werden das sollte 4.valve_state sein.
Alles ander tasten wir uns dann mal ran.
Wünsche euch ein schönes Osterfest.
Gruß Norbert
-
… Ventielstellung auf 100 % gesetz werden das sollte 4.valve_state sein. `
VALVE_STATE ist "read only" ! -
OK
muss aber gehen.
Wenn ich in der CCU Heizperiode auf false setze werden alle Thermostate auf ventilstellung 100% gefahre.
Muss mir noch mal das CCU Script ansehen was da genau passiert.
-
in der CCU können 0 und 100 gesetzt werden. In ioBoker nicht.
es gab auch mal eine Meldung dazu:
-
Hallo
habe bei mir das Feiertagsscript installiert und var UseFeiertagskalender = true; gesetzt.
feiertage.0.heute.boolean ist true
Es wird aber nicht die Einstellung für Feiertag verwendet sondern die für Freitag.
Ist das bei euch auch so?
-
Hast du evt bei feiertag,Sonntag und Samstag im view den tick “wie Vortag“ gesetzt?
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk
-
Nein habe ich nicht.
-
Hi,
Feiertage wurden nicht erkannt. Fehler ist gefixt.
Wird gleich hochgeladen.
vG Looxer
-
Version 0.72 ist hochgeladen.
Fixes:
// Version 0.72 14.04.2017 - Feiertag wurde nicht korrekt erkannt
// ….......................Datumsformat für die Anzeige "letzter Programmlauf im View" wurde auf DDMMYYYY umgestellt
// ..........................Das Feiertagsflag vom Feiertagsadapter wird synchronisiert mit dem Feiertagsflag der Heizungssteuerung
//...........................Das Anwesenheitsflag von der Anwesenheitsfunktion wird synchronisiert mit dem Feiertagsflag der Heizungssteuerung
vG Looxer
-
Vielen Dank!
Jetzt klappt es Super.
-
So Problem ist gelöst.
Die Gewerke waren auf der CCU richtig angelegt. Im ioBroker aber fehlerhaft Importiert. Hier waren falsche Namen vorhanden. Ist wohl ein alter Fehler den ich bis jetzt nicht korigiert hatte.
Nun werden erstmal alle Variablen angelegt.
Dann kann ich jetzt weiter testen. `
Hallo,
wie hast du diesen Fehler korrigiert?
Bei mir steht immer dieses $-Zeichen davor. Wenn ich es lösche, kommt es nach einer Weile wieder.
Bekomme dann immer eine Fehlermeldung vom Script.
javascript.0 script.js.Haus.Heizungsthermostatsteuerung: TypeError: $(…).each is not a function at getDevices (script.js.Haus.Heizungsthermostatsteuerung:296:114) at script.js.Haus.Heizungsthermostatsteuerung:249:1
Frohe Ostern!