Rotex HPSU Compact: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 38: Zeile 38:
==== 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 man wiederrum eine Leitung angeschlossen werden, welche an die Rocon geht.
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 man wiederrum eine Leitung angeschlossen werden, welche an die Rocon geht. Wenn man keinen solchen Stecker hat, kann man einen solchen auch fertig dazu bestellen.


<gallery>
<gallery>
Zeile 44: Zeile 44:
70_HPSU_Buchse_2.jpg|Buchse Schritt 2
70_HPSU_Buchse_2.jpg|Buchse Schritt 2
70_HPSU_Buchse_3.jpg|Buchse Schritt 3
70_HPSU_Buchse_3.jpg|Buchse Schritt 3
70_HPSU_Buchse_Fertig.jpg|Fertig bestellbare Buchse
</gallery>
</gallery>


Zeile 61: Zeile 62:
=== Software ===
=== Software ===
==== Dateien ====
==== 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.
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 sind über Github verfügbar:
Die aktuellen Dateien sowie der ausführliche Changelog sind über Github verfügbar:


[https://github.com/ahermann86/fhemHPSU Github fhemHPSU]
[https://github.com/ahermann86/fhemHPSU Github fhemHPSU]


Weiterhin ist hier der Changelog für die Dateien verfügbar.
===== Installation/Update (Linux) =====


Wenn sich die Dateien in den FHEM Ordner hinein kopiert wurden, muss das Modul über die FHEM Befehlszeile mit "reload 70_HPSU" bekannt gemacht werden. Gleiches gilt übrigens auch, wenn die Datei "70_HPSU.pm" aktualisiert bzw. ersetzt wurde!
# Terminal öffnen
# Git-Repository herunterladen: <code>git clone https://github.com/ahermann86/fhemHPSU</code>
# "70_HPSU.pm" in den FHEM Ordner kopieren <code>sudo cp fhemHPSU/70_HPSU.pm /opt/fhem/FHEM/</code>
# "commands_hpsu.json" in den FHEM Ornder kopieren <code>sudo cp fhemHPSU/commands_hpsu.json /opt/fhem/FHEM/</code>
# Aufräumen: <code>sudo rm -r fhemHPSU</code>
# FHEM Weboberfläche im Browser öffnen
# Über die FHEM Befehlszeile das Modul mit <code>reload 70_HPSU</code> laden.
# Nach einem Update: Mit "Connect" eine Initialisierung ausführen und ggf. den Browser aktualisieren.


==== Definition====
Wenn man bereits als "admin" über das Terminal eingeloggt ist, wird "sudo" vor den cp/rm-Befehlen nicht benötigt.


Syntax
==== Rechte anpassen (Linux/Teminal) ====


<code>define <name> HPSU <device></code>
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:


:<code>sudo usermod -a -G dialout pi</code>
:<code>sudo usermod -a -G dialout fhem</code>


Beispiel
==== Definition ====


<code>define myHPSU HPSU /dev/ttyUSB0</code>
===== 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
<code>ls -l /dev/serial/by-path</code> 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 =====
 
:<code>define <name> HPSU <device></code>
 
===== Beispiel =====
 
:<code>define myHPSU HPSU /dev/ttyUSB0</code>


oder: (wie es meiner Meinung nach besser ist)
oder: (wie es meiner Meinung nach besser ist)


<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>


== Anwendung ==
== Anwendung ==
Zeile 156: Zeile 178:
<code>get <name> <parameter></code>
<code>get <name> <parameter></code>
* '''UpdateJson'''
* '''UpdateJson'''
:Die JSON Datei "commands_hpsu.json" neu lesen und parsen. Ggf. muss der Browser danach aktualisiert werden.
: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>'''
* '''<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.
: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.

Version vom 15. Januar 2021, 18:03 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 Wärmepumpe über CAN Bus mit einem einfach und günstig beschaffbaren ELM327.

Clock - Under Construction.svg An dieser Seite wird momentan noch gearbeitet.

Allgemein

  • Auslesen und Setzen aller über die Rocon B1 zur Verfügung stehenden Parameter
  • Keine Zugriffsrechte nötig (Benutzer, Fachmann)
  • Anbindung mittels einem ELM327 Adapter an die CAN Schnittstelle der RoCon BM1 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.

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 man wiederrum eine Leitung angeschlossen werden, welche an die Rocon geht. Wenn man keinen solchen Stecker hat, kann man einen solchen auch fertig dazu 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.

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:

Github fhemHPSU

Installation/Update (Linux)
  1. Terminal öffnen
  2. Git-Repository herunterladen: git clone https://github.com/ahermann86/fhemHPSU
  3. "70_HPSU.pm" in den FHEM Ordner kopieren sudo cp fhemHPSU/70_HPSU.pm /opt/fhem/FHEM/
  4. "commands_hpsu.json" in den FHEM Ornder kopieren sudo cp fhemHPSU/commands_hpsu.json /opt/fhem/FHEM/
  5. Aufräumen: sudo rm -r fhemHPSU
  6. FHEM Weboberfläche im Browser öffnen
  7. Über die FHEM Befehlszeile das Modul mit reload 70_HPSU laden.
  8. 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>
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

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". 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 und dem Wert: 0 - 1 - 1 - 0b00000000 0b00000001
  • 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"
Ab 70_HPSU.pm Version 1.11 (in Arbeit):
"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.
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)

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...

Der Ursprung

ToDo Allgemein

Weblinks