NEWS
[Vorlage] Aufheiz-Zeiterfassung und Voraussteuerung für Heizungen
-
Hier in Karlsruhe nicht anders, aber am Ende habe ich keinen sinnvollen zusammenhang der ganzen Werte. Ich habe mit einigen Dingen experimentiert, allerdings waren die Ergebnisse alle fragwürdig weil es einfach zu viele Faktoren gibt. Und die sind auch noch bei jedem anders. Das generischste und am Ende sinnvollste war das einfache messen der Temperaturänderungen und das ganze über die letzten 10 Messungen zu „glätten“. Die Näherung der Methode hat bei mir die letzte Zeit gut funktioniert. `
OK - Ich wusste ja nicht das du es schon getestet hast. Ich lasse es mal einige Tage laufen und schaue dann was das Ergebnis ist.
Bis jetzt hat es noch keine Werte in die Objekte geschrieben aber es läuft ja auch erst seit heute Morgen.
Gruß
Dirk
-
Hallo, eine Frage bitte zum Script 1 - Aufheiz-Zeiterfassung
ich habe es wie im Beispiel eingegeben, also die STATE und die Aktuelle-Temperatur.
Die Datenpunkte je Eintrag Bsp. "Arbeitszimmer" wurden angelegt.
javascript.0.Heizung.Aufheizzeit.Arbeitzimmer - Zahl
javascript.0.Heizung.Aufheizzeit.Arbeitzimmer-Data - Zeichenkette
Das Programm läuft seit heute Morgen die Datenpunkte werden aber nicht gefüllt.
Ist das richtig? In der Zwischenzeit hat sich aber der Zustand von "hm-rpc.1.0005D5699CF8F2.5.STATE" (Arbeitszimmer FBH) geändert.
Gruß
Dirk
-
Am besten schalte mal Debug auf true (bzw so war es im Standard) und dann schau im logfile mit dem Scriptnamen. Dann siehst du was er tut. Es gibt ein paar Fälle wo er Werte ignoriert wie wenn Temperaturen fallen oder die errechnete Zeit zu hoch ist. Vllt ist ja so etwas passiert?!
-
Am besten schalte mal Debug auf true (bzw so war es im Standard) und dann schau im logfile mit dem Scriptnamen. Dann siehst du was er tut. Es gibt ein paar Fälle wo er Werte ignoriert wie wenn Temperaturen fallen oder die errechnete Zeit zu hoch ist. Vllt ist ja so etwas passiert?! `
Debug ist auf true - es wird aber leider im Log nichts ausgegeben.Sollte ich mal diese Zeilen wieder "einkommentieren" und schauen ob was ausgegeben wird?
//console.log('Änderung Status Aktor FBH ' + room + ': ' + state.oldState.val + '--> ' + state.state.val + ' (ack=' + state.state.ack + ', from=' + state.state.from + ') status=' + rooms[room].status); //console.log(room + " timeDiff=" + timeDiff);
-
Dann hast du noch mehr Logs. Versuchs.
Gar nichts im log sollte aber eher nicht sein. Aber er loggt nur wenn der Aktor aktiv ist.
-
Dann hast du noch mehr Logs. Versuchs.
Gar nichts im log sollte aber eher nicht sein. Aber er loggt nur wenn der Aktor aktiv ist. `
OK es gibt Log-Einträge aber keine Einträge in den Objekten.
! javascript.0 2017-12-29 18:07:27.442 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Schlafzimmer: false–> false (ack=true, from=system.adapter.hm-rpc.1) status=false
! javascript.0 2017-12-29 18:07:27.206 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Elternbad: false--> false (ack=true, from=system.adapter.hm-rpc.1) status=false
! javascript.0 2017-12-29 18:07:27.151 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Kinderbad: false--> false (ack=true, from=system.adapter.hm-rpc.1) status=false
! javascript.0 2017-12-29 18:07:26.904 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Moritz: false--> false (ack=true, from=system.adapter.hm-rpc.1) status=false
! javascript.0 2017-12-29 18:07:26.854 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Lara: true--> true (ack=true, from=system.adapter.hm-rpc.1) status=true
! javascript.0 2017-12-29 18:00:54.996 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Lara timeDiff=0
! javascript.0 2017-12-29 18:00:54.996 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Lara: false--> true (ack=true, from=system.adapter.hm-rpc.1) status=false
! javascript.0 2017-12-29 18:00:50.203 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Lara timeDiff=2
! javascript.0 2017-12-29 18:00:50.201 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Änderung Status Aktor FBH Lara: true--> false (ack=true, from=system.adapter.hm-rpc.1) status=true
! javascript.0 2017-12-29 18:00:00.456 info script.js.Heizungssteuerung.P_Thermostatsteuerung: Heizungsscript verarbeitung durchgelaufen
! javascript.0 2017-12-29 17:59:04.848 info script.js.Heizungssteuerung.Aufheizmessung_FBH: registered 8 subscriptions and 0 schedules
! javascript.0 2017-12-29 17:59:04.848 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Wohnzimmer initialisiert, status=false
! javascript.0 2017-12-29 17:59:04.848 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Arbeitzimmer initialisiert, status=false
! javascript.0 2017-12-29 17:59:04.847 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Flur initialisiert, status=false
! javascript.0 2017-12-29 17:59:04.847 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Lara initialisiert, status=true
! javascript.0 2017-12-29 17:59:04.847 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Lara: Aktor eingeschaltet, starte Aufheizmessung jetzt (21.3)
! javascript.0 2017-12-29 17:59:04.846 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Moritz initialisiert, status=false
! javascript.0 2017-12-29 17:59:04.846 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Kinderbad initialisiert, status=false
! javascript.0 2017-12-29 17:59:04.846 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Schlafzimmer initialisiert, status=false
! javascript.0 2017-12-29 17:59:04.845 info script.js.Heizungssteuerung.Aufheizmessung_FBH: Raum Elternbad initialisiert, status=false
! javascript.0 2017-12-29 17:59:04.826 info Start javascript script.js.Heizungssteuerung.Aufheizmessung_FBH
! javascript.0 2017-12-29 17:59:04.818 info Stop script script.js.Heizungssteuerung.Aufheizmessung_FBH -
Hi,
ich habe eine Frage zum ersten Script "Aufheizmessung":
Im Raum-Objekt sind pro Raum die State-IDs des Aktors und die der Ist-Temperatur definiert die genutzt werden.
Pro Raum werden unter "stateBaseId" zwei States angelegt. Einmal mit der aktuell errechneten Aufheizzeit und einmal mit den letzten 10 Messwerten (die für die Mittelwertbildung herangezogen werden). `
Welchen Datenpunkt soll ich den nehmen, wenn ich eine normale Heizung habe?Weder im Ventil noch im Wandthermostat gibt es einen Datenpunkt STATE (Status des Heizungsaktors zur Erkennung wann geheizt wird und wann nicht). Ich könnte das höchstens über VALVE_STATE erkennen (0% = heizt nicht, > 0% = heizt).
Danke und Gruß,
Eric
-
@Dirk: er fängt erst an zu rechnen wenn der aktor mind. 31 Minuten an war. Alles kürzere ist nicht aussagekräftig. Von daher misst er am ehesten wenn man nach der Nacht den Raum „hoch heizt“ und er misst eher nicht wenn man die temperatur hält und dazu kurz misst. Der Eintrag mit „timediff=2“ sagt das dr aktor nur 2 Minuten an war.
@eric2905: eine super frage
das Skript ist aktuell am ehesten für „Aktoren“ ausgelegt die ein und ausgeschaltet werden. Ein normales heizungsventil was zu 20% offen ist hat ja nie die volle Heizleistung. Man könnte versuchen mit einem Mini Skript einen js Datenpunkt mit true/false anzulegen der auf Änderungen der Ventilsteuerung reagiert und das als State im Skript nutzen. Ich würde aber dann das nur auf true setzen wenn ventilstellung 90% (oder 80% maximalst) ist. Du willst ja ermitteln wie lange er auf „Maximum“ heizen müsste um eine solltenperatur zu erreichen. Wäre mal ein interessantes Experiment ob da was sinnvolles rauskommt. Dann kann ich gern Support dafür später einbauen offiziell
-
@Dirk: er fängt erst an zu rechnen wenn der aktor mind. 31 Minuten an war. Alles kürzere ist nicht aussagekräftig. Von daher misst er am ehesten wenn man nach der Nacht den Raum „hoch heizt“ und er misst eher nicht wenn man die temperatur hält und dazu kurz misst. Der Eintrag mit „timediff=2“ sagt das dr aktor nur 2 Minuten an war. `
OK - Dann wird das Script wahrscheinlich nie etwas messen können, da die Stellmotoren durch die Homematic IP Steuerungseinheit nach ca. 10 - 12 Minuten ausgeschaltet werden und ggf. direkt wieder eingeschaltet werden.
Das kann ich auch nicht einstellen - ist in dem "Homematic IP Steuerungseinheit" Dingens drin.
Ggf. könnte ich hier
var timeDiff = Math.round((new Date().getTime() - rooms[room].letztesEin) / 1000 / 60); console.log(room + " timeDiff=" + timeDiff); if (timeDiff > 30) { var invalid = false;
die 30 gegen eine 10 ändern - würde das etwas nützen?
Gruß
Dirk
-
Ja aber die Frage durchaus du dann misst… eine Idee wäre eher sich abzusehen wenn es aus geht und direkt danach wieder an dann das „aus“ zu ignorieren.
Am mal grundsätzlich: soooo gut für die Stellmotoren ist das aber auch nicht oder?!
-
Ich baue mir morgen mal so ein kleines Script und lasse es dann mal für einen Raum mitlaufen.
Bei uns ist tagsüber keiner zu Hause und ich fahre die Raumtemperatur daher auf 19 Grad runter und mit entsprechendem Vorlauf dann später wieder hoch. Somit ist es dann wieder warm, wenn wir nach Hause kommen.
Als Schwellwert werde ich wohl die 80% Ventilöffnung nehmen.
Melde mich dann.
Gruß,
Eric
Von unterwegs getippert
-
@dirk: je länger ich nachdenke desto mehr Sinn macht es die fahrzeitbasiert Ventile zu berücksichtigen. Ich baue später mal was ein was ein „aus“ erst dann als aus nimmt wenn mindestens x sekunden aus alsbzustand war. Meine fbh Ventile brauchen 3 min zum auf oder zu fahren. Wenn also vor in 3 min wieder ein „auf“ kommt waren sie effektiv nicht wirklich zu, also kann er weiter messen.
Wie weit liegen bei deinem hm ip System die zu/auf auseinander wenn er wirklich gerade heizen muss?
-
@eric2905: super, bin gespannt ob das gemessene mir deinen Erfahrungswerten übereinstimmt
-
Ja aber die Frage durchaus du dann misst… eine Idee wäre eher sich abzusehen wenn es aus geht und direkt danach wieder an dann das „aus“ zu ignorieren. `
Stimmt ist auch eine sehr gute Idee - gerade weil das "aus" ja nur einige Sekunden vorhanden ist. Der "on Befehl" reagiert aber direkt und somit kommen die 30 Minuten nicht zusammen.Am mal grundsätzlich: soooo gut für die Stellmotoren ist das aber auch nicht oder?!
`
Ja das stimmt. Aber leider kann ich es nicht ändern bzw. ich habe noch nicht gefunden wo ich es ändern kann. Ganz so schlimm ist es aber nicht, da die Stellmotoren eine eingebaute Verzögerung von fast einer Minute haben und somit nicht reagieren.Gruß Dirk
-
@eric2905: super, bin gespannt ob das gemessene mir deinen Erfahrungswerten übereinstimmt
`
Habe es doch jetzt noch eingebaut- dann kriege ich die Aufheizphase morgen früh schon mit.
Hier das initiale Log Deines Scriptes:
22:52:51.674 [info] javascript.0 Start javascript script.js.Aktiv.Heizung.Aufheizmessung 22:52:51.675 [info] javascript.0 script.js.Aktiv.Heizung.Aufheizmessung: Raum Wohnzimmer initialisiert, status=false 22:52:51.675 [info] javascript.0 script.js.Aktiv.Heizung.Aufheizmessung: registered 1 subscription and 0 schedules
Und hier der Screenshot der aktuell angelegten Datenpunkte:
Bin mal auf morgen früh gespannt.
Gruß,
Eric
-
Hallo apollon77,
ist ja klasse, Das Thema beleuchte ich auch grade.
Ich habe unter dem Dach einen Raum den ich leider elektrisch heizen muss, da ist jede Minute die der Heizkörper weniger an ist, bares Geld.
Heute morgen waren die Datenpunkte gefüllt.
Ich habe die letzten Wochen versucht die Abhängigkeit der Aufheizzeit von der Aussentemperatur zu erfassen.
Dazu habe ich die Aussentemperatur zu Beginn der Aufheizzeit und die Zeitdauer bis die Solltemperatur erreicht ist protokolliert.
Nachdem genug Daten vorhanden waren hab ich das mal in ein Diagramm übertragen und bis auf einige Ausrutscher eine wirklich schöne Kurve rausbekommen die sich in meinem Fall mit einer linearen Gleichung darstellen lässt.
Das wäre doch noch eine schöne Ergänzung.
Es ist natürlich klar, das die Steilheit der Kurve vom Dämmstandard des Gebäudes abhängig ist. Bei modernen, sehr gut gedämmten Gebäuden wird diese Abhängigkeit nur sehr kleinen Einfluss haben.
-
Vergleiche doch mal die Daten meines Skriptes mit den Ergebnissen deiner Funktion die nächsten Tage… wäre ja mal interessant ob das passt?!
-
Neue versionen beider Skripte mit Optimierungen im ersten Beitrag und Changelog im zweiten Beitrag
-
Es dauert leider noch bis ich eine vernünftige Gegenüberstellung machen kann.
Leider hat mein History Adapter wieder mal Datenpunkte "vergessen". Diesmal leider den Datenpunkt der Raumtemperatur des Testraums.
Übrigens, ich hatte noch eine zweiten Raum angelegt und dort als Heizungs Status den Valve State eingetragen. Auch hier kommen erstaunlicherweise sinnvolle Werte in den Datenpunkten des Aufheiz Scripts an.
Werde jetzt mal die neue Version starten.
-
Übrigens, ich hatte noch eine zweiten Raum angelegt und dort als Heizungs Status den Valve State eingetragen. Auch hier kommen erstaunlicherweise sinnvolle Werte in den Datenpunkten des Aufheiz Scripts an. `
Interessant, ohne das neue Skript würde er die messung starten sobald das Ventil auch nur 1% offen ist … das ist ja nicht wirklich "heizen"
Mit der neuen version sollte es sinnvoller sein.