NEWS
[Vorlage] Heizungsthermostatsteuerung 2.1 - Script
-
Gerätetyp habe ich aus den RAW daten kopiert, die anderen werte von dem vorhandenen HmIP-eTRV-B übernommen.
Wenn ich das Script dann aber starte wird nix gefunden.
Hast du einen Tipp, was ich falsch mache? `
Hi,die Einstellungen sehen erstmal gut aus.
Ist das Thermostat dem richtigen Raum und Gewerk zugeordnet ?
Bei den Objekten muss wenigstens der Kanal 1 die Zuordnung zu Raum und Funktion haben. Das siehst du in der Objektliste
vG Looxer
-
ja, die beiden Thermostate sind in Wohnzimmer zugeordnet (Kanal 1) und auch dem entsprechenden Gewerk wie die anderen alle.
Kann es daran liegen, da sie in der Homematic Zentrale zu einer Gruppe zusammen gefasst sind?
Dürfte eigentlich für das Script ja erstmal kein Unterschied machen. Würde die Gruppe halt löschen, wenn das Script funktioniert.
-
ja, die beiden Thermostate sind in Wohnzimmer zugeordnet (Kanal 1) und auch dem entsprechenden Gewerk wie die anderen alle.
Kann es daran liegen, da sie in der Homematic Zentrale zu einer Gruppe zusammen gefasst sind?
Dürfte eigentlich für das Script ja erstmal kein Unterschied machen. Würde die Gruppe halt löschen, wenn das Script funktioniert. `
Hi,es ist eh besser die Gruppe zu nutzen, wenn du die in der CCU definiert hast.
Dazu brauchst du einen Eintrag in der Thermostattabelle.
Sieht so aus:
ThermostatTypeTab[0] = ['frei', 'HM-CC-VG-1' , 'Heizungsgruppe' ,'VD', '1.SET_TEMPERATURE' , 'frei', '1.MANU_MODE', true, '1.ACTUAL_TEMPERATURE', '1.CONTROL_MODE', 12, 0];
Der Eintrag sollte an Stelle 0 ganz oben stehen.
vG Looxer
-
ja, die beiden Thermostate sind in Wohnzimmer zugeordnet (Kanal 1) und auch dem entsprechenden Gewerk wie die anderen alle.
Kann es daran liegen, da sie in der Homematic Zentrale zu einer Gruppe zusammen gefasst sind?
Dürfte eigentlich für das Script ja erstmal kein Unterschied machen. Würde die Gruppe halt löschen, wenn das Script funktioniert. `
Hi,es ist eh besser die Gruppe zu nutzen, wenn du die in der CCU definiert hast.
Dazu brauchst du einen Eintrag in der Thermostattabelle.
Sieht so aus:
ThermostatTypeTab[0] = ['frei', 'HM-CC-VG-1' , 'Heizungsgruppe' ,'VD', '1.SET_TEMPERATURE' , 'frei', '1.MANU_MODE', true, '1.ACTUAL_TEMPERATURE', '1.CONTROL_MODE', 12, 0];
Der Eintrag sollte an Stelle 0 ganz oben stehen.
vG Looxer `
Ich habe das hinzugefügt, aber die Gruppe wird auch nicht gefunden. Habe auch das 1. frei mit hm-rpc.2. ersetzt, da dort die VG zu finden ist.
Kanal 1 hat auch den Richtigen Raum und Gewerk.
Den Typ hab ich auch nochmal angepasst, da es so nicht gefunden wurde auf "HmIP-HEATING" (aus VG Device RAW Daten), hat aber auch alles nix geholfen.
Habe nun Debug aktiviert, aber auch da ist nix von Wohnzimmer zu lesen.
Irgendwie bin ich langsam ratlos
-
Ich habe das hinzugefügt, aber die Gruppe wird auch nicht gefunden. `
Hi,hast du im RPC Adapter die virtual devices aktiviert ?
Auch die Gruppen brauchen Raum und Gewerkzuordnung.
vG Looxer
-
Ich habe das hinzugefügt, aber die Gruppe wird auch nicht gefunden. `
Hi,hast du im RPC Adapter die virtual devices aktiviert ?
Auch die Gruppen brauchen Raum und Gewerkzuordnung.
vG Looxer `
Ja sie sind auch zugeordnet.
-
Hi,
ok, du hast das berüchtigte Übersetzungsproblem.
Das ist inkl Lösung auf seite 4 der FAQs beschrieben.
vG Looxer
-
Hi,
ok, du hast das berüchtigte Übersetzungsproblem.
Das ist inkl Lösung auf seite 4 der FAQs beschrieben.
vG Looxer `
Thx ich habe nun alles geändert. alle Aufzählungen gelöscht, die CCU Gewerke neu geschrieben und nun ist auch alles Deutsch im IOBroker.
Die Gewerk Bezeichnungen habe ich im Script nun wieder auf Heizung und Verschluss geändert und alles gestartet. Nun wird aber gar nix mehr erkannt. Hab ich irgendwo was vergessen umzutragen?
DIe Bezeichnungen bei den Thermostaten sind richtig, Also Gewerk und Raum.
Als Ausgabe vom Script bekomme ich folgendes:
19:57:31.817 [info] javascript.0 Start javascript script.js.common.Heizung 19:57:31.817 [info] javascript.0 script.js.common.Heizung: Routine GetDevices Devices initialisiert 19:57:31.817 [info] javascript.0 script.js.common.Heizung: registered 0 subscriptions and 0 schedules 19:57:33.824 [info] javascript.0 script.js.common.Heizung: Heizungsscript verarbeitung benutzt Trigger und Events 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:429:17) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:437:17) 19:57:33.824 [warn] javascript.0 at setOwnState (script.js.common.Heizung:560:5) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:882:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9) 19:57:33.824 [warn] javascript.0 at SetEventGlobalParameter (script.js.common.Heizung:1949:9) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:883:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9) 19:57:33.824 [warn] javascript.0 at SetEventGlobalParameter (script.js.common.Heizung:1954:9) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:883:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9) 19:57:33.824 [warn] javascript.0 at SetEventGlobalParameter (script.js.common.Heizung:1960:9) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:883:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9) 19:57:33.824 [warn] javascript.0 at SetEventGlobalParameter (script.js.common.Heizung:1963:9) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:883:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9) 19:57:33.824 [warn] javascript.0 at SetEventGlobalParameter (script.js.common.Heizung:1969:9) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:883:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9) 19:57:33.824 [warn] javascript.0 at SetEventGlobalParameter (script.js.common.Heizung:1972:9) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:883:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9) 19:57:33.824 [warn] javascript.0 at SetEventGlobalParameter (script.js.common.Heizung:1976:9) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:883:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9) 19:57:33.824 [warn] javascript.0 at SetEventGlobalParameter (script.js.common.Heizung:1979:9) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:883:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9) 19:57:33.824 [warn] javascript.0 at SetEventGlobalParameter (script.js.common.Heizung:1984:9) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:883:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9) 19:57:33.824 [warn] javascript.0 at SetEventGlobalParameter (script.js.common.Heizung:1988:13) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:883:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9) 19:57:33.824 [warn] javascript.0 at SetEventGlobalParameter (script.js.common.Heizung:1994:13) 19:57:33.824 [warn] javascript.0 at LoopRooms (script.js.common.Heizung:883:5) 19:57:33.824 [warn] javascript.0 at Object. (script.js.common.Heizung:494:9)
-
Hi
@lindi200000:Nun wird aber gar nix mehr erkannt. Hab ich irgendwo was vergessen umzutragen? `
Hi,mach mal einen ioBroker Neustart.
Falls das nicht hilft, dann poste bitte nochmal die Objektübersicht wie vorher.
vG Looxer
-
Hi
@lindi200000:Nun wird aber gar nix mehr erkannt. Hab ich irgendwo was vergessen umzutragen? `
Hi,mach mal einen ioBroker Neustart.
Falls das nicht hilft, dann poste bitte nochmal die Objektübersicht wie vorher.
vG Looxer `
Danke dir,
jeder boot tut gut.
Es wird nun alles erkannt, jetzt kann ich mich ans VIS machen
Thx und VG
Lindi
-
Zu Änderungen in Räumen, Gewerken etc. in HomeMatic:
Erst heute wieder festgestellt: Während ein "Neu Laden" des hm-rega-Adapters die Änderungen dann in den Aufzählungen anzeigt, werden die Objekte unter "enum.rooms", etc. noch nicht aktualisiert, sondern eben nur durch Neustart des ioBrokers. Da darf man sich also nicht täuschen lassen, wenn es in den Aufzählungen aktualisiert ist…
Ich hab das mal auf GitHub zum hm-rega-Adapter eingestellt, https://github.com/ioBroker/ioBroker.hm-rega/issues/43.
Frage zur manuell gesetzten Soll-Temperatur:
In der derzeitigen Script-Version habe ich folgendes Verhalten bei aktiver Heizperiode, die z.B. aktuell bei 23°C heizt.
Folgendes passiert, wenn ich im VIS die manuell gesetzte Soll-Temperatur ändere:
-
bei manueller Soll-Temp 22° –> HomeMatic Thermostat geht von 23° auf 22° -> gut
-
bei manueller Soll-Temp 21° --> HomeMatic Thermostat bleibt auf 22° -> weshalb?
-
bei manueller Soll-Temp 25° –> HomeMatic Thermostat bleibt auf 22°-> weshalb?
Oder ist das noch ein Bug, der bald behoben ist? Siehe hier:
@looxer01:Gerade getestet in der kommenden Version:
1. SollTemp = 21 Grad - keine manuelle Temp
2. View = 20.5 - Gültigkeit wird gesetzt
3. View = 20 Grad Gültigkeit bleibt bestehen
4. View = 19 Grad Gültigkeit bleibt bestehen
5. View = 0 - Gültigkeit gelöscht `
Wenn ja, wäre es möglich, die Vorab-Version zu bekommen? 8-)
-
-
-
hab dir eine PN gesendet. `
Vielen Dank, habe getestet und Dir geantwortet, funktioniert damit so wie es soll 8-)Habe es sowohl mit HM-Gruppen als auch mit einzelnen Thermostaten getestet.
-
Hallo, also das mit der Projektauslagerung hat funktioniert, das Vis aktualisiert jetzt ganz gut.
Ich hätte zum Script noch eine Frage:
Ich habe drei Ausrufezeichen im Script.
Zeile 427
> for (var i = 1; i <= MaxProfile; i++) {
Hinweis:" í´is already defined-Zeile 457
> for (var roomName in rooms) {.
Hinweis: roomName is already definedund
Zeile 467
> if (debug) {log("Ignoriere Trigger nach Änderung für State " + state.id, "info");}
Hinweis: To many errors (16% scanned)Liegt es daran, dass ich die Roomlist aktiviert habe? Hier meine RoomList:
var UseRoomList = true; // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet var RoomList = []; RoomList[0] = ['Bad']; // Liste der Raeume die gesteuert werden soll zum Testen RoomList[1] = ['Schlafzimmer']; RoomList[2] = ['Lias']; RoomList[3] = ['Jani']; RoomList[4] = ['Küche'];
In der Liste NoneHMTab habe ich die Räume ebenfalls nochmal genannt:
`var NoneHMTab = []; // 0 = Raum 1 = Datenpunkt bis vor Geraet 2=Datenpunkt Geraet 3=Datenpunkt SollTemp 4= Ventilstellung bei NichtHeizperiode 5\. Delay nach Verschluss zu NoneHMTab[0] = ['Bad', 'maxcube.0.devices', [/code]` Stimmt da alles? Das Script läuft ganz gut. Einzigst im Widget zeigt er bei Modus immer close anstatt Manuel, etc. ...
-
das mit der Projektauslagerung hat funktioniert, das Vis aktualisiert jetzt ganz gut. `
super, werde ich dann in die Doku schreiben. Ich denke, dass ist speziell bei 3-Profilen, mehreren Räumen und dann noch mit eine PI sehr sinnvollHinweis: To many errors (16% scanned) `
du nutzt noch den 3.xx Javascript adapter. Der hatte ein limit was die Anzahl von JS Befehlen und checks angeht.Wenn dieses überschritten wurde dann kam diese Fehlermeldung
Überhaupt war der Editor mehr auf Webpages ausgerichtet und hat die Meldungen entsprechend generiert.
Das ist beim 4.xx JS adapter mit dem neuen editor anders.
In der neuen Scriptversion 2.2 zusammen mit dem neuen Editor gibt es keine einzige warnmeldung mehr
Stimmt da alles?
Das Script läuft ganz gut. `
du brauchst die Raumliste nicht zu nutzen, wenn du keine einzelnen Räume ausschliessen willst.schadet zwar nicht, hilft aber auch nicht.
Die Raumliste ist hilfreich, z.B. zum Debuggen einzelner Räume und auch, wenn für eine weile ein Raum nicht teilnehmen soll
vG Looxer
-
Das war ein genialer Hinweis mit dem Javascript;-)
Vielen Dank Loxer01.
Das ist ein ganz tolles Projekt. Nun habe ich mir für mein Tadosystem noch ein Blockly Script gebaut und ich bin völlig unabhängig von dieser Max!Software und Tado.
Ich hätte noch eine Frage.
Wenn ich nun in einem Raum mehrere Sensoren und Heizungsthermostate betreibe, trage ich diese in den gleichen Raum mit ein.
Gestern hatte ich es mal versuch, scheinbar hatte es aber nicht so ganz funktioniert.
Steuert das Widget, auf einem Vis, dann beide Thermostate in den Raum? Oder muss für das zweite Thermostat ein extra Vis (Raum) erstellt werden.
var NoneHMTab = []; // 0 = Raum 1 = Datenpunkt bis vor Geraet 2=Datenpunkt Geraet 3=Datenpunkt SollTemp 4= Ventilstellung bei NichtHeizperiode 5\. Delay nach Verschluss zu NoneHMTab[0] = ['Bad', 'maxcube.0.devices', 'thermostat_0cddf5', 'setpoint', 12, 0]; NoneHMTab[1] = ['Schlafzimmer', 'maxcube.0.devices', 'thermostat_085cca', 'setpoint', 12, 0]; NoneHMTab[2] = ['Lias', 'maxcube.0.devices', 'thermostat_085ce3', 'setpoint', 12, 0]; NoneHMTab[3] = ['Jani', 'maxcube.0.devices', 'thermostat_085cd4', 'setpoint', 12, 0]; NoneHMTab[4] = ['Küche', 'maxcube.0.devices', 'thermostat_0cde59', 'setpoint', 12, 0]; NoneHMTab[5] = ['Stube', 'maxcube.0.devices', 'thermostat_1bb678', 'setpoint', 12, 0]; NoneHMTab[5] = ['Stube', 'maxcube.0.devices', 'thermostat_1bb875', 'setpoint', 12, 0];
In Stube sind nun zwei Thermostate
-
Wenn ich nun in einem Raum mehrere Sensoren und Heizungsthermostate betreibe, trage ich diese in den gleichen Raum mit ein.
Gestern hatte ich es mal versuch, scheinbar hatte es aber nicht so ganz funktioniert.
Steuert das Widget, auf einem Vis, dann beide Thermostate in den Raum? Oder muss für das zweite Thermostat ein extra Vis (Raum) erstellt werden. `
Hi,mehrere Sensoren und Thermostate in einem Raum sollte kein Problem sein.
Sie muessen nur in den tabellen dem Raum zugeordnet werden.
Das script simuliert sozusagen die Thermostate als Gruppe.
-
Ändere ich eines, dann ändern sich alle.
-
Auch die Sensoren funktionieren so. Öffnet sich eines, dann ist der Raum offen, ein zweites dann bleibt der Raum offen.
-
Schließt sich das erste, dann bleibt der Raum offen bis eben der letzte Sensor geschlossen ist.
So sollte es jedenfalls sein.
Dazu muessen alle Thermostate eines Raumes auch einem Raum zugeordnet sein. In VIS ist da nichts zu machen.
vG Looxer
EDIT: mir faellt ein, dass es ein Problem bein synching mehrerer Thermostate in 2.1 gibt.
Das ist mit Version 2.2 behoben. Falls du also ein Problem hast, dann sag Bescheid. Ich schicke dir dann eine Vorabversion.
EDIT2: ich sehe gerade, dass du einen Fehler hast in deinen Einstellungen. Der letzte Eintrag braucht einen Tabellenzähler 6.
Du hast aber 2 x 5 was zu einem einzigen Eintrag führt. Das kann nicht funktionieren.
-
-
Hallo Looxer,
vielen Dank für den Hinweis. Ich hatte zuvor bei Objekte den Heizplan in Javascript manuel gelöscht und siehe da, es ging.
Mit Änderung des 2 x 5 Tabellenzähler funktioniert der Sync aber auch.
Ich bin auch gerne bereit das 2.2 Script zu verwenden. Ich würde mich freuen, wenn du mir es zukommen lässt.
Vielen Dank für die echt geniale Arbeit.
-
Guten Abend allerseits,
nochmals vielen Dank looxer, die Test-Version 2.2 funktioniert seit mehreren Tagen super!
Frage zur "Absicherung":
Heizung ist ja doch kritischer als wenn mal im Raum keine Lampe angeht, gerade wenn man mal länger in der kalten Jahreszeit abwesend ist.
Ich habe daher jetzt dem Script eine eigene Instanz des JavaScript-Adapters gegönnt, in der nur das Heizungssteuerungs-Script läuft. Ich hatte es nämlich schon, dass ein anderes Script die JS-Instanz ständig zum Abstürzen brachte, das ist dann mit der separaten Instanz schon mal vermieden.
Ich bin neu in HomeMatic: Kann ich da sozusagen als "Fall-Back-Lösung" entsprechend Heizpläne in HomeMatic konfigurueren, und greifen diese dann automatisch, wenn das Script nicht laufen sollte? "Erzwinge Manuell Mode" habe ich aktiviert.
Danke.
-
@Mic:Frage zur "Absicherung":
Heizung ist ja doch kritischer als wenn mal im Raum keine Lampe angeht, gerade wenn man mal länger in der kalten Jahreszeit abwesend ist.
Ich habe daher jetzt dem Script eine eigene Instanz des JavaScript-Adapters gegönnt, in der nur das Heizungssteuerungs-Script läuft. Ich hatte es nämlich schon, dass ein anderes Script die JS-Instanz ständig zum Abstürzen brachte, das ist dann mit der separaten Instanz schon mal vermieden.
Ich bin neu in HomeMatic: Kann ich da sozusagen als "Fall-Back-Lösung" entsprechend Heizpläne in HomeMatic konfigurueren, und greifen diese dann automatisch, wenn das Script nicht laufen sollte? "Erzwinge Manuell Mode" habe ich aktiviert. `
Hi Mic,Mir fallen 2 Wege für einen Fallback bei Ausfall von ioBroker oder Script ein.
1. der Einfache Weg mit Funktionseinschränkung
Du setzt alle Thermostate auf AUTO und Gültigkeitszeit der manuellen Aenderung im Script (View) auf -1.
Dann wird Homematic die Kontrolle beim nächsten Planwechsel übernehmen für den Fall, dass das Script nicht mehr ausgeführt werden kann.
Nachteil: manuelle Temperaturen (z.B. manuelle Thermostatverstellung) sind nicht mehr möglich
2. der komfortable Weg mit Homematic Programmierung
du erstellst ein Script in Homematic, das folgendes macht
-
absetzen eines PING auf ioBroker.
-
Wenn ping erfolgreich - mache nichts
-
wenn ping nicht erfolgreich –> setze alle Thermostate auf AUTO
Nachteil: funktioniert nur mit Homematic Geräten und ist relativ aufwändig.
Anmerkung für den PING kannst du CUXD verwenden.
vielleicht gibt es aber noch mehr Ansätze von anderen.
vG Looxer
-