NEWS
[Vorlage] Heizungsthermostatsteuerung 2.1 - Script
-
EDIT - SIEHE NEUEN THREAD: Link
Falls wer Testen will:
Folgendes Script setzt automatisch den Offset-Wert der Homematic-Thermostate, berechnet aus dem Wert von Xiaomi-Sensoren (oder anderer) dank "sendTo". Ich musste etwas "revers engineering" machen, da die Werte, die HomeMatic will, nicht tatsächliche Temperaturwerte sind (z.B. +2° = 11).
Das zu setzende Offset wird im Script wie folgt berechnet: [Homematic ACTUAL_TEMPERATURE (z.B. 22°C)] minus [Xiaomi-Sensor-Wert (z.B. 20°C)].
Falls gesetzte HM-Temperatur unter definierter Schwellgrenze (z.B. 20°C), passiert allerdings nichts, damit das Script nicht ausgeführt wird, wenn z.B. 12°C eingestellt ist.
https://github.com/Mic-M/iobroker.homem … sensors.js
Achtung: ist eine Pre-Alpha-Version - also nur für Testwillige geeignet und kann noch Fehler enthalten. Getestet von mir mit Nicht-IP-Thermostaten.
Kann gerne von Euch übernommen, erweitert usw. werden, ich komme wohl die nächsten paar Wochen nicht dazu.
Eventuell wäre es aber sinnvoller, wenn das Heizungsscript hier sich selbst um das Offset kümmert, auch weil Homematic nur max. 3,5°C Offset zulässt.
-
@Mic:Falls wer Testen will:
Folgendes Script setzt automatisch den Offset-Wert der Homematic-Thermostate, berechnet aus dem Wert von Xiaomi-Sensoren (oder anderer) dank "sendTo". Ich musste etwas "revers engineering" machen, da die Werte, die HomeMatic will, nicht tatsächliche Temperaturwerte sind (z.B. +2° = 11).
Das zu setzende Offset wird im Script wie folgt berechnet: [Homematic ACTUAL_TEMPERATURE (z.B. 22°C)] minus [Xiaomi-Sensor-Wert (z.B. 20°C)].
Falls gesetzte HM-Temperatur unter definierter Schwellgrenze (z.B. 20°C), passiert allerdings nichts, damit das Script nicht ausgeführt wird, wenn z.B. 12°C eingestellt ist.
https://github.com/Mic-M/iobroker.homem … sensors.js
Achtung: ist eine Pre-Alpha-Version - also nur für Testwillige geeignet und kann noch Fehler enthalten. Getestet von mir mit Nicht-IP-Thermostaten.
Kann gerne von Euch übernommen, erweitert usw. werden, ich komme wohl die nächsten paar Wochen nicht dazu.
Eventuell wäre es aber sinnvoller, wenn das Heizungsscript hier sich selbst um das Offset kümmert, auch weil Homematic nur max. 3,5°C Offset zulässt. `
ich würde es am liebsten direkt testen aber leider fehlt mir noch mein CC2531 Stick um die Xiaomi Geräte in ioBroker einzubinden.
Kurze Frage zum Skriptablauf, setzt du bei erreichen der Xiaomi Temperatur den Offset des Thermostat wieder auf 0 ? Habe den Teil jetzt nicht direkt im Skript gefunden.
edit:
ist hier nicht ein Fehler…
Zeile 84: var loopOffset = (loopHmActualTemp - loopExtTemp);
wenn der HKT Wert bei 22 liegt und der Sensor Wert 20 ergibt deine Variable eine 2, man muss aber -2 eintragen anstatt 2.
Oder drehst du den Wert irgendwo weiter unten?
-
@Mic:Falls wer Testen will:
Folgendes Script setzt automatisch den Offset-Wert der Homematic-Thermostate, berechnet aus dem Wert von Xiaomi-Sensoren (oder anderer) dank "sendTo". Ich musste etwas "revers engineering" machen, da die Werte, die HomeMatic will, nicht tatsächliche Temperaturwerte sind (z.B. +2° = 11).
Das zu setzende Offset wird im Script wie folgt berechnet: [Homematic ACTUAL_TEMPERATURE (z.B. 22°C)] minus [Xiaomi-Sensor-Wert (z.B. 20°C)].
Falls gesetzte HM-Temperatur unter definierter Schwellgrenze (z.B. 20°C), passiert allerdings nichts, damit das Script nicht ausgeführt wird, wenn z.B. 12°C eingestellt ist.
https://github.com/Mic-M/iobroker.homem … sensors.js
Achtung: ist eine Pre-Alpha-Version - also nur für Testwillige geeignet und kann noch Fehler enthalten. Getestet von mir mit Nicht-IP-Thermostaten.
Kann gerne von Euch übernommen, erweitert usw. werden, ich komme wohl die nächsten paar Wochen nicht dazu.
Eventuell wäre es aber sinnvoller, wenn das Heizungsscript hier sich selbst um das Offset kümmert, auch weil Homematic nur max. 3,5°C Offset zulässt. `
Hallo Mic,
ein sehr guter Ansatz!
Ich habe dein Script kurz ausprobiert und habe Folgendes festgestellt:
- Wie TDCroPower angemerkt hat, liefert das Script ein Offset mit dem falschen Vorzeichen.
–>````
var loopOffset = (loopExtTemp - loopHmActualTemp)2) Der aktuelle Offset wirde bei der Berechnung nicht berücksichtigt. ****loopHmActualTemp**** ist ja der Temperaturwert unter Berücksichtigung des eingestellten Offsets. Ich denke, der aktuelle Offset muss von der CCU abgerufen und vom ****loopHmActualTemp**** abgezogen werden. Grüße, Max
-
naja der aktuelle Offset ist eigentlich egal solange das Script dauerhaft die Werte regelt.
Sobald eine negative Differenz vorhanden ist wird der Offset Wert sowieso überschrieben.
-
naja der aktuelle Offset ist eigentlich egal solange das Script dauerhaft die Werte regelt.
Sobald eine negative Differenz vorhanden ist wird der Offset Wert sowieso überschrieben. `
Ohne berücksichtigung des aktuellen Offsets wird das Nichts…
Zahlenneispiel:
1)Offset = 0
HKT = 20°C
EXT = 18°C
--> Offset = 18 - 20 = -2
-
Offset = -2* HKT = 18°C
EXT = 18°C
–> Offset = 18 - 18 = 0
- Offset = 0
HKT = 20°C
EXT = 18°C
--> Offset = 18 - 20 = -2
etc.
Nun unter Einbeziehung des Offsets (HKT - EXT + Offset)
1)Offset = 0
HKT = 20°C
EXT = 18°C
--> Offset = 18 - 20 + 0 = -2
- Offset = -2
HKT = 18°C
EXT = 18°C
--> Offset = 18 - 18 + (-2) = -2
- Offset = -2
HKT = 18°C
EXT = 18°C
--> Offset = 18 - 18 + (-2) = -2
Offset konvergiert hier gegen -2...
Grüße
-
-
!
@frostnatt:
! >@TDCroPower:naja der aktuelle Offset ist eigentlich egal solange das Script dauerhaft die Werte regelt.
Sobald eine negative Differenz vorhanden ist wird der Offset Wert sowieso überschrieben. `
Ohne berücksichtigung des aktuellen Offsets wird das Nichts…
Zahlenneispiel:
1)Offset = 0
HKT = 20°C
EXT = 18°C
--> Offset = 18 - 20 = -2
-
Offset = -2* HKT = 18°C
EXT = 18°C
–> Offset = 18 - 18 = 0
- Offset = 0
HKT = 20°C
EXT = 18°C
--> Offset = 18 - 20 = -2
etc.
Nun unter Einbeziehung des Offsets (HKT - EXT + Offset)
1)Offset = 0
HKT = 20°C
EXT = 18°C
--> Offset = 18 - 20 + 0 = -2
- Offset = -2
HKT = 18°C
EXT = 18°C
--> Offset = 18 - 18 + (-2) = -2
- Offset = -2
HKT = 18°C
EXT = 18°C
--> Offset = 18 - 18 + (-2) = -2
Offset konvergiert hier gegen -2...
Grüße
du hast glaube ich einen Denkfehler oder meine Theorie falsch verstanden.
Es wird der Offset nicht addiert, sondern immer neu beschrieben also die Variable beinhaltet immer das Ergebnis von EXT minus HKT.
Natürlich immer nur solange HKT größer als EXT ist. `
-
-
Hallo zusammen,
Newbie-Frage, auf welche ich bisher keine Antwort finden konnte. Ich habe das HM-MOD-RPI-PCB Modul am Raspi in Betrieb genommen und kann nun über eine Webseite auf die piVCCU (3) zugreifen und habe dort meine Heizkörper eingerichtet usw. Ich möchte gerne looxer01 Skript verwenden und letztendlich auch eine Anwesenheitskontrolle umsetzen. Alles ist ja wirklich gut dokumentiert, aber ich finde nicht raus, ob und wenn ja welche Adapter zunächst installiert werden müssen. Vielleicht habe ich es überlesen… Ich frage trotzdem:
Welche Adapter müssen installiert und konfiguriert sein, damit man mit dem Skript starten kann?`
Danke und Grüße
Ben
-
Hallo zusammen,
Newbie-Frage, auf welche ich bisher keine Antwort finden konnte. Ich habe das HM-MOD-RPI-PCB Modul am Raspi in Betrieb genommen und kann nun über eine Webseite auf die piVCCU (3) zugreifen und habe dort meine Heizkörper eingerichtet usw. Ich möchte gerne looxer01 Skript verwenden und letztendlich auch eine Anwesenheitskontrolle umsetzen. Alles ist ja wirklich gut dokumentiert, aber ich finde nicht raus, ob und wenn ja welche Adapter zunächst installiert werden müssen. Vielleicht habe ich es überlesen… Ich frage trotzdem:
Welche Adapter müssen installiert und konfiguriert sein, damit man mit dem Skript starten kann?`
Danke und Grüße
Ben `
hm-repa und hm-rpc für die Anbindung zu piVCCU und für die Anwesenheit ping oder tr-064 oder ähnliches.
-
-
@pxstd sagte in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
Hey @looxer01 - Heute nochmal was ganz spannendes (von jetzt gerade):
Hi,
mein erster Post im neuen Forumich nehme an, dass du dieses hier meinst:
11:40:42.315 [info] javascript.0 script.js.Heizungssteuerung.Heizungssteuerung: Routine SelectSwitchTime - Nächste Solltemperatur ist 0 fuer RaumDachboden Raumprofil ist 1
das kann eigentlich nur dann passieren, wenn du Null-Werte in den Objekte bei den Temps stehen hast.
Schaul da bitte mal nach.vG Looxer
-
Hi looxer01,
mal eine kleine Frage und ggf. ein Verbesserungsvorschlag:
Besteht die Möglichkeit, eine weitere Boolsche Variable "Manuell Heizung an" (o.ä.) einzuführen?
Diese Variable soll dazu dienen, manuell die Heizung in den Feiertagsmodus zu stellen.Momentan gibt es so keine Möglichkeit, die Heizung in den Feiertagsmodus zu stellen, ohne das es ein Feiertag ist (und der Feiertagsadapter eingebunden ist) oder man über iCAL "Urlaub_Anwesend" gesetzt hat.
Ist man nun mal einen Tag krank und will nicht in den Google-Kalender (wie meine holde Gattin), fehlt die Möglichkeit, hier den gewünschten Modus manuell zu triggern.
Stelle ich den Datenpunkt für den Feiertag manuell auf true, wird er ruckartig vom Script wieder auf false gesetzt - bringt so als nix.
Ich könnte jetzt im Script diese beiden Zeilen "missbrauchen"
var StateFeiertagHeuteAdapter = "feiertage.0.heute.boolean"; var StateFeiertagMorgenAdapter = "feiertage.0.morgen.boolean";
aber ein sep. Möglichkeit wäre evtl. sinnvoller.
Gruß,
Eric -
Gibt es eine einfache Methode, um den Kalender-Eintrag 'Homeoffice' genauso zu behandeln wie 'Urlaub-Anwesend', wobei 'Urlaub-Anwesend' auch noch zur Verfügung stehen soll?
-
@eric2905 said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
Momentan gibt es so keine Möglichkeit, die Heizung in den Feiertagsmodus zu stellen, ohne das es ein Feiertag ist (und der Feiertagsadapter eingebunden ist) oder man über iCAL "Urlaub_Anwesend" gesetzt hat.
Hi Eric,
na ja es gibt einen workaround.
Wenn du im View ICAL deaktivierst und manuell das Urlaub_Anwesend flag setzt.
bei deaktiviertem ICLA wird das flag nicht zurückgesetzt.wäre das ok ?
@OstfrieseUnterwegs said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
Gibt es eine einfache Methode, um den Kalender-Eintrag 'Homeoffice' genauso zu behandeln wie 'Urlaub-Anwesend', wobei 'Urlaub-Anwesend' auch noch zur Verfügung stehen soll?
Hi Ostfriese,
Im Moment nicht. Ich nehme das Thema mal mit auf und hoffe, dass es nicht allzu drängend ist.
Ich könnte mir z.B. vorstellen 1-2 Joker einzuführen, die dann genau das machen könnten.
Ist aber ein Stück Arbeit.vG Looxer
-
@looxer01 said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
Hi Eric,
na ja es gibt einen workaround.
Wenn du im View ICAL deaktivierst und manuell das Urlaub_Anwesend flag setzt.
bei deaktiviertem ICLA wird das flag nicht zurückgesetzt.
wäre das ok ?Hmm, na ja ...
Kurze Frage:
Der Datenpunkt "ICAL-Events_Aktiv" ist bei mir nicht gesetzt.
Kann ich damit die iCal-Verarbeitung aussetzen?Dann könnte ich damit über ein Script iCal-Verarbeitung abschalten und dann Urlaub_Anwesend setzen (ohne das der iCal mir das wieder zurücksetzt).
@looxer01 said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
Wenn du im View ICAL deaktivierst
Ach so - ich verwende noch die alten Views (von ganz am Anfang).
Wo / wie geht das?Gruß,
Eric -
@looxer01 said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
Im Moment nicht. Ich nehme das Thema mal mit auf und hoffe, dass es nicht allzu drängend ist.
Danke, ist überhaupt nicht drängend.
-
@eric2905 said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
Ach so - ich verwende noch die alten Views (von ganz am Anfang).
Wo / wie geht das?Das erklärt es.
es ist dieer Parameter:
javascript.0.Heizung.Heizplan.GlobaleParameter.ICAL-Events_Aktivwenn der auf false gesetzt wird (z.B. im View) dann kann manuell jedes Event gesetzt werden.
(also ist die ICAL Verarbeitung ausgeschaltet)vG Looxer
-
@looxer01 said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
es ist dieer Parameter:
javascript.0.Heizung.Heizplan.GlobaleParameter.ICAL-Events_AktivDen habe ich gerade gefunden (habe die neuen Views mal geladen und durchgeschaut).
Der Wert ist bei mir aber Read Only gesetzt. Kann/soll ich den dann auf Write = true setzen (Eigenschaften des Datenpunktes). -
@eric2905 said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
@looxer01 said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
es ist dieer Parameter:
javascript.0.Heizung.Heizplan.GlobaleParameter.ICAL-Events_AktivDen habe ich gerade gefunden (habe die neuen Views mal geladen und durchgeschaut).
Der Wert ist bei mir aber Read Only gesetzt. Kann/soll ich den dann auf Write = true setzen (Eigenschaften des Datenpunktes).ist mir noch gar nicht aufgefallen. Es funktioniert aber ohne probleme mit diesen Einstellungen
{ "common": { "read": true, "write": false, "type": "boolean", "name": "Global ICAL Event aktiv", "desc": "Uebersteuert Skripteinstellung", "role": "state" }, "native": { "read": true, "write": false, "type": "boolean", "name": "Global ICAL Event aktiv", "desc": "Uebersteuert Skripteinstellung", "role": "state" }, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1544272630786, "_id": "javascript.0.Heizung.Heizplan.GlobaleParameter.ICAL-Events_Aktiv", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@looxer01 said in [Vorlage] Heizungsthermostatsteuerung 2.1 - Script:
Es funktioniert aber ohne probleme mit diesen Einstellungen
So kann man zum Testen aber die Eigenschaft unter Objekte nicht ändern.
Ich setze mal Write = True und teste mal.Melde mich.
-
Hallo @looxer01 :
Ich wollte mich einmal informieren was es alles neues gibt
- Am Script ?
- Am VIEW für einen Parametersatz ?
Aktuell habe ich das Problem wieder das sich im Datenpunkt nichts ändert, wenn man im VIEW einen anderen Wert einträgt.
Sorry das ich hier einfach pauschal frage, aber in den letzten Monaten war ich mit der zu diesem Zeitpunkt anstehen Geburt meines Sohnes beschäftigt. Und nun heißt es seit Samstag, dass ich etwas mehr Heizen muss. Das einmal so etwas am Rande.......