NEWS
Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus
-
Hallo an Alle!
wer neben der Rotex (geht auch mit anderen Wärmepumpen+FBH) eine Photovoltaik ohne Batteriespeicher betreibt kann folgendes vielleicht auch interessant sein.
Und zwar versuche ich das Haus an sich als Wärmespeicher zu nutzen.Da die Fussbodenheizung dermaßen träge ist, funktioniert das ausgesprochen gut.
Dabei gehe ich wie folgt vor:
Wenn die Photovoltaik mehr als 400W einspeist, setze ich die Raum Solltemperatur um 0,5°C hoch und warte 1 Minute. Das Ganze wiederholt sich bis entweder die Leistung unter 400W erreicht ist oder die maximale Raum Solltemp. von 30°C.
Geht die PV-Leistung herunter und man bezieht wieder vom Netzbetreiber Strom, geht auch die Solltemp. wieder in 0,5°C Schritten zurück bis auf den gespeicherten Anfangswert.
Somit ist abends richtig schön warm, und im besten Fall reicht die Wärme sogar bis zum nächsten Morgen.Sicherlich ist es für eine Heizung recht ineffizient, aber die kWh kostet im Moment um die €0,30 und für die Einspeisung bekomme ich nicht mal €0,11
Ein weiterer Vorteil ist, dass es nachts auch immer kälter ist als tagsüber und die Wärmepump dann auch ineffizienter arbeitet.
Optimierungsbedarf gibt es sicherlich noch in den Grenzen und Timing, aber generell bin ich schon ganz zufrieden.
Hier das Programm:
var Boost_Soll_T_Raum, timeout; // Programm was abhängig der Photovoltaikleistung ... // ... die T-Raum Soll-Temperatur erhöht on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("javascript.0.PV.Heizung-Boost").val && !timeout) { if ((obj.state ? obj.state.val : "") < -400) { if (Boost_Soll_T_Raum < 30) { Boost_Soll_T_Raum = (typeof Boost_Soll_T_Raum == 'number' ? Boost_Soll_T_Raum : 0) + 0.5; } } else if ((obj.state ? obj.state.val : "") > -10 && Boost_Soll_T_Raum > getState("javascript.0.PV.Raumtemp-Soll_alt").val) { Boost_Soll_T_Raum = (typeof Boost_Soll_T_Raum == 'number' ? Boost_Soll_T_Raum : 0) + -0.5; } if (Boost_Soll_T_Raum != getState("canbus.0.300.05").val) { setState("canbus.0.680.05-set"/*T-Raum Soll1 setzen*/, Boost_Soll_T_Raum); } timeout = setTimeout(async function () { timeout = null; }, 60000); } }); setState("javascript.0.PV.Heizung-Boost"/*Heizung-Boost*/, false); on({id: 'javascript.0.PV.Heizung-Boost', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "")) { Boost_Soll_T_Raum = getState("canbus.0.300.05").val; setState("javascript.0.PV.Raumtemp-Soll_alt"/*Raumtemp-Soll_alt*/, Boost_Soll_T_Raum, true); } else { setState("canbus.0.680.05-set"/*T-Raum Soll1 setzen*/, getState("javascript.0.PV.Raumtemp-Soll_alt").val); } });
Die Idee kam übrigens von mir, da ich aber kein Programmierer bin, hatte ich von der Cracks hier im Forum hervorragende Hilfe bekommen:
https://forum.iobroker.net/topic/48947/frage-wegen-warnings-in-blockly-prg/55?_=1644312368447
-
Nachdem ich alles jetzt von der FHEM-Lösung auf CAN Adfapter umgebaut habe, läuft alles seit etwa 2 Wochen.
Was mir auffällt:
In der FHEM Lösung gab es eine Möglichkeit, dass beim Abtauvorgang nur max. 0,5°C aus dem Speicher entnommen wird.
@cb187 Hattest du da nicht was gemacht?Gefühlt taktet die Rotex wieder viel mehr als über FHEM.
Weiß jemand wie man den Flüstermodus aktiviert und die Heizkurve verstellt?
In FHEM gab es den Info.Q Wert mit dem hatte man sehen können was die Rotex gerade an Wärme abgibt. Über welche Werte kann man das berechnen?
Danke für Infos!
-
@hg6806 sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
Weiß jemand wie man den Flüstermodus aktiviert und die Heizkurve verstellt?
In der aktuellen Konfiguration gibt es den Punkt
canbus.0.680.fac107
"Qiet abfragen". Vermute das ist die Abfrage für den Flüstermodus. Ich sehe jetzt aber keinen dazu passenden State, der den Wert entgegen nimmt. Ich würde vermuten das muss dann alscanbus.0.180.fac107
neu dazu.
Kannst du mal einencandump -tA -x can0
in einem Terminal mitlaufen lassen und dabei dann den Statecanbus.0.680.fac107
auftrue
setzen bzw. den Button im Admin anklicken? Eventuell bekomme ich aus den mitgeloggten Daten alles nötige raus.Für die Heizkurve gibt es die States
canbus.0.300.fa010e
"Heizkurve" undcanbus.0.300.fa0115
"Heizkurve Adaption", sowiecanbus.0.680.fa010e
"Heizkurve abfragen" undcanbus.0.680.fa0115
"Heizkurve Adaption abfragen". Ist das das was du suchst? -
@crycode sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
candump -tA -x can0
Danke für deine Bemühungen.
Hier die Ausgabe, ich hoffe der Tastendruck wurde angenommen:pi@raspberrypi:~ $ candump -tA -x can0 (2022-02-12 19:41:51.133384) can0 TX - E 680 [5] 31 00 FA C1 03 (2022-02-12 19:41:51.140490) can0 RX - - 180 [7] D2 00 FA C1 03 02 44 (2022-02-12 19:41:51.275222) can0 TX - E 680 [5] 31 00 FA C1 04 (2022-02-12 19:41:51.283639) can0 RX - - 180 [7] D2 00 FA C1 04 01 B8 (2022-02-12 19:41:51.391313) can0 TX - E 680 [5] 31 00 FA C1 05 (2022-02-12 19:41:51.411823) can0 RX - - 180 [7] D2 00 FA C1 05 00 19 (2022-02-12 19:41:51.539099) can0 TX - E 680 [5] 31 00 FA C1 06 (2022-02-12 19:41:51.545864) can0 RX - - 180 [7] D2 00 FA C1 06 01 AB (2022-02-12 19:41:51.708287) can0 TX - E 680 [5] 61 00 FA 01 0E (2022-02-12 19:41:51.716956) can0 RX - - 300 [7] D2 00 FA 01 0E 00 32 (2022-02-12 19:41:51.823545) can0 TX - E 680 [5] 61 00 FA 0A 0C (2022-02-12 19:41:51.834042) can0 RX - - 300 [7] D2 00 FA 0A 0C 00 1B (2022-02-12 19:41:51.931132) can0 TX - E 680 [5] A1 00 FA 06 D2 (2022-02-12 19:41:51.940370) can0 RX - - 500 [7] D2 00 FA 06 D2 00 01 (2022-02-12 19:41:52.077719) can0 TX - E 680 [5] A1 00 FA 06 D3 (2022-02-12 19:41:52.085533) can0 RX - - 500 [7] D2 00 FA 06 D3 00 01 (2022-02-12 19:41:52.297455) can0 TX - E 680 [5] A1 00 FA 06 D4 (2022-02-12 19:41:52.304919) can0 RX - - 500 [7] D2 00 FA 06 D4 FF B0 (2022-02-12 19:41:53.309122) can0 TX - E 680 [3] 61 00 05 (2022-02-12 19:41:53.319280) can0 RX - - 300 [7] D2 00 05 00 C8 00 00 (2022-02-12 19:41:53.454934) can0 TX - E 680 [3] 31 00 0E (2022-02-12 19:41:53.464848) can0 RX - - 180 [7] D2 00 0E 01 A9 00 00 (2022-02-12 19:41:54.039202) can0 TX - E 680 [3] 31 00 03 (2022-02-12 19:41:54.047316) can0 RX - - 180 [7] D2 00 03 01 E0 00 00 (2022-02-12 19:41:54.640759) can0 TX - E 680 [3] 31 00 13 (2022-02-12 19:41:54.648977) can0 RX - - 180 [7] D2 00 13 01 E0 00 00 (2022-02-12 19:41:58.347602) can0 TX - E 680 [3] 61 00 05 (2022-02-12 19:41:58.354673) can0 RX - - 300 [7] D2 00 05 00 C8 00 00 (2022-02-12 19:41:58.471836) can0 TX - E 680 [3] 31 00 0E (2022-02-12 19:41:58.480082) can0 RX - - 180 [7] D2 00 0E 01 A9 00 00 (2022-02-12 19:41:59.642424) can0 TX - E 680 [3] 31 00 13 (2022-02-12 19:41:59.653136) can0 RX - - 180 [7] D2 00 13 01 E0 00 00 (2022-02-12 19:41:59.964952) can0 TX - E 680 [5] 31 00 FA C1 07 (2022-02-12 19:41:59.973316) can0 RX - - 180 [7] D2 00 FA C1 07 00 00 (2022-02-12 19:42:01.632830) can0 TX - E 680 [5] 31 00 FA C1 07 (2022-02-12 19:42:01.642484) can0 RX - - 180 [7] D2 00 FA C1 07 00 00 (2022-02-12 19:42:03.300229) can0 TX - E 680 [3] 61 00 05 (2022-02-12 19:42:03.310223) can0 RX - - 300 [7] D2 00 05 00 C8 00 00 (2022-02-12 19:42:03.417235) can0 TX - E 680 [3] 31 00 0E (2022-02-12 19:42:03.427409) can0 RX - - 180 [7] D2 00 0E 01 A9 00 00 (2022-02-12 19:42:04.020233) can0 TX - E 680 [3] 31 00 03 (2022-02-12 19:42:04.026473) can0 RX - - 180 [7] D2 00 03 01 E0 00 00 (2022-02-12 19:42:04.650543) can0 TX - E 680 [3] 31 00 13 (2022-02-12 19:42:04.658759) can0 RX - - 180 [7] D2 00 13 01 E0 00 00 (2022-02-12 19:42:08.214761) can0 TX - E 680 [5] 31 00 FA C1 07 (2022-02-12 19:42:08.224174) can0 RX - - 180 [7] D2 00 FA C1 07 00 00 (2022-02-12 19:42:08.363052) can0 TX - E 680 [3] 61 00 05 (2022-02-12 19:42:08.369968) can0 RX - - 300 [7] D2 00 05 00 C8 00 00 (2022-02-12 19:42:08.467232) can0 TX - E 680 [3] 31 00 0E (2022-02-12 19:42:08.495558) can0 RX - - 180 [7] D2 00 0E 01 A9 00 00 (2022-02-12 19:42:09.643337) can0 TX - E 680 [3] 31 00 13 (2022-02-12 19:42:09.649958) can0 RX - - 180 [7] D2 00 13 01 E0 00 00 (2022-02-12 19:42:13.311219) can0 TX - E 680 [3] 61 00 05 (2022-02-12 19:42:13.318434) can0 RX - - 300 [7] D2 00 05 00 C8 00 00 (2022-02-12 19:42:13.528103) can0 TX - E 680 [3] 31 00 0E (2022-02-12 19:42:13.543720) can0 RX - - 180 [7] D2 00 0E 01 AA 00 00 (2022-02-12 19:42:14.030412) can0 TX - E 680 [3] 31 00 03 (2022-02-12 19:42:14.042831) can0 RX - - 180 [7] D2 00 03 01 E0 00 00 (2022-02-12 19:42:14.644335) can0 TX - E 680 [3] 31 00 13 (2022-02-12 19:42:14.651849) can0 RX - - 180 [7] D2 00 13 01 E0 00 00 (2022-02-12 19:42:18.307363) can0 TX - E 680 [3] 61 00 05 (2022-02-12 19:42:18.316689) can0 RX - - 300 [7] D2 00 05 00 C8 00 00 (2022-02-12 19:42:18.510912) can0 TX - E 680 [3] 31 00 0E (2022-02-12 19:42:18.521829) can0 RX - - 180 [7] D2 00 0E 01 AA 00 00 (2022-02-12 19:42:19.655879) can0 TX - E 680 [3] 31 00 13 (2022-02-12 19:42:19.662225) can0 RX - - 180 [7] D2 00 13 01 E0 00 00 (2022-02-12 19:42:23.318991) can0 TX - E 680 [3] 61 00 05 (2022-02-12 19:42:23.330925) can0 RX - - 300 [7] D2 00 05 00 C8 00 00 (2022-02-12 19:42:23.466675) can0 TX - E 680 [3] 31 00 0E (2022-02-12 19:42:23.473653) can0 RX - - 180 [7] D2 00 0E 01 AA 00 00 (2022-02-12 19:42:24.025446) can0 TX - E 680 [3] 31 00 03 (2022-02-12 19:42:24.035007) can0 RX - - 180 [7] D2 00 03 01 E0 00 00 (2022-02-12 19:42:24.645899) can0 TX - E 680 [3] 31 00 13 (2022-02-12 19:42:24.659211) can0 RX - - 180 [7] D2 00 13 01 E0 00 00 (2022-02-12 19:42:26.462301) can0 TX - E 680 [5] 31 00 FA C1 06 (2022-02-12 19:42:26.468830) can0 RX - - 180 [7] D2 00 FA C1 06 01 AD (2022-02-12 19:42:26.580200) can0 RX - - 180 [7] 20 0A 0C 00 09 00 00 (2022-02-12 19:42:28.309673) can0 TX - E 680 [3] 61 00 05 (2022-02-12 19:42:28.319679) can0 RX - - 300 [7] D2 00 05 00 C8 00 00 (2022-02-12 19:42:28.434908) can0 TX - E 680 [3] 31 00 0E (2022-02-12 19:42:28.442323) can0 RX - - 180 [7] D2 00 0E 01 AA 00 00 (2022-02-12 19:42:29.655167) can0 TX - E 680 [3] 31 00 13 (2022-02-12 19:42:29.666974) can0 RX - - 180 [7] D2 00 13 01 E0 00 00 (2022-02-12 19:42:31.443164) can0 RX - - 10A [7] 31 00 FA C0 B4 00 00 (2022-02-12 19:42:31.453486) can0 RX - - 180 [7] 22 0A FA C0 B4 00 22 (2022-02-12 19:42:33.308697) can0 TX - E 680 [3] 61 00 05 (2022-02-12 19:42:33.317016) can0 RX - - 300 [7] D2 00 05 00 C8 00 00 (2022-02-12 19:42:33.424887) can0 TX - E 680 [3] 31 00 0E (2022-02-12 19:42:33.433301) can0 RX - - 180 [7] D2 00 0E 01 AA 00 00 (2022-02-12 19:42:34.094146) can0 TX - E 680 [3] 31 00 03 (2022-02-12 19:42:34.125162) can0 RX - - 180 [7] D2 00 03 01 E0 00 00 (2022-02-12 19:42:34.655412) can0 TX - E 680 [3] 31 00 13 (2022-02-12 19:42:34.661802) can0 RX - - 180 [7] D2 00 13 01 E0 00 00 ^Cpi@raspberrypi:~ $
Wegen der Heizkurve, die CAN.0.300.xxx sind ja nur Anzeigen, dort wird die Heizkurve auch korrekt angezeigt. Adaption ist leer. Ich weiß auch nicht was damit gemeint ist.
Bei can.0.680.fa010e bzw. can.0.680.fa115 kann ich über einen Tastdruck zwar was abfragen aber die Heizkurve an sich nicht verstellen. Hier müsste man ja einen Wert eingeben können. -
@hg6806 Wenn ich das in deinem Dump richtig sehe, war der Flüstermodus bei dir in dem Fall aus?
Exportiere zur Sicherheit mal deine aktuelle Konfiguration und lade dann über "Import aus Datei" diese zusätzlich rein: canbus-messages-180-fac107.json
Das sollte den Parser und State (nach Adapter Neustart)canbus.0.180.fac107
hinzufügen, der dann je nach Statustrue
oderfalse
sein sollte.Zum Setzen der Heizkurve müsste das dann ein Parser
canbus.0.680.fa010e-set
werden. Schau ich mir morgen mal genauer an. Was für Werte können da gesetzt werden? Sind das bestimmte Zahlen, oder einfach irgendeine Zahl?Was mit der Adaption gemeint ist weiß ich leider auch nicht.
-
@crycode sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
canbus.0.180.fac107
Hatte ich hinzugefügt.
Das fragt mir aber nur den Status ab, setzt aber den Flüstermodus nicht.Das die Heizkurve angeht, die wird verstellt von 0 bis 1 in 0,1er Schritten ohne Einheit dahinter.
-
@hg6806 Hier wieder ein Teil der Konfiguration zum Importieren: canbus-messages-680-part.json
Das fügtcanbus.0.680.fac107-set
"Flüstermodus setzen" undcanbus.0.680.fa010e-set
"Heizkurve setzen" hinzu.Hab die zu sendenden Datenpakete jetzt von den anderen Nachrichten abgeleitet. Denke das sollte so funktionieren, kann es aber aufgrund fehlender Hardware nicht testen. Ein kurzes Feedback wäre gut
-
@hg6806 Sehe grad, es gibt auch
fa0696
mit der Bezeichnung "Flüsterbetrieb" ist das noch was anderes? -
Also, canbus.0.680.fa010e-set wurde hinzugefügt. Wenn ich aber hier einen Wert setze, bleibt canbus.0.300.fa010e unverändert.
canbus.0.180.fa0696 gibt es, ist wohl auch der richtige, wird aber auch nicht verändert wenn ich canbus.0.680.fac107-set auf true setze.
-
@hg6806 sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
Also, canbus.0.680.fa010e-set wurde hinzugefügt. Wenn ich aber hier einen Wert setze, bleibt canbus.0.300.fa010e unverändert.
Hast du danach den aktuellen Wert mittels
canbus.0.680.fa010e
abgefragt?canbus.0.180.fa0696 gibt es, ist wohl auch der richtige, wird aber auch nicht verändert wenn ich canbus.0.680.fac107-set auf true setze.
Dann versuch mal
canbus.0.680.fa0696-set
von dieser Konfiguration: canbus-messages-680-fa0696-set.jsonWenn das beides nichts hilft, bräuchte ich mal einen candump, wo du dann über die originale Steuerung diese zwei Sachen änderst.
-
@crycode sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
Hast du danach den aktuellen Wert mittels canbus.0.680.fa010e abgefragt?
Ja, canbus.0.300.fa010e bleibt aber unverändert, außerdem steht das sowieso auf 5sek Abfrage.
canbus.0.680.fa0696-set ist auch hinzugefügt worden, jedoch bleibt auch canbus.0.180.fa0696 unverändert wenn ich ....set auf true setze
Mache ich vielleicht noch was falsch?
-
@hg6806 sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
Mache ich vielleicht noch was falsch?
Vermute dann sind die gesendeten Datenpakete noch nicht richtig. Also liegt der Fehler nicht bei dir, sondern in den Konfigurationsteilen von mir.
Wie oben geschrieben, habe ich das nur aus den vorhandenen Datenpaketen abgeleitet, ohne genau zu wissen, was gesendet werden muss.Ein neuer Versuch für
fa0696-set
mit angepasster Empfänger-ID: canbus-messages-680-fa0696-set.json
Beim Import bitte den Haken bei "Vorhandene Nachrichten beim Import überschreiben" setzen, damit der vorhandene aktualisiert wird.
Falls du dir zutraust selbst die Parser zum Testen zu ändern... (falls nicht kann ich dir auch wieder Konfigurationen zum Import machen)
Das "Eigene Skript zum Schreiben" fürfa0696-set
sieht damit jetzt so aus:buffer = Buffer.from([0x60, 0x00, 0xFA, 0x06, 0x96, 0x00, 0x00]); buffer[5] = value ? 0x01 : 0x00;
Anstatt
0x60, 0x00
(Bedienmodul) könntest du noch0x30, 0x00
(Hauptmodul) und0xA0, 0x00
(???) testen. In der ersten Version hatte ich0x20, 0x0A
(RoCon) drin. -
Ja da hab ich mir nen Script erstellt was Super funktioniert.
Ich hab auch nen Script erstellt wenn WW bereitet wird das UWp min auf 40 und MAX auf 100 gestellt wird so das er die komplette Bandbreite ausschöpfen kann.Danach wird alles auf den alten Wert zurück gestellt. -
Ich kann gerne meine Scripte Sammlung für die Rotex posten.
-
@cb187 sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
Ich kann gerne meine Scripte Sammlung für die Rotex posten.
Dann mal los
-
@crycode defrost.txt ForceDHW.txt JAZ Berechnung.txt Rotex Meldung telegram.txtBetriebsart aktiv.txt
So sehn meine Datenpunkte aus.
-
@crycode sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
buffer = Buffer.from([0x60, 0x00, 0xFA, 0x06, 0x96, 0x00, 0x00]); buffer[5] = value ? 0x01 : 0x00;
Die 2. Version hatte auch nicht geklappt.
Ich kann das schon ändern, bei mir steht aber nur eine Zeile drin:buffer = Buffer.from([0x31, 0x00, 0xFA, 0x06, 0x96]);
Soll ich da wirklich beide Zeilen reinkopieren?
@cb187
Klasse, tausend Dank! Probiere es später mal aus!
Edit: Wie füge ich das denn ein? -
@hg6806 in Blockly Script kannst du doch importieren.
-
@hg6806 sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
Ich kann das schon ändern, bei mir steht aber nur eine Zeile drin:
buffer = Buffer.from([0x31, 0x00, 0xFA, 0x06, 0x96]);
Soll ich da wirklich beide Zeilen reinkopieren?
Nein, dann bist du beim falschen Parser. Das ist der
fa0696
, du musst aber zumfa0696-set
. -
@cb187
Hatte ich probiert, geht aber nicht