NEWS
Temperatur angleichen Tado + Netatmo
-
Hallo liebe Leute,
ich habe die letzten Tage, da es ja langsam kalt wird, wieder ein wenig mit der Heizungssteuerung rumgespielt und bin dabei auf ein kleines Problem gestoßen, welches ich mit einem Skript lösen wollte. Dies will aber nicht richtig funktionieren, vielleicht weiß jemand von euch eine Lösung:
Ich verwende als Wetterstation Netatmo und zur Steuerung der Heizkörper Tado.
Derzeit nutzen wir zum Beheizen des Wohnzimmers in erster Linie einen Heizofen (Holz). Da dieser sehr schnell schön warm macht, sollen natürlich dann auch die Heizkörper ausgehen. Leider braucht hier die Wärme länger, bis sie auch von einem der beiden Thermostate von Tado erfasst wird.
Zentral steht die Wetterstation von Netatmo, welche sehr viel schneller erkennt, wie warm es in dem Bereich, in dem wir uns vorrangig aufhalten derzeit ist.
Das diese Unterschiede in den Temperaturen da sind und auch warum leuchtet mir ein und das ist auch vollkommen ok. Ich würde trotzdem gerne in solchen Situationen die Heizung automatisch abschalten lassen.
Meine Idee hierzu war anfangs, die Temperatur der Thermostate einfach durch die der Wetterstation überschreiben zu lassen. Das geht allerdings nicht, bzw. nicht direkt, da die Temperatur per se nicht durch den ioBroker einstellbar ist. Was allerdings geht, ist das "offset" einzustellen.
Hierzu habe ich ein Skript erstellt, welches die Temperatur von Tado von der Temperatur der Wetterstation abzieht und das Ergebnis als wert in den offset einträgt. Leider stehe ich hier vor einem Problem des Adapters (evtl. erstelle ich hierzu noch ein issue, je nachdem, was hier rauskommt): Der Adapter kennt nur die Raumtemperatur. Diese wird durch einen der beiden Thermostate erfasst (einstellbar ist von welchem). Das eingestellte offset wird allerdings direkt auf die Temperatur der einzelnen Thermostate angerechnet, so dass die Raumtemperatur, welche ich von der Temperatur der Wetterstation abziehe, schon beinhaltet. Ok, klingt durcheinander, vielleicht vereinfache ich es:
TW= Temperatur Wetterstation
TR= Temperatur Raum
tt= Temperatur Thermostat (kein Datenpunkt)
Z= offset
Y= Temperatur welche angezeigt werden sollTW=Y
Z=TW-TR
TR=tt+Z
Y=tt+Z
TR≠YSprich die Raumtemperatur (TR) muss ungleich der Temperatur sein die Angezeigt wird (Y), kann aber nur durch dieselben Werte (tt+Z) errechnet werden. Somit wechselt, logischerweise, die Temperatur (TR/Y) ständig.
Im Grunde brauche ich die Temperatur der Thermostate (tt) als einzelnes Objekt/Wert.
Hat jemand dazu eine andere Lösung oder sollte ich mal Fragen, ob die Temperatur der Thermostate mit eingebunden werden kann?
Gruß
Jan -
@schlumpf Haben deine Ventile einen "manuellen Modus" (Stellbetrieb)?
Ich hab hier die Eurotronic Spirit Ventile im Einsatz und betreibe sie im Stellbetrieb, ähnlich wie du es beschrieben hast. Bei denen nennen sich die Datenpunkte: "TRV Mode" und "Manual Valve position"
Um so größer die Differenz zwischen T-Soll und T-Ist, umso größer der Öffnungswinkel der Ventile.
-
Ich glaube sogar das es sowas gibt, allerdings ist der Wert des Öffnungswinkels nicht editierbar.
Leider würde mir das vorerst nicht weiterhelfen. Im Grunde möchte ich erst einmal nicht alles komplett durch Iobroker steuern, sondern es Tado überlassen (grade im Bezug auf die Aufheizphase, welche von Tado selbst ermittelt und immer wieder nachjustiert wird). Ich will erst einmal nur, dass die Temperatur des Raums bei Tado mit der von der Wetterstation übereinstimmt.
-
@schlumpf said in Temperatur angleichen Tado + Netatmo:
allerdings ist der Wert des Öffnungswinkels nicht editierbar
Wenn sich der Datenpunkt nicht beschreiben lässt, ist ein Stellbetrieb über einen externen Sensor nicht möglich. Außer recht begrenzt über den Temp-Offset.
Mit der, durch die NetAtmo API entstehende Zeit Verzögerung, ist eine vernünftige Regelung leider auch nicht möglich.
-
@schlumpf sagte: TR= Temperatur Raum
tt= Temperatur Thermostat (kein Datenpunkt)Woher kommt die Raumtemperatur, wenn nicht vom Thermostaten?
@schlumpf sagte in Temperatur angleichen Tado + Netatmo:
Hierzu habe ich ein Skript erstellt
?? Zeigen!
Versuche es mal mit diesem Blockly. Als Trigger muss die Netatmo-Temperatur verwendet werden.
-
Naja, im Grunde kommt sie schon von Thermostaten. Von dem, den man dafür ausgewählt hat. Allerdings steht der Datenpunkt unter dem Raum selbst. Wähle ich ein anderes Thermostat aus, welches für die Raumtemperatür zuständig ist, wird der Wert an der selben stelle geschrieben.
Die Thermostate selbst werden allerdings an einer anderen Stelle im Raumordner hinterlegt und haben keine eigene Temperaturangabe.
Problem ist, dass Tado die Thermostate nach der Raumtemperatur regelt, welche ich über den offset des entsprechenden Thermostates auch anpassen kann. Nur zur Berechnung des notwendigen offsets (um die selbe wie aus der Wetterstation zu bekommen) kann ich die Raumtemperatur nicht nutzen sondern bräuchte die der einzelnen Thermostate nochmal separat.
-
@schlumpf sagte: bräuchte die der einzelnen Thermostate nochmal separat.
Das sehe ich auch so. Dann ordne die beiden Thermostaten verschiedenen Räumen zu, z.B. Raum_links / Raum_rechts.
-
Könnte ich, bringt in dem Fall aber leider nichts.
-
Würde das bedeuten das ich das Wohnzimmer nicht mehr komplett steuern könnte (wäre schade, aber auch lösbar)
-
würde ich wieder vor dem selben Problem stehen: versuche ich die Temperatur bei Tado auf die von Netatmo zu setzen, dies durch "offset", ändert das auch gleich meine Temperatur des Raumes, diese wiederum ändert den Wert des "offset" und schon hab ich wieder eine Schleife.
Die Temperatur bzw. den Wert den ich benötige muss, wenn ich nicht falsch liege, der des Thermostaten ohne offset sein, sprich die real gemessene Temperatur. Eine andere Lösung fällt mir nicht ein.
Gruß
-
-
@schlumpf sagte: das Wohnzimmer nicht mehr komplett steuern
Ein Thermostat als "Master", dem der Sollwert des anderen folgt.
@schlumpf sagte in Temperatur angleichen Tado + Netatmo:
hab ich wieder eine Schleife.
Das sollte mit dem verlinkten Blockly nicht passieren, denn es verwendet erhöhe Offset um Differenz.
-
Master und Slave: So ist es an sich schon über die Räume geregelt. Ein Thermostat wird als Master definiert, alle anderen nehmen den Sollwert des Matsers an.
Blockly: Bin nicht sicher ob das so geht.
tt = Temperatur Termostat (kein Wert vorhanden)
offset(Z)=Tado offset von Thermostat (Master)
Wert(blau) = TR = Temperatur Raum
Wert(rot) = TW = Temperatur WetterstationBlockly:
"offset" => TW(23,6)
"differenz" = TW(23,6) - TR(19,3) = 4,3
"offset" + "differenz" = 23,6 + 4,3 = 27,9
"offset" => [(27,9*2)runden]/2 = 56/2 = 28
Wert(steuern) => "offset" => offset(Z) = 28
offset(Z) + tt(19,3) = TR => 28 + 19,3 = 47,3Reale Schleife:
TW(23,6) - TR(19,3) = offset(Z)4,3
tt(19,3) + offset(Z)4,3 = TR(23,6)
TW(23,6) - TR(23,6) = offset(Z)0
tt(19,3) + offset(Z)0 = TR(19,3)
TW(23,6) - TR(19,3) = offset(Z)4,3
tt(19,3) + offset(Z)4,3 = TR(23,6)
.....usw.....Problem:
Tado gibt nur den Wert TR an, also den Raumwert der durch den nicht vorhandenen Wert tt (Thermostatwert) plus den Wert offset (welchen man im ioBrocker ändern kann) gebildet wird. Das ist der einzige (Temperatur)Wert welcher vom Adapter kommt (abgesehen vom Sollwert).Dadurch entsteht die Schleife. Ohne einen weiteren Wert in ioBroker kann eine vernünftige Rechnung nicht aufgestellt werden. Außer ich habe etwas komplett übersehen oder sehe/kenne die richtige Logik nicht.
Ich hoffe man kann mir folgen.
Gruß
-
@schlumpf sagte: Blockly:
Falsch interpretiert:
Wert(offset) => offset(0)
"differenz" = TW(23,6) - TR(19,3) = 4,3
"offset" + "differenz" = 0 + 4,3 =4,3
"offset" => [(4,3*2)runden]/2 = 9/2 = 4,5
Wert(steuern) => "offset" => offset(Z) = 4,5
offset(Z) + tt(19,3) = TR => 4,5 + 19,3 = 23,8Nächster Trigger:
Wert(offset) => offset(4,5)
"differenz" = TW(23,6) - TR(23,8) = -0,2
Betrag ist < 0,25 -
Ah ok, ich verstehe. Der "Wert(offset)" ist ein selbst erstellter Wert?
Aber funktioniert das nicht nur dann, wenn die Temperatur auch steigt an der Wetterstation? Sobald die Temperaturen sinken bleibt der Heizkörper trotzdem aus. Klappt dann nur, wenn die Temperatur am Thermostat (bzw. die angezeigte Raumtemperatur) unter die der Wetterstation fällt. Was bei unseren angenommenen 4,5 grad ziehmlich viel ist!
-
@schlumpf sagte: Der "Wert(offset)" ist ein selbst erstellter Wert?
Nein, das ist der Wert Z vom Offset-Datenpunkt des Thermostaten.
TR = tt + Z
Datenpunktwert des Thermostaten. -
ein wenig Eigeninitiative und Selbstversuche wären schon nett, und um hier mal ein paar Sachen zu eliminieren: es gibt nur einen Wert, egal wie viele Heizkörper, und nein es sind nicht einfach alle Werte editierbar, sonst kommt Schei..e raus.
Aber um die Faulheit ein wenig zu unterstützen:
bei steigendem Wert (netatmo, ... was auch immer) den Raum auf einen -1/2°C vom Soll regeln (Rooms.%number%.setting.temperature.celsius)
bei fallendem Wert macht man dann wieder Rooms.%number%.overlayClearZonedein Blockly musst dir schon selbst basteln, hab z.B. via alexa-Ansage ein Nachlegen eingebaut.
Tado heizt auch normalerweise nicht, wenn es einen Temperaturanstieg feststellt, der nicht von einem Thermostat selbst verursacht/getriggert wurde. -
Ist nicht ein Forum zum Diskutieren da und um sich Anregungen und Hilfe zu holen? Bei aller Liebe habe ich leider nicht Informatik bzw. Java gelernt und mache das Ganze einfach nur, weil es mir spaß macht. Dabei brauche ich einfach Hilfe, weil ich neben dem 40 Stunden Job und einem Studium zum Techniker noch eine neue Wohnung einrichte und mir neues zu lernen im alter zunehmend schwerer fällt. Deshalb bin ich dankbar, dass es Leute wie Paul gibt die mir mit viel Geduld weiterhelfen.
Und danke für deine freundlichen Worte, ich versuche immer erstmal eigene Skripte zu bauen und über das Forum oder Google Lösungen zu finden. Erst wenn ich nicht mehr weiter weiß, frage ich hier nach. Und ich versuche durchaus die Sachen, die mir geschrieben werden, logisch nachzuvollziehen und meine Antworten sinnvoll aufzubauen.
Ja, die meisten Werte sind blockiert (nicht editierbar), was verständlich und sinnvoll ist! Ich hätte nur gerne den ein oder anderen Wert zusätzlich (wie ein nicht veränderbaren, auch nicht durch offset, Wert der gemessenen Temperatur der einzelnen Thermostate).
Naja, mir geht es vor allem darum, dass wenn das Wohnzimmer an der Stelle, wo man sich vor allem aufhält (und wo die Wetterstation steht) warm ist, aber die Thermostate (durch die Nähe zur Außenwand und der etwas ungünstigen Abschirmung) noch eine sehr viel geringere Temperatur wahrnehmen, trotzdem die Heizung ausgeht.
Mein Ansatz und auch meine Skripte war erst einmal die Angleichung beider Temperaturen (sprich die Übernahme der Wetterstations-Temperatur in Tado), da mir das am einfachsten erschien. Ich wollte vorerst vermeiden tagelang alles auf ioBroker umzuziehen. Hier kam mir die Schleife in die Quere, die ich allein nicht umgehen konnte (mit den zur Verfügung stehenden Werten).
Der Ansatz "Nachlegen" finde ich interessant! Eventuell übernehme ich deine Idee, wenn ich darf. Ich verspreche auch, erst selbst zu probieren, bevor ich etwas frage.
Gruß
Jan -
Ich muss mich entschuldigen, hab es aus der Hüfte während einem anstrengenden Arbeitstag geschrieben.
Jetzt jedoch zum Verständnis:
etliche Datenpunkte sind nicht editierbar.
Nehmen wir deine Tado-Thermostate her. Macht doch keinen Sinn diese zu belügen wie warm/kalt es ist. Wann und wer stellt es wieder richtig? So kann keine Regelung funktionieren. Somit kann man sie nur über Steuersignale, also einem anderen Sollwert beeinflussen bzw. zu dem Verhalten "zwingen" was man erreichen möchte.
Dies gilt mal global für alle Adapter.
Du musst hierbei deinen Blickwinkel und die Herangehensweise ändern, um das umzusetzen was du vorhast.
Ich hab dir oben schon die Datenpunkte genannt, die dich ans Ziel führen, und absichtlich kein Blocky reingestellt, denn selber Klicken macht klug^^.Wenn du was hast und vorzeigen kannst, bin ich gerne bei der Fehlersuche dabei.
-
@maximal1981 sagte: Macht doch keinen Sinn diese zu belügen wie warm/kalt es ist.
Ein Offset ist dafür da, falsche Messwerte zu korrigieren. Ist der Offset "read only"?
-
nein ist write, ich hab es gerade getestet, trotzdem ist es eine dirty Variante in meinen Augen.
Dies ist ja dazu gedacht eine Abweichung der Messung zu kompensieren.Würde es trotzdem via Sollwert machen, da diese dann bei korrekter Einstellung wieder zum Zeitplan übergehen wenn die aktuelle Timeline abgelaufen ist.
-
@maximal1981 sagte: Würde es trotzdem via Sollwert machen
Wenn der interne Zeitplan verwendet wird, ist es kompliziert, die Abweichung über den Sollwert zu kompensieren.
-
@schlumpf sagte: funktioniert das nicht nur dann, wenn die Temperatur auch steigt an der Wetterstation?
Nein, die Differenz kann auch negativ werden und so der Offset sinken.
@schlumpf sagte in Temperatur angleichen Tado + Netatmo:
Dadurch entsteht die Schleife.
Eine Schleife Offset hoch/runter entsteht natürlich, wenn man den Offset auf die Differenz setzt. Wenn man den Offset um die Differenz erhöht, passiert es nicht, vorausgesetzt, der neue Offset ist bereits im Temperatur-Datenpunkt enthalten, wenn erneut getriggert wird.