Rotex HPSU Compact: Unterschied zwischen den Versionen
(Erweiterung: HPSU compact Ultra / DAIKIN Altherma 3 R ECH2O) |
Keine Bearbeitungszusammenfassung |
||
Zeile 10: | Zeile 10: | ||
Modul zur Anbindung einer '''ROTEX HPSU compact / DAIKIN Altherma R ECH<sub>2</sub>O''' oder '''ROTEX HPSU compact Ultra / DAIKIN Altherma 3 R ECH<sub>2</sub>O''' Wärmepumpe über CAN Bus mit einem einfach und günstig beschaffbaren ELM327. | Modul zur Anbindung einer '''ROTEX HPSU compact / DAIKIN Altherma R ECH<sub>2</sub>O''' oder '''ROTEX HPSU compact Ultra / DAIKIN Altherma 3 R ECH<sub>2</sub>O''' Wärmepumpe über CAN Bus mit einem einfach und günstig beschaffbaren ELM327. | ||
{| class="wikitable centered" style="margin: 1em auto;" cellpadding="10" | {| class="wikitable centered" style="margin: 1em auto;" cellpadding="10" | ||
| align="center" | [[Image:Clock - Under Construction.svg|40px]] | | align="center" | [[Image:Clock - Under Construction.svg|40px]] | ||
Zeile 30: | Zeile 29: | ||
Einen solchen "Billigadapter" erkennt man an einem schwarz vergossenen Punkt auf der Platine. | Einen solchen "Billigadapter" erkennt man an einem schwarz vergossenen Punkt auf der Platine. | ||
Um einen funktionsfähigen Adapter zu finden, hat es sich bewährt, dass man nach "elm327 forscan" in den bekannten Onlineshops sucht. Ein weiteres Erkennungsmerkmal ist der Kippschalter zur "HS" und "MS" CAN Umschaltung. | Um einen funktionsfähigen Adapter zu finden, hat es sich bewährt, dass man nach "elm327 forscan" in den bekannten Onlineshops sucht. Ein weiteres Erkennungsmerkmal ist der Kippschalter zur "HS" und "MS" CAN Umschaltung sowie der eingesetzte PIC Mikrocontroller. Auch wenn es die ELM V1.5 offiziell nicht gibt, sie funktioniert mit dem Modul und nachfolgenden Adaptern trotzdem. | ||
<gallery> | <gallery> | ||
Zeile 36: | Zeile 35: | ||
70_HPSU_ELM_327_unten.jpg|Funktionsfähiger ELM327 unten | 70_HPSU_ELM_327_unten.jpg|Funktionsfähiger ELM327 unten | ||
70_HPSU_ELM_327_oben.jpg|Funktionsfähiger ELM327 oben | 70_HPSU_ELM_327_oben.jpg|Funktionsfähiger ELM327 oben | ||
Mein_ELM_327.jpg|Alternativ funktionsfähiger ELM327 oben | |||
</gallery> | </gallery> | ||
==== ELM327 OBD2 Adapter Buchsen ==== | ==== ELM327 OBD2 Adapter Buchsen ==== | ||
Um den Adapter mit der Anlage verbinden zu können, benötigt man zwei Buchsen. Die müssen für CAN-H an Pin 6 und für CAN-L an Pin 14 angeschlossen werden. Auf dem Bild "Buchse Schritt 3" ist Pin 6 die gelbe und Pin 14 rote angesteckte Ader. An die kann | Um den Adapter mit der Anlage verbinden zu können, benötigt man zwei Buchsen. Die müssen für CAN-H an Pin 6 und für CAN-L an Pin 14 angeschlossen werden. Auf dem Bild "Buchse Schritt 3" ist Pin 6 die gelbe und Pin 14 rote angesteckte Ader. An die kann wiederrum eine Leitung angeschlossen werden, welche an die Rocon geht. Wenn man keinen solchen Stecker hat, kann man einen solchen auch fertig bestellen. | ||
<gallery> | <gallery> | ||
Zeile 51: | Zeile 51: | ||
==== Leitung zwischen ELM327 Adapter und RoCon ==== | ==== Leitung zwischen ELM327 Adapter und RoCon ==== | ||
Es kann eine 2 oder 4 adrige KNX, Telefon, Ethernet (Verlege- oder Patchkabel / CAT egal), ... Leitung verwendet werden. Das grundsätzlich Wichtige dabei ist, dass das benötigte Adernpaar verdrillt ist. | Es kann eine 2 oder 4 adrige KNX, Telefon, Ethernet (Verlege- oder Patchkabel / CAT egal), ... Leitung verwendet werden. Das grundsätzlich Wichtige dabei ist, dass das benötigte Adernpaar verdrillt ist. Wenn der Server weiter von der RoCon enfernt ist, niemals das USB Kabel verlängern! Immer nur die CAN Leitung, da dieses Signal unempfindlich ist. | ||
==== Anschluss an die RoCon BM1 ==== | ==== Anschluss an die RoCon BM1 ==== | ||
Zeile 100: | Zeile 100: | ||
===== Syntax ===== | ===== Syntax ===== | ||
:<code>define <name> HPSU <device></code> | :<code>define <name> HPSU <device> [comfort|ultra]</code> | ||
Das Argument [comfort|ultra] gibt an, um welche Anlagenart es sich handelt. Wird eine Daikin angebunden, muss für die "Altherma R" "comfort" und für die "Altherma 3R" "ultra" definiert werden. | |||
===== Beispiel ===== | ===== Beispiel ===== | ||
Zeile 109: | Zeile 111: | ||
:<code>define myHPSU HPSU /dev/serial/by-path/pci-0000:00:13.0-usb-0:2:1.0-port0</code> | :<code>define myHPSU HPSU /dev/serial/by-path/pci-0000:00:13.0-usb-0:2:1.0-port0</code> | ||
Wenn man eine Ultra bzw eine 3R hat, sollte das mit einem weiteren Argument bekannt gemacht werden. Die Definition sieht dann so aus: | |||
:<code>define myHPSU HPSU /dev/ttyUSB0 ultra</code> | |||
oder | |||
:<code>define myHPSU HPSU /dev/serial/by-path/pci-0000:00:13.0-usb-0:2:1.0-port0 ultra</code> | |||
Optional: <code>attr myHPSU room Heizung</code> | Optional: <code>attr myHPSU room Heizung</code> | ||
Zeile 267: | Zeile 275: | ||
Die etwas "schonendere", vorallem die Pi Benutzer, welche auf die SD Karte loggen, ist wie folgt zu definieren: | Die etwas "schonendere", vorallem die Pi Benutzer, welche auf die SD Karte loggen, ist wie folgt zu definieren: | ||
:<code>define myHPSU_Log FileLog ./log/myHPSU_Log-%Y-%m.log myHPSU:HPSU.Aktive_Betriebsart | :<code>define myHPSU_Log FileLog ./log/myHPSU_Log-%Y-%m.log myHPSU:HPSU.(Aktive_Betriebsart|Betriebsart|Heizung_Ruecklauf|Pos_Vent_3UVB1|Soll_T_direkter_Heizkreis|T_Aussen|T_Aussen_WP|T_Warmwasser|T_direkter_Heizkreis|Vorlauftemperatur_Waermeerzeuger):.*|myHPSU:Info.(LastDefrostDHWShrink|Ts):.*</code><br> | ||
:Optional: <code>attr myHPSU_Log room Heizung</code> | :Optional: <code>attr myHPSU_Log room Heizung</code> | ||
Zeile 315: | Zeile 323: | ||
:Optional: <code>attr SVG_myHPSU_Log_1 room Heizung</code> | :Optional: <code>attr SVG_myHPSU_Log_1 room Heizung</code> | ||
== Erweiterungen == | |||
=== COP berechnen === | |||
Wenn man ein separates Energiemessgerät wie z.B. [https://github.com/ahermann86/fhemModbusSDM72DM SDM72DM] für die Wärmepumpe im Einsatz hat, kann man den COP berechnen. | |||
Das realisiert man am einfachsten mit einem userReading wie in nachfolgendem Beispiel: | |||
: <code>attr myHPSU userReadings uR.COP {my $val = ReadingsNum("SDM72DM_Z1", "Power_Sum__W", 0)/1000.; if($val > 0){return ReadingsNum($name, "Info.Q", 0)/$val}else{return 0};}</code> | |||
Relativ schnell wird man aber feststellen, das der COP sehr unruhig ist. Um den zu mitteln, nimmt man am einfachsten ein DOIF. | |||
Beispiel mit Mittelung über 5 Werte: | |||
: <code>define diHPSU_Control DOIF ##</code> | |||
: <code>attr diHPSU_Control event_Readings COP_smooth:[myHPSU:uR.COP:avg5]</code> | |||
Um das dann mitzuloggen, muss <code>|diHPSU_Control:COP_smooth:.*</code> noch hinter "myHPSU_Log" Definition. | |||
=== Heizstab mit mehreren Stufen === | |||
Wenn der Heizstab extern mehrstufig (< 3kW) gesteuert werden soll, kann man das mit einer "kleinen" Relaisschaltung realisieren. | |||
''In meinem Fall steuert FHEM, in Abhängigkeit des PV Überschuss wenn das WW auf 48°C ist, die Relais über einen KNX Aktor an.'' | |||
<gallery> | |||
Heizstab_Schaltplan.png|Schaltplan | |||
Heizstab_Relais.jpg|Gesamtansicht | |||
Heizstab_Relais_offen.jpg|Detailansicht | |||
</gallery> | |||
== Kompatibilität == | == Kompatibilität == | ||
Zeile 369: | Zeile 399: | ||
|n.v. | |n.v. | ||
|Max testet gerade (02.02.21) eine die Entwicklerversion 1.12. Die volle "Unterstützung" wird dann ab Version 1.13 verfügbar sein! | |Max testet gerade (02.02.21) eine die Entwicklerversion 1.12. Die volle "Unterstützung" wird dann ab Version 1.13 verfügbar sein! | ||
|- | |||
|Maxman83 | |||
Rotex HPSU Compact | |||
|508 | |||
|8kW | |||
|2017 | |||
|n.v. | |||
| | |||
|- | |||
|} | |} | ||
Version vom 14. März 2021, 00:53 Uhr
Rotex HPSU Compact | |
---|---|
Zweck / Funktion | |
Auslesen und Steuern einer Rotex HPSU mit Rocon BM1 | |
Allgemein | |
Typ | Inoffiziell |
Details | |
Dokumentation | siehe Forum |
Support (Forum) | Heizungssteuerung/Raumklima |
Modulname | 70_HPSU.pm |
Ersteller | Axel |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Modul zur Anbindung einer ROTEX HPSU compact / DAIKIN Altherma R ECH2O oder ROTEX HPSU compact Ultra / DAIKIN Altherma 3 R ECH2O Wärmepumpe über CAN Bus mit einem einfach und günstig beschaffbaren ELM327.
An dieser Seite wird momentan noch gearbeitet. |
Allgemein
- Auslesen und Setzen aller über die Rocon B1 bzw RoCon+ zur Verfügung stehenden Parameter
- Keine Zugriffsrechte nötig (Benutzer, Fachmann)
- Anbindung mittels einem ELM327 Adapter an die CAN Schnittstelle der RoCon BM1 bzw. BM2C an J13
Voraussetzungen
Hardware
ELM327 OBD2 Adapter
Um die Regeleinheit RoCon "BM1" der HPSU an den FHEM Server anzubinden, wird ein ELM327 (OBD2 Fahrzeug Diagnose Adapter) eingesetzt. Dieser wurde gewählt, da man hier an keine spezielle Hardware gebunden ist. Es reicht eine USB Schnittstelle aus.
Bei der Auswahl des ELM327 ist es wichtig, dass dieser das Protokoll "USER2 CAN (11bit ID, 50 kbaud)" implementiert hat. Wenn das Protokoll fehlt, merkt man das bei der erfolgreichen Initialisierung noch nicht. Man merkt es erst dann, wenn alles richtig angeschlossen ist und einfach keine Antworten kommen.
Einen solchen "Billigadapter" erkennt man an einem schwarz vergossenen Punkt auf der Platine.
Um einen funktionsfähigen Adapter zu finden, hat es sich bewährt, dass man nach "elm327 forscan" in den bekannten Onlineshops sucht. Ein weiteres Erkennungsmerkmal ist der Kippschalter zur "HS" und "MS" CAN Umschaltung sowie der eingesetzte PIC Mikrocontroller. Auch wenn es die ELM V1.5 offiziell nicht gibt, sie funktioniert mit dem Modul und nachfolgenden Adaptern trotzdem.
ELM327 OBD2 Adapter Buchsen
Um den Adapter mit der Anlage verbinden zu können, benötigt man zwei Buchsen. Die müssen für CAN-H an Pin 6 und für CAN-L an Pin 14 angeschlossen werden. Auf dem Bild "Buchse Schritt 3" ist Pin 6 die gelbe und Pin 14 rote angesteckte Ader. An die kann wiederrum eine Leitung angeschlossen werden, welche an die Rocon geht. Wenn man keinen solchen Stecker hat, kann man einen solchen auch fertig bestellen.
Leitung zwischen ELM327 Adapter und RoCon
Es kann eine 2 oder 4 adrige KNX, Telefon, Ethernet (Verlege- oder Patchkabel / CAT egal), ... Leitung verwendet werden. Das grundsätzlich Wichtige dabei ist, dass das benötigte Adernpaar verdrillt ist. Wenn der Server weiter von der RoCon enfernt ist, niemals das USB Kabel verlängern! Immer nur die CAN Leitung, da dieses Signal unempfindlich ist.
Anschluss an die RoCon BM1
Wichtig beim Arbeiten an der RoCon: ALLE Sicherungen ausschalten! Es genügt dabei nicht, die Sicherung von der Steuerung auszuschalten. Es muss auch die vom BackupHeater und der Außeneinheit ausgeschaltet werden!!
An den CAN Bus der RoCon BM1 Platine kommt man über den Stecker J13. Der CAN-H muss an den ELM327 Adapter mit Pin 6 und CAN-L mit Pin 14 verbunden werden. Die Schalterstellung ist zunächst nicht wichtig.
Software
Dateien
Quelle
Da dieses Modul "inoffiziell" ist, muss man die benötigten Dateien "70_HPSU.pm" und "commands_hpsu.json" händisch in den FHEM Ordner hinein kopieren. Die aktuellen Dateien sowie der ausführliche Changelog sind über Github verfügbar:
Installation/Update (Linux)
- Terminal öffnen
- Git-Repository herunterladen:
git clone https://github.com/ahermann86/fhemHPSU
- "70_HPSU.pm" in den FHEM Ordner kopieren
sudo cp fhemHPSU/70_HPSU.pm /opt/fhem/FHEM/
- "commands_hpsu.json" in den FHEM Ornder kopieren
sudo cp fhemHPSU/commands_hpsu.json /opt/fhem/FHEM/
- Aufräumen:
sudo rm -r fhemHPSU
- FHEM Weboberfläche im Browser öffnen
- Über die FHEM Befehlszeile das Modul mit
reload 70_HPSU
laden. - Nach einem Update: Mit "Connect" eine Initialisierung ausführen und ggf. den Browser aktualisieren.
Wenn man bereits als "admin" über das Terminal eingeloggt ist, wird "sudo" vor den cp/rm-Befehlen nicht benötigt.
Rechte anpassen (Linux/Teminal)
Da das Modul mit einer Hardwareschnittstelle "redet", benötigt der FHEM Benutzer noch die nötigen Rechte dafür. Das wird über das Terminal mit folgenden Befehlen durchgeführt:
sudo usermod -a -G dialout pi
sudo usermod -a -G dialout fhem
Definition
Pfad der Schnittstelle herausfinden
Vor der Definition des Moduls, muss der Pfad der Schnittstelle herausgefunden werden. Das geht am einfachsten, indem man den ELM327 zunächst nicht in die USB Buchse eingesteckt hat. Nun führt man den Befehl
ls -l /dev/serial/by-path
aus. Dann steckt man den ELM327 ein und führt den Befehl nochmal aus. Nach dem zweiten Ausführen ist eine Zeile hinzu gekommen, welcher der benötigte Pfad ist.
Syntax
define <name> HPSU <device> [comfort|ultra]
Das Argument [comfort|ultra] gibt an, um welche Anlagenart es sich handelt. Wird eine Daikin angebunden, muss für die "Altherma R" "comfort" und für die "Altherma 3R" "ultra" definiert werden.
Beispiel
define myHPSU HPSU /dev/ttyUSB0
oder: (wie es meiner Meinung nach besser ist)
define myHPSU HPSU /dev/serial/by-path/pci-0000:00:13.0-usb-0:2:1.0-port0
Wenn man eine Ultra bzw eine 3R hat, sollte das mit einem weiteren Argument bekannt gemacht werden. Die Definition sieht dann so aus:
define myHPSU HPSU /dev/ttyUSB0 ultra
oder
define myHPSU HPSU /dev/serial/by-path/pci-0000:00:13.0-usb-0:2:1.0-port0 ultra
Optional: attr myHPSU room Heizung
Anwendung
Attribute
Parameter in () sind default.
- AutoPoll (on),off
- Parameter, bei denen in der "commands_hpsu.json" über "FHEMPollTime" eine Pollzeit angegeben ist, zyklisch abfragen und die resultierenden Readings aktualisieren bzw. generieren.
- AntiMixerSwing on|(off)
- Workaround für "Schwingen des Mixers 3UVB1 unterdrücken". Manchmal schwingt der Mixer im ungünstigsten Fall stundenlang hin und her. Das scheint ein FW Bug der RoCon zu sein und passiert nach Abschalten der Außeneinheit wenn die Zieltemperatur im Heizmodus erreicht wurde.
- Das Modul greift mit AntiMixerSwing dann ein, wenn das Reading "HPSU.Direkter_Heizkreis_Modus" von active auf inactive wechselt und das ganze 2,5 Minuten so ansteht. Außerdem muss die Soll_Vorlauftemperatur_Waermeerzeuger > 0 sein. Sind diese Bedinungen erfüllt, schaltet das Modul die RoCon in vom "Heizen" in "Bereitschaft" und dann wieder in "Heizen".
- CheckDHWInterrupted on|(off)
- Wenn vor 11:00 Uhr Warmwasser erzeugt wird und das über die Zeit andauert, wird das um die Uhrzeit unterbrochen. Der Kompressor geht dann aus und die Anlage bleibt weiterhin in "Warmwasserbereitung". Das ist der 3-Wege-Umschaltventil Referenzfahrt geschuldet und so ähnlich auch in der Bedienungsanleitung beschrieben. Das Problem dabei ist, dass nach der Zeit "Wartezeit BOH" der Backup Heater eingeschaltet wird obwohl der Kompressor das machen könnte... Dieser Workaround beendet nach der Referenzfahrt dann kurz die "Warmwasserbereitung" und startet sie dann nochmal. Nun startet der Kompressor wieder "ganz normal".
- AntiContinousHeating on|(off)
- Dieser Workaround bewirkt, dass während dem Abtauen nicht das Brauchwasser zum "weiterheizen" verwendet wird. Das hat den positiven Effekt, dass beim Abtauen die WW Temperatur nicht um 3-4K sondern nur noch um 1-2K sinkt.
- Um das zu erreichen, schaltet das Modul die Regelung während dem Modus "Heizen" beim Abtauen in den Modus "Sommer". Gleichzeitig wird "T-Frostschutz" temporär ausgeschaltet, falls dieser aktiviert ist. So wird wärend dieser Zeit das 3-Wege-Umschaltventil "3UVB1" auf 100% gestellt und der Heizkreis somit komplett geschlossen. Nach dem Abtauvorgang geht die Anlage wieder in den Heizbetrieb und "T-Frostschutz" wird auf den voherig eingestellten Wert gesetzt.
- RememberSetValues on|(off)
- Wenn FHEM neu gestartet wird oder ein "Connect" ausgeführt wird, wird die zuletzt über "set" im Modul vorgegebene Betriebsart an der RoCon aktiviert.
- Das Modus merkt sie die Vorgabe über das Reading "FHEMSET.Betriebsart".
- Beispiel:
- Die RoCon ist im Modus "Heizen" weil sie über das FHEM Modul mit
"set myHPSU Betriebsart Heizen"
auf diesen Modus gesetzt wurde. Nun "stürzt" FHEM während dem Abtauen und aktiviertem "AntiContinousHeating" ab. In diesem Moment ist und bleibt die RoCon im Modus Sommer. Wenn nun FHEM neu gestartet oder die Verbindung wiederhergestellt wird, setzt das Modul die RoCon wieder auf den Modus Heizen.
- SuppressRetryWarnings (on)|off
- Immer wieder treten bei der Kommunikation Timeouts auf, welche normal sind und nicht weiter stören. Wer die Readings "Comm.xxx" auswertet oder das DebugLog an hat, bekommt immer wieder Einträge. Mit diesem Attribut werden die "retries" unterdrükt und "entlasten" das Auswerten bzw. die Logausgabe.
- DebugLog on|onWithMsg|onDHW|(off)
- Nur zur Modulentwicklung nötig und daher normalerweise immer off bzw. erst gar nicht als Attribut definiert. Das sollte nur dann aktiviert werden, wenn der Entwickler das benötigt. Wenn das aktiv ist, wird die Datei "70_HPSU_Log.log" im FHEM Ordner erstellt. Achtung: diese wächst theoretisch unendlich groß und sollte dann im Auge behalten werden!
Set
set <name> <parameter>
- Connect
- Adapter (neu) verbinden / Reset durchführen
- Connect_MonitorMode
- Adapter mit Monitor (Schnüffelmodus) verbinden.
- Das ist ein Modus zur Weiterentwicklung des Moduls und wird im Normalbetrieb nicht gebraucht. Die Nutzung ist dann nötig, wenn z.B. eine neue Steuerungsart hinzu kommt, die die aktuelle "commands_hpsu.json" noch nicht unterstützt.
- Ist das Modul mit diesem Modus aktiviert, werden Messages, welche in der "commands_hpsu.json" gefunden werden, regulär decodiert. Kommen unbekannte Messages hinzu, werden Readings mit folgendem Aufbau generiert:
- Reading: Name: [AA]_[AA]__[S] Wert: [RequestByte1 (uint)] - [RequestByte2 (uint)] - [Request (float)] - [RequestByte1 (bits)] - [RequestByte2 (bits)]
- AA = Adressbytes
- S = Status -> 0=Schreiben 1=Lesen 2=Antwort
- Beispiel: empfangene RAW Message: 20 0A FA 06 D9 00 01 wird zu Reading mit dem Namen: 06_D9__0_MsgHeader.180 und dem Wert: 0 - 1 - 1 - RAW: 20 0A FA 06 D9 00 01
- Disconnect
- Adapter trennen
- ForceDHW
- Warmwasser vorzeitig nachladen. Das macht im Prinzip das gleiche wie der "1x Hahn", also Position 6 des oberen Wahlschalters an der RoCon. Der Unterschied liegt darin, dass dieses Modul die Solltemperatur hochsetzt, wartet bis die Warmwasserbereitung gestartet ist und dann die Solltemperatur wieder auf den vorher eingestellten Wert setzt. Das hat den Vorteil, dass die Anlage das wie eine "normale" Warmwasserbereitung durchführt. Würde man das mit dem "1x Hahn" über die RoCon machen, passiert es, dass die Warmwasserbereitung nicht der Kompressor sondern der Backupheater durchführt!
- <HPSU.><Parameter> <Wert>
- Einen Wert der RoCon einstellen.
- Die Liste der verfügbar und einstellbaren Werte mit den zugehörigen Grenzen, sind in der "commands_hpsu.json" definiert. Es gibt mehrere Möglichkeiten, wie man einen RoCon Wert setzt. Zum Einen über die Weboberfläche mit jeweils einem Slider oder Dropdown Menü. Zum Anderen über die FHEM Befehlszeile. Hierbei ist es offen, ob man die ID oder den NAMEN eines Parameters übergibt. Fängt ein "set" mir "irgendwas." an, wird "irgendwas." ignoriert.
- Nachfolgend ein paar Beispiele mit dem Setzen des Betriebsart Parameters (ID: mode_01 Namen: Betriebsart):
"set myHPSU HPSUVal.Betriebsart_[mode_01] Heizen"
"set myHPSU HPSU.Betriebsart_[mode_01] Heizen"
"set myHPSU HPSUVal.Betriebsart Heizen"
"set myHPSU HPSU.Betriebsart Heizen"
"set myHPSU Betriebsart Heizen"
"set myHPSU mode_01 Heizen"
Get
get <name> <parameter>
- UpdateJson
- Die JSON Datei "commands_hpsu.json" neu lesen und parsen. Ggf. muss der Browser danach aktualisiert werden, damit die "HPSU Dropdowns" aktualisiert werden.
- <HPSU.><Parameter> <Wert>
- Einen Wert der RoCon abfragen und als Reading generieren. Hiermit können auch Werte gelesen werden, welche verfügbar sind und nicht automatisch nach einem in der JSON vorgegebenen Zeitraster gelesen werden. Das Bedienen dieser Funktion verhält sich genauso wie mit der "set" Funktion.
Readings
Alle gepollte, manuell angefragten und zu schreibende Wert werden automatisch als Reading angelegt. Ein wichtiger Hinweis dabei ist, dass die Werte nicht nur bei Änderung, sondern nach jedem erfolgreichen Abfragen getriggert werden. So kann man nach der Definition des Moduls selbst entscheiden, wie sich die einzelnen Readings verhalten sollen. Ein Beispiel ist in dem Kapitel "Logfile" beschrieben.
Tip: Fall man Mal "aufräumen" möchte, gibt man in die FHEM Befehlszeile "deletreading myHPSU .*" ein. Damit werden alle Readings gelöscht.
Alles was mit der Kommunikation zu tun hat, fängt mit Comm.
an.
Die Werte die von und zu der HPSU gehen haben den Präfix: HPSU.<Parametername>
Die Werte mit Präfix Info.
sind vom Modul selbst erfasste oder errechnete Werte:
- Info.HeatCyclicErr: Dient dazu, dass man takten der Anlage erkennen kann. Dieser wird jedes Mal um eines erhöht, wenn die Kompressorlaufzeit kleiner als 8 Minuten ist. Ist die Laufzeit größer als 20 Minuten, wird der Wert wieder genullt.
- Info.LastDefrostDHWShrink: Warmwasserverlust des letzten Abtauvorgangs.
- Info.Q: Aktuell abgegebene Energie (Q=m x c x delta t)
- Info.x: Nach dem Laden des Moduls sind die Readings nicht verfügbar. Sie werden erst generiert, wenn ein solcher Fall eintritt. (Beispiel: LastDefrostDHWShrink fehlt solange, bis einmal abgetaut wurde...)
Beispiele für Werte der RoCon:
23:42:07 Comm.GetStatus Ok
17:00:07 Comm.ManStatus Ok: Force DHW (820)
22:37:53 Comm.SetStatus Ok: Min_Leistung_Pumpe [min_perf_pump] already set to 45 (998)
23:43:02 HPSU.Aktive_Betriebsart Heizen
23:42:16 HPSU.Betriebsart Heizen
23:42:41 HPSU.Direkter_Heizkreis_Modus active
23:42:54 HPSU.Durchfluss 900 lh
23:40:36 HPSU.Funktion_EHS 1
23:28:45 HPSU.Heizgrenze_Tag 17 °C
23:38:21 HPSU.Heizkurve 0.3
23:42:57 HPSU.Heizung_Ruecklauf 24 °C
23:42:57 HPSU.Kaeltemitteltemperatur 27 °C
22:37:52 HPSU.Max_Leistung_Pumpe 70 %
23:38:21 HPSU.Max_T_Vorlauf 45 °C
23:36:11 HPSU.Max_WW_Ladezeit 240 min
23:36:10 HPSU.Min_T_Vorlauf 25 °C
23:42:58 HPSU.Pos_Vent_3UVB1 15 %
23:42:55 HPSU.Pos_Vent_3UV_DHW 0 %
23:42:58 HPSU.Ruecklauftemperatur 23 °C
23:42:26 HPSU.Soll_T_Raum_1 22 °C
23:42:25 HPSU.Soll_T_Warmwasser 48 °C
17:00:07 HPSU.Soll_T_Warmwasser_1 48 °C
23:42:42 HPSU.Soll_T_direkter_Heizkreis 28.5 °C
23:42:42 HPSU.Soll_Vorlauftemperatur_Waermeerzeuger 28.5 °C
14:23:19 HPSU.Spreizung_Mod_HZ 8 °C
23:42:43 HPSU.TVBH 29.9 °C
23:42:10 HPSU.T_Aussen -1.3 °C
23:42:11 HPSU.T_Aussen_WP -3 °C
23:41:28 HPSU.T_Aussen_gemittelt -0.4 °C
18:25:00 HPSU.T_Vorlauf_Tag 25 °C
23:42:17 HPSU.T_Warmwasser 48.3 °C
23:42:56 HPSU.T_direkter_Heizkreis 29.8 °C
23:42:55 HPSU.UWPumpe 68 %
23:42:56 HPSU.Vorlauftemperatur_Waermeerzeuger 30.3 °C
usw...
Aufzeichnung
Zum schnellen Einstieg ein Beispiel für das Loggen von Werten und Plotten von Kurven.
Logfile
Triggern der Werte
Um Daten aufzeichnen zu können, müssen die in eine Datei bei Änderung geschrieben werden. Da das Modul nicht nur bei einer Wertänderung die betroffenen Readings triggert, muss man das über das Attribut "event-on-change-reading" und "event-on-update-reading" nachträglich einstellen. Das ist kein Fehler des Moduls sondern ein Designziel - s.o. Definiert man die Attribute nicht, funktioniert das auch. Das Problem dabei wird aber, dass im Sekunden Takt die Werte in die Logdatei geschrieben werden. So wird die sehr schnell sehr groß. Um das auf ein "vernünftiges" Maß einzuschränken, haben sich folgende Attribute für das Modul bewährt:
attr myHPSU event-on-change-reading HPSU.T_direkter_Heizkreis:0.3,HPSU.UWPumpe:3,HPSU.Vorlauftemperatur_Waermeerzeuger:0.5,HPSU.Heizung_Ruecklauf:0.5,HPSU.UWPumpe:5,HPSU.Durchfluss:40,.*
attr myHPSU event-on-update-reading Info.LastDefrostDHWShrink,HPSU.ehs
Definition des Logfiles
Will man alle Werte Loggen, kann man das wie folgt definieren (nicht empfohlen!):
define myHPSU_Log FileLog ./log/myHPSU_Log-%Y-%m.log myHPSU:.*
Die etwas "schonendere", vorallem die Pi Benutzer, welche auf die SD Karte loggen, ist wie folgt zu definieren:
define myHPSU_Log FileLog ./log/myHPSU_Log-%Y-%m.log myHPSU:HPSU.(Aktive_Betriebsart|Betriebsart|Heizung_Ruecklauf|Pos_Vent_3UVB1|Soll_T_direkter_Heizkreis|T_Aussen|T_Aussen_WP|T_Warmwasser|T_direkter_Heizkreis|Vorlauftemperatur_Waermeerzeuger):.*|myHPSU:Info.(LastDefrostDHWShrink|Ts):.*
- Optional:
attr myHPSU_Log room Heizung
In diesem Beispiel sieht man, dass es sinnvoll ist, die Werte gezielt (einzeln) auszuwählen. Da sind schon nach zwei Tagen ~5000 Zeilen im Logfile eingetragen worden!
Definition des SVG Plots
Das kann man direkt in dem Logfile Modul mit klick auf "Create SVG plot" definieren. Danach ist das SVG Plot Modul im Bearbeitungsmodus offen. Hier kann man die einzelnen Kurven händisch anlegen oder man klickt hinter "GPLOTFILE" auf den Dateinamen "SVG_myHPSU_Log_1". Es öffnet sich der Dateieditor und man kann nachfolgendes einfach hineinkopieren und mit "Save SVG_myHPSU_Log_1.gplot" die Datei abspeichern:
# Created by ah, 2021-01-30 23:45:00 set terminal png transparent size <SIZE> crop set output '<OUT>.png' set xdata time set timefmt "%Y-%m-%d_%H:%M:%S" set xlabel " " set title '<TL>' set ytics set y2tics set grid ytics set ylabel "Temperatur" set y2label "Position Mixer" set yrange [10:65] set y2range [0:105] #myHPSU_Log 4:myHPSU.HPSU.T_Warmwasser\x3a:: #myHPSU_Log 4:myHPSU.HPSU.Vorlauftemperatur_Waermeerzeuger\x3a:: #myHPSU_Log 4:myHPSU.HPSU.Heizung_Ruecklauf\x3a:: #myHPSU_Log 4:myHPSU.HPSU.Soll_T_direkter_Heizkreis\x3a:: #myHPSU_Log 4:myHPSU.HPSU.T_direkter_Heizkreis\x3a:: #myHPSU_Log 4:myHPSU.HPSU.Pos_Vent_3UVB1\x3a:: #myHPSU_Log 4:myHPSU.HPSU.Aktive_Betriebsart\x3a::$fld[3]=~"3|Abtauen"?104:-10 #myHPSU_Log 4:myHPSU.Info.LastDefrostDHWShrink\x3a::$fld[3]*=10 plot "<IN>" using 1:2 axes x1y1 title 'Warmwasser' ls l3 lw 1 with lines,\ "<IN>" using 1:2 axes x1y1 title 'Vorlauf Heizkreis' ls l0 lw 1 with steps,\ "<IN>" using 1:2 axes x1y1 title 'Rücklauf Heizkreis' ls l2 lw 1 with steps,\ "<IN>" using 1:2 axes x1y1 title 'Vorlauf Heizkreis soll' ls l6 lw 1 with steps,\ "<IN>" using 1:2 axes x1y1 title 'Vorlauf HK direkt' ls l1 lw 1 with lines,\ "<IN>" using 1:2 axes x1y2 title '0-B 100-A (3UVB1)' ls l7 lw 1 with steps,\ "<IN>" using 1:2 axes x1y2 title 'Abtauen' ls l5 lw 12 with horizontalLineFrom,\ "<IN>" using 1:2 axes x1y2 title 'WW Verlust' ls l4 lw 1 with points
- Optional:
attr SVG_myHPSU_Log_1 room Heizung
Erweiterungen
COP berechnen
Wenn man ein separates Energiemessgerät wie z.B. SDM72DM für die Wärmepumpe im Einsatz hat, kann man den COP berechnen. Das realisiert man am einfachsten mit einem userReading wie in nachfolgendem Beispiel:
attr myHPSU userReadings uR.COP {my $val = ReadingsNum("SDM72DM_Z1", "Power_Sum__W", 0)/1000.; if($val > 0){return ReadingsNum($name, "Info.Q", 0)/$val}else{return 0};}
Relativ schnell wird man aber feststellen, das der COP sehr unruhig ist. Um den zu mitteln, nimmt man am einfachsten ein DOIF. Beispiel mit Mittelung über 5 Werte:
define diHPSU_Control DOIF ##
attr diHPSU_Control event_Readings COP_smooth:[myHPSU:uR.COP:avg5]
Um das dann mitzuloggen, muss |diHPSU_Control:COP_smooth:.*
noch hinter "myHPSU_Log" Definition.
Heizstab mit mehreren Stufen
Wenn der Heizstab extern mehrstufig (< 3kW) gesteuert werden soll, kann man das mit einer "kleinen" Relaisschaltung realisieren. In meinem Fall steuert FHEM, in Abhängigkeit des PV Überschuss wenn das WW auf 48°C ist, die Relais über einen KNX Aktor an.
Kompatibilität
Name / Typ | Innengerät | Außengerät | Baujahr | Raumstation RoCon U1 | Besonderheiten |
---|---|---|---|---|---|
Axel (Modulentwickler)
Rotex HPSU Compact |
516 H/C | 11 kW - RRLQ011CAW1 | 06/2017 | n.v. | Aktivierte Modulfkt.: AntiMixerSwing, CheckDHWInterrupted, AntiContinousHeating
Alles über FHEM: Absenken der WW Temp wenn nachts geheizt wird, Vorzeitige WW Bereitung bei PV Überschuss, WW Bereitung immer um 17 Uhr, damit Abends das Wasser immer warm ist, Sperren der Heizung bevor Sonne (über Wetterbericht)... |
Andi2055
Rotex HPSU Compact |
516 | 11kW | 2017 | n.v. | ext. Raumthermostat angeschlossen
Aktivierte Modulfkt.: AntiMixerSwing, CheckDHWInterrupted, AntiContinousHeating |
giulup
Rotex HPSU Compact |
2013 | n.v. | Abtaufix mit Relaisschaltung gelöst, Kältekreis wird parallel am Anschluss X10A mittels ESPAltherma und Mqtt miterfasst, Relais steuern den Kühl- und Heizbetrieb | ||
Fuxi
Rotex HPSU Compact |
508 | 8kW | 2014 | vorhanden | Alles per MQTT in Loxone visualisiert |
MadMax
DAIKIN Altherma 3 R ECH2O |
504 H/C | 6 kW -
Altherma 3R 07 |
2020 | n.v. | Max testet gerade (02.02.21) eine die Entwicklerversion 1.12. Die volle "Unterstützung" wird dann ab Version 1.13 verfügbar sein! |
Maxman83
Rotex HPSU Compact |
508 | 8kW | 2017 | n.v. |
Falls weitere Anlagen mit dem Modul laufen - gerne bei mir melden, dann nehme ich weitere über das FHEM Forum oder Github in die oben stehende Tabelle auf.
Der Ursprung
ToDo Allgemein
Weblinks
- Thema zur Entwicklung und Support des Moduls
- Idee AntiContinousHeating - Danke an "andi2055"