Die Einbindung von ETA Holzvergasern mittels Modbus ist leider mMn unzureichend dokumentiert - im Internet ist dazu kaum was zu finden, von ETA gibt es auf Anfrage auch nur eine veraltete Beschreibung zur Modbus Anbindung (beides siehe Weblinks) → Mein Loxone-Partner ist gemeinsam mit dem Loxone Support daran gescheitert, von ETA kam nur "es funktioniert anderswo auch".

Mittels Trial & Error habe ich es jetzt geschafft & mMn anfängertauglich dokumentiert - Bitte um Anmerkungen/Ergänzungen etc....

Voraussetzungen

Der ETA Holzvergaser muss im selben LAN eingebunden sein, wie der Loxone Miniserver. Dazu haben die ETA Holzvergaser (zumindest mein SH30) einen LAN-Anschluss, der befindet sich beim SH30 unter der oberen Abdeckplatte - ACHTUNG - bis zum LAN-Anschluss im Gerät sind es noch ca. 80cm, das LAN-Kabel sollte also nicht zu kurz sein.

Keine weitere Hardware nötig. Insbesondere die Loxone Modbus Extension ist nicht nötig. Der Miniserver kann von Haus aus Modbus über LAN, der ETA Holzvergaser auch.

Der ETA Holzvergaser muss eine statische IP-Adresse haben. Das ist leicht am ETA-Touch-Display (bzw. über meinETA oder via VNC) unter den Systemeinstellungen (Icon links unten) einstellbar:

Ob der ETA Holzvergaser von der Loxone erreichbar ist, kann man leicht in der Loxone mit dem Loxone Ping-Modul testen.

1. ETA-Holzvergaser in Loxone einbinden

In der Loxone-Config unter Peripherie bei Miniserver / Miniserverkommunikation einen neuen Modbusserver anlegen. Als IP-Adresse die Adresse des ETA Holzvergasers mit Port 502 (= Standard-Port für Modbus) eintragen:

Falls es Probleme mit der Verbindung gibt, dann vielleicht das Timeout erhöhen...

2. Aktoren / Sensoren am ETA freigeben

Am ETA Holzvergaser in den Servicemodus gehen. Dazu muss am ETA-Touch-Display unter Systemeinstellungen / Berechtigung die (allseits bekannte) Nummer "135" eingegeben werden. Am Display erscheint unten "Service" und man hat mehr Berechtigungen (z.B. mehr Möglichkeiten unter Systemeinstellungen):

Systemeinstellungen wieder verlassen (wieder klick auf das Icon links unten).

In den einzelnen Funktionsblöcken (FUBs = Karteireitern am ETA-Touch) sieht man im Textmodus (2tes Menü unter dem ETA-Symbol) im Servicemodus dann rechts kleine Bearbeiten- Icons. Diese weisen darauf hin das hier (oder in einem Sub-Menü) Werte über Modbus gelesen / geschrieben werden können:

Jetzt wählt man in den einzelnen Funktionsblöcken die Werte aus, die man lesen / schreiben möchte.

Viele Werte sind nicht schreibbar, auch wenn es einem logisch erscheinen würde, dass sie schreibbar sein sollten (z.B. Heizkreispumpe oder Zirkulationspumpe) → beim ETA Kundendienst einmelden, vielleicht werden sie in einer zukünftigen Version dann ja schreibbar.


Mit einem Klick auf das Bearbeiten-Icon des Wertes kommt man über ein Parameter-Menü über den Klick auf das Modbus/TCP Icon in das Modbus-Menü:

Ob ein Wert schreibbar / lesbar oder beides ist, sieht man hier links oben (in diesem Fall = Außentemperatur ist er klarerweise "nur lesbar")

Zuerst mal mit einfachten (= numerischen), auszulesenden (= Sensoren) anfangen. Schreiben und Umwandeln von z.B. Datum in Zahlen ist komplexer.

Mittels "Register zuweisen" weist man dem Wert das nächsten Register zu (eine Zahl zwischen 1000 und 65000). Dabei werden immer nur gerade Zahlen zugewiesen, da die ETA-Variablen 32bit lang sind und der Modbus dafür 2 Register (zuerst high, dann low) benötigt.

Weiters erkennt man hier auch die Skalierung des Wertes. Eine Skalierung von 10 wie im Fall der Außentemperatur bedeutet dass man die Zahl durch 10 dividieren muss um auf den tatsächlichen Wert zu kommen (also ein Wert von 7 entspricht 0,7°C)

Bei schreibbaren Werten erkennt man auch die Minimal-, Maximal-, und Default-Werte des Wertes

Bei Textwerten (= Integer-Werte, die etwas bedeuten) erkennt man leider das Mapping vom Integer-Wert auf den Textwert nicht mehr (war früher unter "Zuordnung von Wert zu Text (für Textparameter)" ersichtlich) - diese Zuordnung muss man sich aus der XML-Dokumentation (siehe unten) holen.

Mit einem Klick auf "Register zuweisen" sind die Werte bereits mittels Loxone auslesbar / schreibbar.

Eine halbwegs lesbare XML Dokumentation aller gewählten Register (inkl. Nummer, Name, Skalierung, Einheit, Min, Max, Default-Wert, Textwert, ...) bekommt man, indem man in den Systemeinstellungen auf "Protokolle exportieren" geht. Diese werden dann auf einen angesteckten USB-Stick geschrieben. Die XML-Dokumentation der Register findet man dort dann im Verzeichnis <ETA-Seriennummer>/<Datum_Uhrzeit>/modbus.

3. Werte aus Loxone auslesen / schreiben

Unter dem bereits im Punkt ETA Holzvergaser#1. ETA-Holzvergaser in Loxone einbinden in der Loxone-Config angelegtem ETA-Holzvergaser werden die Werte unter Sensoren (lesende) oder Aktoren (schreibende) angelegt. Bei den Eigenschaften wird unter IO-Adresse das jeweilige Register der ETA-Variable gewählt, bei den Befehlen wird dann je nachdem ob lesend oder schreibend ein unterschiedlicher Befehl gewählt:

Lesen:

  • "3-Read holding register(4x)" bei schreib/lesbaren und auch bei nur lesbaren Registern
  • Immer 32-bit signed integer
  • Immer 2 Register, alle Register beim ETA belegen 2 Adressen (darum nur gerade Adressen)
  • Registerreihenfolge immer umdrehen (ETA schickt/verlangt HighWord/LowWord, Loxone schickt/holt defaultmäßig LowWord/HighWord)
  • Byte-Reihenfolge belassen

(Warnung) Zumindest einige nur lesbare Register liefern falsche Werte mit "4-Read input register(3x)" (z.B. Puffertemperaturen, Außentemperatur, Position Heizkreismischer), aber korrekte Werte mit "3-Read holding register(4x)" - es scheint als ob "4-Read input register(3x)" nicht korrekt unterstützt wird.

Der Abfragezyklus sollte je nach zu lesendem Wert eingestellt werden. Erlaubt ist 5 - 4095 Sekunden, was für die Kommunikation mit dem ETA-Heizkessel reicht. Bei den meisten Werten reicht sicher eine Minute also Abfragezyklus = 60 oder größer. Viel länger sollten sie in vielen Fällen nicht gewählt werden, da sich z.B. Pufferniveaus oft schneller ändern als man denkt.

Mittels Korrektur kann man die Skalierung revidieren - z.B. lässt sich mittels folgender Korrektur eine Skalierung von 10 bei Temperaturwerten umsetzen:

Textwerte kommen als Zahlen rüber - diese könnte man in der Loxone Config z.B. mittels Status-Baustein wiederum in Text umwandeln. z.B. bei "Heizkreis" gilt folgendes (ist in der XML-Dokumentation der Register (siehe oben) nachlesbar, hier nur als Beispiel aufgeführt):


ZahlenwertText
2000Ausgeschaltet
2001Klappe auf
2002Pelletsbehälter auffüllen
2003Füllen gestoppt wegen ...
2004Heizversuch
2005Zünden
2006Heizen
2007Glutabbrand
......



Schreiben:

Zuerst mal versuchen das Register alle 5 sec. zu lesen und die Werte am ETA zu ändern. Damit erkennt man welche Werte erwartet werden, ob man auch das richtige Register erwischt hat etc.


  • Immer "16 - Preset multiple registers"
  • üblicherweise "32-bit signed integer", es gibt aber Spezialfälle wo es auch führende Bits gibt (s.u.), dann "32-bit unsigned integer"
  • immer 2 Register für 32-bit, darum sind die ETA Register ja auch alle geradzahlig
  • Registerreihenfolge immer umdrehen (ETA schickt/verlangt HighWord/LowWord, Loxone schickt/holt defaultmäßig LowWord/HighWord)
  • Byte-Reihenfolge belassen


Auch hier kann man mittels der Korrektur der Skalierung entsprechen - z.B. lässt sich mittels folgender Korrektur eine Skalierung von 10 bei Temperaturwerten umsetzen (genau umgekehrt wie beim Lesen):


Das Schreiben funktioniert meiner Erfahrung nach inzwischen zuverlässig - es empfiehlt sich dennoch zu Beginn (durch ein automatisches Lesen und automatische/manuelle Kontrolle) zu überprüfen, ob das Schreiben funktioniert hat.


Spezialfälle / Workarounds / Anwendungsbeispiele

Viele Werte sind nur lesbar, leider auch Werte, die man typischerweise mit einer Haussteuerung steuern möchte. Um sie dennoch zu ändern muss der Umweg über das Setzen anderer Werte gegangen werden. Hier dazu ein paar Workarounds:

Weblinks