Fröling Lambdatronic S3100 via RS232 in Homeassistant eingebunden

Durch einen Zufall bin ich auf das tolle github.Projekt ‘radiator’ von Daniel Höpfl gestossen. Er hat es geschafft, via RS232 port sämtliche Daten der ‘alten Steuerung’ von Fröling auszulesen.
Da es keine direkte Schnittstelle in den Homeassistant gibt, schildere ich hier gerne den Prozess mittels scriptprogrammierung, nodered und mqtt als Hilfsmittel.
Ziel war zunächst diese Ausgabe der Daten, die sich alle 120 Sekunden ‘refresht’.


Vorhensweise:

  • raspi 4B mit Bookworm lite aufbauen und alles Pakete aktualiseren. Dann das apt autokonf nachinstallieren
  • das githubprojekt gezippt herunterladen und in ein Verzeichnis auf dem pi entpacken. Anschliessend mit ./configure, make, make install den radiator installieren.

Einen geeigneten RS232/USB Adapter zwischen den Wartungsport der Fröling und einen USB Port des Raspi bauen. Dabei das Kabel (cat5 oder 6) von TX auf RX und von RX auf TX ‘kreuzen’.

Den Radiator probeweise mit ‘radiator -D4 T 2 /dev/ttyUSB0’ probestarten. Blinken am Adapter die TX/RX LED’s ist alles okay.

Danach auf dem Raspi mosquitto, mosquitto client und nodered installieren.
Mittels mqtt Explorer eine Testverbindung zwischen raspi und homeassistant herstellen.
Wenn das payload im Explorer auf dem homeassistant angezeigt wird, steht auch diese Verbindung.

Nun auf dem Pi ein selbsterstelltes script abarbeiten, dass die Standardausgabe des ‘radiator’ in JSON-string wandelt.
Der Standard sieht so aus:

.}.. .2
00 [] = [  Feuer-Aus    ] (5)
01 [Zustand] = [1] (1)
02 [ROST] = [0] (0)
03 [Kesseltemp] = [24°] (48)
04 [Abgastemp.] = [32°] (32)
05 [Abgas. SW ] = [42°] (42)
06 [KessStellGr] = [100%] (100)
07 [Saugzug  ] = [0%] (0)
08 [Prim.Luft ] = [0%] (0)
09 [Prim.Kl.pos] = [3%] (3)
0a [Rest-O2] = [1.9%] (19)
0b [O2-Regler] = [0%] (0)
0c [Sek.Luft ] = [0%] (0)
0d [Sek.Kl.pos] = [3%] (3)
0e [Puffert.ob] = [24°] (47)
0f [Puffert.un] = [21°] (42)
10 [Boilertemp] = [50°] (101)
11 [ölkessel ] = [56°] (112)
12 [Außentemp] = [26°] (52)
13 [Vorlauft.1sw] = [0°] (0)
14 [Vorlauft.1] = [36°] (71)
15 [KTY6_H2] = [-30°] (65476)
16 [KTY7_H2] = [-30°] (65476)
17 [Laufzeit:] = [6558h] (6558)
18 [F-halt:] = [3200.0h] (32000)
19 [Boardtemp.] = [32°] (32)

Der JSON string so:

{
 "Zustand": 1,
 "ROST": 0,
 "Kesseltemp": 24,
 "Abgastemp.": 31,
 "Abgas. SW ": 41,
 "KessStellGr": 100,
 "Saugzug  ": 0,
 "Prim.Luft ": 0,
 "Prim.Kl.pos": 3,
 "Rest-O2": 1.9,
 "O2-Regler": 0,
 "Sek.Luft ": 0,
 "Sek.Kl.pos": 3,
 "Puffert.ob": 24,
 "Puffert.un": 21,
 "Boilertemp": 46,
 "Oelkessel ": 51,
 "Außentemp": 28,
 "Vorlauft.1sw": 0,
 "Vorlauft.1": 32,
 "Laufzeit:": 6558,
 "F-halt:": 3200.0,
 "Boardtemp.": 31
}

Nun mit nodered einen flow erstellen, der den radiator-aufruf nach 60 Sekunden unterbricht (dann sind die Messwerte in einer Datei gespeichert) und die Rohdaten in JSON wandelt.
Diese Daten werden dann anschliessend via mqtt zum homeassistant geschickt.


Und im homeassistant dann die Sensoren händisch anlegen (keine discoveryfunktion).

sensor:

  - name: Abgastemperatur
    state_topic: froeling/radiator
    unique_id: 1c19be29-b788-4631-85ee-39daaf7e8e88
    unit_of_measurement: °C
    device_class: temperature
    state_class: measurement
    value_template: "{{ value_json['Abgastemp.'] }}"

  - name: Abgastemperatur-Sollwert
    state_topic: froeling/radiator
    unique_id: 30f5754a-086a-41fa-9d8d-6caf1f37cf3a
    unit_of_measurement: °C
    device_class: temperature
    state_class: measurement
    value_template: "{{ value_json['Abgas. SW '] }}"

  - name: Puffer-T-oben
    state_topic: froeling/radiator
    unique_id: be4ca6c0-5346-424c-aeaf-dbc7087660ae
    unit_of_measurement: °C
    device_class: temperature
    state_class: measurement
    value_template: "{{ value_json['Puffert.ob'] }}"

  - name: Puffer-T-unten
    state_topic: froeling/radiator
    unique_id: 7f784cb7-deb0-49e2-b94f-f160a798a365
    unit_of_measurement: °C
    device_class: temperature
    state_class: measurement
    value_template: "{{ value_json['Puffert.un'] }}"

  - name: Warmwassertemperatur
    state_topic: froeling/radiator
    unique_id: f34d54d2-447f-4343-a0dc-965062a447e7
    unit_of_measurement: °C
    device_class: temperature
    state_class: measurement
    value_template: "{{ value_json['Boilertemp'] }}"

Hier ist es super wichtig, auf jedes Zeichen zu achten - so haben mich “gutgemeinte” Anführungsstriche lange nach einem Fehler suchen lassen. Auch die value_template Funktion muss exakt so formuliert sein.

Dann noch ein Dashboard mit den neuen Entitäten bestücken und fertig ist die Überwachung der kombinierten Scheitholz/Ölanlage mit Nutzung der ohnehin vorhandenen Daten.

So macht der homeassistant Spass!!
Mein Dank geht an Daniel, der mich per mail stets supportet hat.

Hallo m6m7m9,

ich habe selbst einen FHG 3000 mit S3100 Steuerung. Leider bin ich auf dem Gebiet der Technik nicht so versiert, als das ich den Beitrag nur durch Lesen verstehen könnte. Würdest du mir ggf. weiterhelfen, damit ich das Projekt auch bei mir umsetzen kann?

Ich wäre sehr dankbar.

LG

Ich wollte nicht an die Heizung und habe in einer VM iobroker installiert. Da gibt es die Fröling Integration. Dort werfe ich alle wichtigen Daten in den MQTT Server und ziehe sie mit HA wieder raus und lasse mir das grafisch wieder ausgeben.
Klappt sehr gut. Ich hoffe, dass es mal direkt für HA eine Integration geben wird.

Das funktioniert aber wohl nur mit Geräten, die die Fröling App “bedienen”. Bei der S3100 Steuerung geht das (noch) nicht.
Deshalb die Mühe und der Hinweis auf die etwas älteren Geräte.

OK, so tief stecke ich da noch nicht drin. Die Heizung wurde vorletztes Jahr eingebaut und verbindet sich mit “Fröling Connect”. Darauf basiert bei mir natürlich alles.

Das macht ja auch nichts. Ich möchte nur keine Verwirrung stiften. Meine Heizung - die gerade TOP läuft - ist von 2006. Da war man mit Schnittstellen noch nicht so freundlich wie heute…

…habe eine Nachricht geschrieben…
Und so schaut es gerade real aus:

:crayon:by HarryP: Post formatiert

1 „Gefällt mir“

Interessant. Hatte es vor Jahren mal mit ioBroker umgesetzt, war aber nicht so ganz zufrieden. Einen Raspberry habe ich noch.
Werde es mal versuchen umzusetzen :grinning:
Danke für den Input

Mittlerweile gibt es eine Fröling-Connect Integration. Ich habe sie installiert und es scheint zu funktionieren. Werde das weiter beobachten und dann von den iobroker via mqtt gelieferten Daten umsteigen. Dann kann auch die iobroker-vm weg.