Paradigma Heizung Integration via Modbus TCP

Begonnen von nigl, 21 Oktober 2021, 12:04:28

Vorheriges Thema - Nächstes Thema

HeikoSommer

Hallo!
Nach schlappen 6 Monaten habe ich jetzt eine Platine als Ersatzteil in meine Steuerung eingebaut bekommen, die nun die erforderliche Version mit der Gebäudeleit-Option hat. Ist auch alles in der Steuerung aktiviert.
Jetzt möchte ich natürlich die Daten in fhem sehen. Leider funktioniert das noch nicht.
Kann mir jeman helfen?
Ich konnte über qModmaster eine Verbindung zur Steuerung aufbauen und sehe auch Rohdaten im Bus-Monitor, wenn ich auf scannen gehe.
Aber in fhem steht das device immer auf "disconnected". Was muss ich nach Definition und Anpassung der Raw-Daten noch machen?
Sagt mir welche Informationen ihr benötigt, um mir zu helfen.
 

smoudo

Moin,

anbei mal ein RAW meines device. Ändere mal die ip Adresse passend deiner Anlage ab. Dann sollte da was kommen. Ich hatte jetzt auch schon vermehrt mit den Platinen mit v1 zu kämpfen. Gerade wenn pelletkessel verbaut+Kunde s-Touch App verwenden will, ist ein lan Port sehr unpraktisch. Extra dafür einen Switch zu setzen halte ich für inakzeptabel und bietet mehr Störanfälligkeit.. Paradigma hat zeitweise auf alte hardwarestände zurück greifen müssen zwecks fehlender Halbleiter. Man muss fairerweise sagen, wenigstens werden Regler ausgeliefert, wenn auch mit vermindertem Funktionsumfang. Somit kann die Anlage gebaut werden, was heute leider nicht mehr selbstverständlich ist.

defmod Paradigma ModbusAttr 1 60 192.168.1.210:502 TCP
attr Paradigma dev-c-combine 10
attr Paradigma dev-c-defPoll 1
attr Paradigma dev-h-combine 100
attr Paradigma dev-h-defPoll 1
attr Paradigma dev-i-combine 100
attr Paradigma dev-i-defExpr $val/10
attr Paradigma dev-i-defFormat %.1f
attr Paradigma dev-i-defPoll 1
attr Paradigma dev-i-defUnpack s>
attr Paradigma dev-type-Para_RO_Counter-len 2
attr Paradigma dev-type-Para_RO_Counter-unpack N
attr Paradigma dev-type-Para_RO_Energy-expr $val/10
attr Paradigma dev-type-Para_RO_Energy-format %.1f
attr Paradigma dev-type-Para_RO_Energy-len 2
attr Paradigma dev-type-Para_RO_Energy-unpack N
attr Paradigma dev-type-Para_RO_Power-expr $val/10
attr Paradigma dev-type-Para_RO_Power-format %.1f
attr Paradigma dev-type-Para_RO_Power-unpack s>
attr Paradigma dev-type-Para_RO_Temp-expr $val/10
attr Paradigma dev-type-Para_RO_Temp-format %.1f
attr Paradigma dev-type-Para_RO_Temp-unpack s>
attr Paradigma dev-type-Para_RO_uint16-unpack n
attr Paradigma dev-type-Para_RO_uint16_scaled-expr $val/10
attr Paradigma dev-type-Para_RO_uint16_scaled-format %.1f
attr Paradigma dev-type-Para_RO_uint16_scaled-unpack n
attr Paradigma dev-type-Para_RW_Temp-expr $val/10


Viele Grüße

Matze

HeikoSommer

Hallo Matze, vielen Dank für die schnelle Antwort und das RAW. Inzwischen hat es bei mir funktioniert. Ich bekomme inzwischen Daten der Anlage im Minutentakt, wie eingestellt. Super!!

Liebe Grüße
Heiko

alschie

Hallo,
ich habe zwar nicht genau die gleichen Steuerungen/Geräte aber im Prinzip suche ich genauso wie im Beitrag immer noch eine Möglichkeit die Werte von meinen Paradigma Systemen in FHEM zu bekommen. Vielleicht hat jemand (Matze aus der Branche) dazu was gehört oder Infos.
Seit langer Zeit messe ich das Warmwasser, mit einem DS1820 von meinem Paradigma Expresso der von einem Pelletti 3 beheizt wird, in FHEM. Nun ist eine Paradigma Solaranlage mit SystaSolar Aqua 2 dazugekommen und ich dachte nochmals einen Versuch zu starten.
Ich hatte wohl damals bei der Beschaffung des Pelletti 3 das Pech, dass der SystaComfort (1) ohne LAN-Buchse dabei war (SystaComfort 2 gab es wohl erst ein paar Monate später) und kann ich nicht Modbus TCP verwenden.
Da es aber einen 2 Draht Bus zwischen den Komponenten gibt wäre die Frage, ob dies Modbus RTU/RS485 ist und dies vielleicht auslesbar wäre?

Des Weiteren hat der Pelletti 3 auf seiner Steuerungsplatine eine LAN-Buchse (X1 TCP/IP). Allerdings finde ich in den Einstellungen (Code bekannt) keine Aktivierung etc. Ein Switch erkennt einen Link aber der DHCP-Server erhält keine Nachrichten und vergibt keine IP Adresse. Weiß jemand was von der Buchse?

Mein Heizungsbauer hat davon kaum Ahnung und verweist auf den SystaComfort 2 (der nicht gerade günstig ist).

Gruß Alex

PS: Bei Thema ein Netzwerkkabel/2 Ports/Switch/Powerline gibt es noch die Variante passiv zu arbeiten. Mit Cable Sharing Adapter (z.B. Metz Connect pnp3) kann aus einem Netzwerkkabel 2 Ports rausholen. Man hat dann ,,nur" 100 Mbit/s aber das sollte ausreichend sein.
RasPi 3 Mod. B Rev 1.2 | 1-Wire Sensoren | Relais Board | Shellys/Tasmota | SBFspot | Velux Steuerung

smoudo

Moin,

mit der systa comfort 1 ist mir keine Möglichkeit bekannt, Messwerte ins Netzwerk zu bekommen.

Bei der systa comfort 2 mit einem lan Port handelt es sich um die Hardware Revision 1. die wurde auf einen neueren Softwarestand gebracht um zb die peleo Serie lauffähig zu bekommen. Auch hier fehlt meines Wissens die Möglichkeit der glt Anbindung. Umwege über systaweb könnte hier funktionieren, habe ich aber nie verfolgt, da kostenpflichtige Account + Daten über externe Server für mich keine Option sind.

Das sollte bei systa comfort 2 hardware Revision  2 ab Softwarestand 2.16 funktionieren. Damit sind die oben geposteten Register lauffähig.

Viele Grüße

Matze

tobbse

#35
Vielen Dank @Nigl für die super Beispielkonfiguration! Wobei Beispielkonfiguration leicht untertrieben ist. Hat damit auf Anhieb funktioniert und sieht echt sauber aus :)

Wärmemenge Warmwasser (h23) ist bei mir noch mit Faktor 0.1, wobei ich nicht ganz verstehe warum. Muss mir wohl das Modul ModbusAttr auch mal genau ansehen.

attr Paradigma obj-h23-reading Waermemenge_Warmwasser
attr Paradigma obj-h23-type Para_RO_Energy

#
# Name:        Para_RO_Energy
# Type:        uint32
# ScaleFactor: 1
# Unit:        kWh
# Writeable:   no
#
attr Paradigma dev-type-Para_RO_Energy-unpack N
attr Paradigma dev-type-Para_RO_Energy-len 2[/tt]


Edit: denke der hund liegt hier begraben. Das steht direkt unter dem Codeblock oben:
#
#
# Name:        Para_RO_Energy_scaled
# Type:        uint32
# ScaleFactor: 0.1
# Unit:        kWh
# Writeable:   no
#
attr Paradigma dev-type-Para_RO_Energy-expr $val/10
attr Paradigma dev-type-Para_RO_Energy-format %.1f
attr Paradigma dev-type-Para_RO_Energy-unpack N
attr Paradigma dev-type-Para_RO_Energy-len 2


da fehlt einfach das _scaled. Deswegen wird die Division doch wieder angewendet.

VG
Tobbse

HeikoSommer

#36
Hallo zusammen!
Vielleicht gehört die Frage woanders, aber hier haben sich ja die Paradigma-Leidensgenossen zusammengefunden.
Ich bekomme seit einiger Zeit an der Steuerung den Fehler "Störung Kessel 0". Die Steuerung kann dann den Kessel nicht mehr einschalten und es kommen auch keine Daten vom Kessel.
Wenn ich die Steuerung (SystaComfort II) stromlos mache und wieder mit Strom versorge, geht ist die Meldung weg, und die Daten vom Kessel kommen wieder in der Steuerung an und der Kessel läuft wieder an. Die Zeitspannen zwischen den Störungen liegen zwischen zwischen 4 Stunden und mehreren Tagen.
Meint Ihr es könnte mit der am Auslesen der Daten mit dem ModbusAttr liegen?
Anfangs hatte ich den Interval auf 60 Sekunden. Dann habe ich es auf 120 Sekunden umgestellt. Anfangs hatte ich das Gefühl, das hat geholfen, bis die Ausfälle nach ein paar Tagen wieder kamen.
Meinen Heizungsbauer habe ich inzwischen informiert, der hatte aber auf Anhieb keine Idee.
Ergänzung: Sollte man das closeAfterResponse auf 1 setzen? Oder stört das ständige Verbinden noch mehr?

smoudo

Hört sich an als würde der Kessel vom Regler nicht erkannt. Tritt denn der Fehler auch bei ausgeschalteten GLT auf? Soweit ich das im Kopf hab, wird der Pelleti Touch doch über OT Bus angesteuert oder? Wenn dem so ist sollte da modbus keine Rolle spielen.

HeikoSommer

Der OT-Bus Anschluss ist nicht belegt und der Kessel ist über eine der beiden LAN-Buchsen angeschlossen. Deshalb bin ich immer davon ausgegangen, dass das auch über Modbus-TCP geht.
Allerdings habe ich heute Morgen gesehen, dass der Wert für interval wieder auf 60 stand. Aktuell habe ich die das ModbusAttr-Gerät in FHEM gestoppt und die Verbindung geschlossen. Seitdem habe ich jetzt keine Störung mehr. Jetzt taucht die Steuerung in der touch-App ohne Probleme auf. Sonst hat das entweder gar nicht oder nur nach einer erneuten Suche in der App möglich.
Mein nächster Schritt ist jetzt, wieder mit 120 Sekunden online zu gehen und zu sehen was passiert.
Danke für den Tipp mit dem Parameter GLT = aus. Das werde ich probieren, sollte ich auch bei geschlossener Verbindung zum ModbusAttr eine Störung bekommen.
 


tobbse

#39
Hi,

das Auslesen der Daten via Modbus läuft bei mir jetzt seit fast drei Monaten ohne auch nur einen Ausfall. Die Daten polle ich alle 60 Sekunden und schreibe sie bei Wertveränderung in eine Datenbank. PERFEKT.

Jetzt wollte ich mich mal an das Schreiben wagen - aber es will nicht so recht. Hat jemand Erfahrungen?

Ich versuche bspw. die Vorlauftemperatur auf 42,5°C zu setzen und nutze hiefür:
set Paradigma Sollwert_Vorlauftemperatur_HK1 42.5

Aber ich bekomme gar keine Reaktion (außer im Event Monitor). Auch wenn ich anstelle von 42.5 die bereits skallierte Zahl 425 verwende, passiert nichts. Sollte aber ohnehin mit 42.5 funktionieren.

Das einzige, was funktioniert ist set Paradigma Trinkwasserzirkulation_freigeben 1. Dann wechselt Leitsystem_aktiv auch von 0 auf 1. Vieleicht klappt das mit der Zirkulation, weil es ein boolean ist?

Gebäudeleitsystem lesen und schreiben ist natürlich aktiviert.

Hat jemand eine Idee oder das schon sinnvoll zum Laufen gebracht?

VG
Tobbse

HeikoSommer

Hallo, ich hatte es anfangs mal probiert, hat bei aber auch nicht funktioniert. Seither habe ich mich auf das Lesen beschränkt. Aber das funktioniert seit dem 3.1. ohne Kessel-0-Störung. Ist aber alles eingestellt, wie vorher.
Mich würden aber Tipps zum Setzen von Werten auch interesserieren.
Ich wünsche allen einen guten Start in die Woche.
LG
Heiko

tobbse

#41
Hi,

Ich denke das Problem, dass ich die Vorlauftemperatur nicht Schreiben kann, liegt in der Art, wie der Modbus-Befehl gebaut wird. Leider bin ich noch nicht schlau genug um das auch zu beheben (hatte mich zuvor noch nie mit Modbus beschäftigt).

Wenn ich den Sollwert_Vorlauftemperatur_HK1 schreiben möchte, dann baut FHEM aktuell folgenden Befehl:
0066000000060106000201fe

Interessant ist, was hinter 601 steht - und da im speziellen die 06. Laut der Paradigma Doku müsste hier wohl 10 stehen. Die Ziffer gibt den Funktionscode an. 10 bedeutet, dass Register geschrieben werden sollen. Wollte man Coils schreiben stünde hier bspw. der Functionscode 05 (was auch klappt, daher lässt sich bspw. auch Trinkwassererwaermung_freigeben schreiben).

Die 2 (nach den drei Nullen) steht dann für die Registernummer und entspricht hier dem Sollwert Vorlauftemperatur Heizkreis 1. Passt also. Der Wert 01fe ist die Hex-Darstellung von 510. Das ist die von mir vorgegebene Wunsch-Vorlauftemperatur von 51°C x 10. Passt also auch.

Nur die 06 ist nicht das, was ich brauche...

VG
Tobbse

tobbse

#42
Hi,

Nun komme ich endlich mal wieder zur Heizungssteuerung zurück. Und ich kann Erfolg vermelden. Mir war letztes mal fünf Minuten vor dem Ziel einfach die Luft ausgegangen.

Die ModbusAttr Doku sagt:
dev-([cdih]-)*write
specifies the function code to use for writing this type of object. The default is 6 for holding registers and 5 for coils. Discrete inputs and input registers can not be written by definition


Dann aber nichts überstürzen, denn
dev-h-write 10
ist falsch und führt zu Fehlern wie: "ReadAnswer called but MASTERHASH disappeared" und "Send function code 10 not yet implemented".

Besser wird es mit:
dev-h-write 16
was der Dezimalwert für Hex 0x10 ist  ::)

Dann wird aus
00ea00000006010300090001
00e900000006011000020001

Und Sollwert_Vorlauftemperatur_HK1 wird geschrieben :)

Jetzt teste ich mal nach und nach und schaue mir an, ob auch wirklich alle schreibbaren Werte in Holding Registern sitzen oder noch weitere Anpassungen notwendig sind.

Edit: Es reicht tatsächlich aus, das Attribut dev-h-write 16 zu setzen. Wichtig ist, dass immer zuerst der Sollwert_Vorlauftemperatur_HK1 gesetzt werden muss. Dies ist laut Doku der einzige muss-Parameter (außer es gibt einen zweiten Heizkreis, dann muss HK2 auch gesetzt werden). Wenn man die Sollwert_Trinkwassertemperatur ändern möchte, muss man zusätzlich die Trinkwassererwaermung_freigeben (=1). Dann wird übrigens der Warmwasser Zeitplan in der SystaTouch ausgeblendet. Setzt man Trinkwasserzirkulation_freigeben (=1), dann wird auch diese in SystaTouch ausgeblendet.

VG
Tobbse


HeikoSommer

Hallo Tobbse!
Vielen Dank für den Tipp. Ich habe es gerade ausprobiert und es funktioniert super.
Paradigma schreibt ja in der Dokumentation, dass der die Steuerung nach 5 Minuten wieder in den Automatikbetrieb wechselt, so dass man regelmäßig erneut den Sollwert setzen muss.
Wie hast Du das gelöst?
Liebe Grüße
Heiko

tobbse

Hi Heiko,

bisher habe ich noch nichts wirklich produktiv genommen. Mein erster Test war die Einführung eines "Bademodus". Die Idee dahinter ist, die Trinkwassertemperatur zu erhöhen, bevor jemand Baden geht ;)

Ich habe dazu ein neues User Attribut "Leitsystem_Bademodus_aktiv" definiert. Wenn es den Wert 1 hat, wird ein DOIF getriggert:

defmod doif_Leitsystem_Paradigma DOIF ( [Paradigma] eq "opened" and [Paradigma:Leitsystem_Bademodus_aktiv] == 1)\
   ( { Log 1, "Bademodus eingeschaltet" } ) \
   (set Paradigma Sollwert_Vorlauftemperatur_HK1 [Paradigma:Sollwert_Vorlauftemperatur_HK1])\
   (set Paradigma Sollwert_Trinkwassertemperatur 60)\
   (set Paradigma Trinkwassererwaermung_freigeben 1)\
   (set Paradigma Trinkwasserzirkulation_freigeben 1)\
DOELSE\
   ( { Log 1, "Bademodus abgeschaltet" } ) \
\

attr doif_Leitsystem_Paradigma repeatcmd 180
attr doif_Leitsystem_Paradigma repeatsame 20


Das Doif setzt den Muss-Parameter Sollwert_Vorlauftemperatur_HK1 auf den aktuellen Wert. Ich denke die anderen Befehle sind selbsterklärend.

Damit das Doif sich selbst alle 3 Minuten triggert und die Werte neu an das Steuergerät gesendet werden, habe ich repeatcmd auf 180 Sekunden gesetzt. Die Empfehlung von Paradigma wäre übrigens, die Werte alle 4 Minuten zu schicken.
Da man ja nicht ewig Badet und irgendwann wieder die Paradigma-Steuerung übernehmen soll, habe ich die Anzahl der Sendewiederholungen (repeatsame) auf 20 gesetzt. Der Bademodus ist also etwas mehr als eine Stunde aktiv.

Eine andere Möglichkeit die Steuerung über das Fhem-Leitsystem direkt zu beenden, wäre das Senden von eines Errorcodes != 0.

VG
Tobbse