« Heizung, Lüftung, Klima  |

DIY Alternative zu Nibe Modbus Modul

Teilen: facebook    whatsapp    email
 
 1  2 ... 3 ... 18  19  20  21 ... 22 ... 49  50  51 
  •  chrismo
  •   Gold-Award
29.1.2019 - 25.4.2024
1.009 Antworten | 62 Autoren 1009
127
1136
Weil es hier immer wieder zu Diskussionen zum Thema Modbus-Anbindung der Nibe kommt, wollte ich hier mal kurz meine Erfahrungen mit dem Nachbau einer DiY Lösung, auf Basis von im Netz vorhandener Infos, teilen. Für mich war es eine Spielerei und Zeitvertreib der letzten Tage. Der Post dient vor allem als Speicherort für meine gesammelten Infos und evt. dem Austausch von Leuten, die das so oder so ähnlich bei sich installiert haben. Ich kann und will hier keine Empfehlung abgeben, sowas selbst zu machen!

Die Lösung basiert im Wesentlichen auf den Nibe Bindings von openHAB (https://www.openhab.org/addons/bindings/nibeheatpump/), das eine Umsetzung Modbus auf UDP macht. Infos zur Funktionsweise findet man auf der openHAB Seite bzw. dem entsprechenden github Repo.

Die grobe Vorgangsweise war folgend:
1) Auf einen Arduino mit Ethernet Shield und RS485 Adapter die NibeGW Software (Teil des Bindings) installieren. Der Ardunio Code muss dabei an die eigenen Netzwerkeinstellungen angepasst werden. 

2) Den Arduino an die Wärmepumpe und ans LAN anschließen.

3) Die Nibe Modbus Manager Software auf einem Rechner installieren und bis zu 20 Register auswählen, die periodisch von der Wärmepumpe exportiert werden sollen. Diese Konfig muss gespeichert und per USB-Stick auf die WPWP [Wärmepumpe] übertragen werden.

4) Das Modbus Modul in der WPWP [Wärmepumpe] aktivieren. Wenn alles geklappt hat, bleibt die Wärmepumpe im Normalbetrieb. Falls irgendwas bei der Kommunikation mit dem Arduino schief geht, wird eine Fehlermeldung am Display ausgegeben und die WPWP [Wärmepumpe] geht in einen Alarmmodus.

5) Das nibeopenhab Binding in openHAB installieren und konfigurieren.

zu 1) Man könnte dazu auch einen Raspberry Pi mit RS485 Adapter verwenden, auf dem dann auch openHAB selbst läuft. Das finde ich aber nicht optimal. Ein Pi wäre mir da nicht robust genug. Selbst ein einfacher Neustart des Pis würde zu einem Fehler der WPWP [Wärmepumpe] führen und ein SD-Kartenfehler wäre sowieso ungemütlich.

zu 5) Da ich derzeit noch nicht weiß ob es openHAB oder was anderes wird - über Erfahrungen bzw. Empfehlungen würde ich mich freuen(!) - habe ich das Binding so adaptiert, das es ohne openHAB läuft. Derzeit verwende ich die Log-Dateien dieses "Stand-Alone Bindings" zur Speicherung der Werte. Eine Erweiterung für "richtige" Ausgabeformate bzw. Kanäle (Umsetzung auf KNX wurde hier mal in einem anderen Thread diskutiert) wäre aber von hier weg leicht machbar.

von energiesparhaus

  •  Becker
  •   Gold-Award
31.5.2020  (#381)


2020/2020053184242.png


2020/20200531692777.png


Erste Menüs nachgebaut emoji

1
  •  Becker
  •   Gold-Award
1.6.2020  (#382)
Bisher:


4
  •  chrismo
  •   Gold-Award
1.6.2020  (#383)
Sieht gut aus. Wie Uplink, nur mehr Funktionen, genauere Anzeige und weniger Ausfälle emoji

1
  •  JanRi
  •   Gold-Award
1.6.2020  (#384)
Richtig cool!

Meins zeigt zwar mehr oder weniger das gleiche an, aber bei weitem nicht so schön. Meine "GUI" für den lesenden Teil sieht immer noch so aus (hier beim Kühlen mit 2,871 KW):

AT: 21.8 IT: 23.0 AT_24h: 20.6
VL: 18.8 RL RL [Rücklauf]: 22.2 exVL: 18.4 VLsoll: 20.0 PCsoll: 19.1
Kond.VL: 18.6 Heissgas: 36.0 Sauggas: 24.9
SoleEin: 11.3 SoleAus: 15.6
BWoben: 46.1 BWunten: 46.0
WQ: 1 % WT: 40 % WT: 12.1 l/min
Kompr.: 0.0 Hz Ziel: 0.0 Hz Inverter: 20.8 C Relais: 6 Starts: 247
0.0 GM
Spreizung: -3.4 P_th: -2871 W
P_ko: 0.0 W P_pu: 48.3 P_el 48.3 AZ: -59.412
EZ Kompressor: 3344.3 KWh EZ Pumpen: 519.2 KWh
BW Kompressor: 4.668 KWh BW Pumpen: 0.179 KWh Modus Kuehlung
WMZ Heizung: 19095.8 KWh WMZ BW: 1506.9 KWh WMZ Kuehl: 1942.1 KWh
Betriebsstunden: 8350 Betriebsstunden BW: 376

(in Fixed Font ist das übersichtlicher als hier im Forum)

Änderungen mache ich per Kommandozeile emoji

1
  •  moef
  •   Gold-Award
1.6.2020  (#385)
@Becker
emoji Gratuliere!!

Wer macht Stangenware daraus? 


1
  •  jaydee73
1.6.2020  (#386)
Yo, sieht gut aus. +1 für Stangenware. emoji

1
  •  Becker
  •   Gold-Award
1.6.2020  (#387)
Danke, unterm Video ist der Download Link. Der erste hat es schon erfolgreich ausprobiert.

@JanRi du hattest mal was von Favoriten Register geschrieben was alle 0,5s aktualisiert wird ?!
Habe ich das richtig in Erinnerung ? Wenn ja wie definiert man das?

Werden die ganzen Werte bei mir desto mehr man macht desto weniger aktualisiert ?

Wenn Jemand weiß wie ich die Spreizung in Node Red und dann die thermische Leistung berechnen kann -> bitte melden, kriege es nicht hin.

1
  •  nibepi
1.6.2020  (#388)

zitat..
Becker schrieb: @JanRi du hattest mal was von Favoriten Register geschrieben was alle 0,5s aktualisiert wird ?!
Habe ich das richtig in Erinnerung ? Wenn ja wie definiert man das?

Werden die ganzen Werte bei mir desto mehr man macht desto weniger aktualisiert ?

 It's called LOG.SET same as the log procedure in the heatpump with the USB stick.
Just create a file called LOG.SET on a USB stick, name your registers, one per line (20 reg max) 
40004
40008
40012

etc...
Put the stick in the WPWP [Wärmepumpe] and start log. then end log. You're done.


1
  •  JanRi
  •   Gold-Award
1.6.2020  (#389)
Google einfach mal nach dem Nibe Modbus-Manager. Damit kannst du dir das LOG.SET auch zusammenklickern. Gesendet wird alle 2 Sekunden, also 0,5 Hz.

Vorsicht! Es gehen 20 Register mit 16 Bit rein. Wenn du eins mit 32 dabei hast, dann zählt das doppelt. Also nimm da die GM in 16 Bit, das reicht vollkommen aus.

Ich habe da alles drin, was ich schnell brauche. Den Rest (15 Register) frage ich zyklisch ab, so dass alle 20 Sekunden eine Anfrage gestellt wird, also jeder Wert alle 5 Minuten.

Zusätzlich kippe ich mit einem Python-Script noch die per Modbus ausgelesenen Werte meiner Smartmeter ins MQTT, so dass ich die Echtzeit-AZ berechnen kann.

Zu NodeRed kann ich dir leider nicht helfen.

1
  •  Becker
  •   Gold-Award
2.6.2020  (#390)
Ok danke, die Frage war eigentlich darauf bezogen ob mein "Programm" bzw. die Werte die ich abfrage langsamer werden, desto mehr ich da rein packe.
Auf der ersten Seite frage ich ja schon 18 Werte ab!
Ist das Abfragen schädlich ? (Ist ja kein Schreibzugriff oder?)
Habe auch nichts gefunden wo man die Häufigkeit/Frequenz der Abfrage definieren kann.

---

Thermische Leistung klappt nun.

Was hat es mit den Registern auf sich:
43141 - compr. in power","info":"The power delivered from the inverter to the compressor"
43147 -Compr. in current","info":"The current delivered from the inverter to the compressor"

Leistung die der Inverter an den Kompressor ab gibt ?
Strom von einer Phase die in den Kompressor geht oder Strangstrom ?

43375",compr. in power mean","info":"Mean power delivered from the inverter to the compressor. Mean is calculated every 10 seconds."
Durchschnittliche Leistung ?

Jedenfalls ist der letzte Wert immer höher und passt ganz gut zu dem gemessenen Wert von meinen Eltako Zähler.

Ich könnte so einfach den COP live ausrechnen - daher die Frage.

---

Gibt es Register für die passive Kühlung -> Vorlauftemperatur berechnet z.B. finde ich nicht.

Was ich auch noch suche ist die VLT beim heizen zu erhöhen um +1K oder +2K.



1
  •  JanRi
  •   Gold-Award
2.6.2020  (#391)

zitat..
Becker schrieb: Ok danke, die Frage war eigentlich darauf bezogen ob mein "Programm" bzw. die Werte die ich abfrage langsamer werden, desto mehr ich da rein packe.

 Die Werte aus LOG.SET "kosten" gar nichts. Die werden alle 2 Sekunden gesendet und stehen zur Verfügung. Da würde ich alles reinpacken, was ich oft brauche.


zitat..
Becker schrieb: Ist das Abfragen schädlich ? (Ist ja kein Schreibzugriff oder?)


Nein. Es dauert aber. Man kann alle 2 Sekunden einen Wert abfragen. Das hängt damit zusammen, dass die Nibe alle 2 Sekunden das Lesetoken schickt, auf das hin man EINE Anfrage stellen kann. 

Es läuft letztlich grob vereinfacht so:

Alle 2 Sekunden wird folgender Zyklus ausgeführt:

WPWP [Wärmepumpe] schickt alles aus LOG.SET
WPWP [Wärmepumpe] schickt Lesetoken
Modbuseinheit (oder NibePi) KANN eine Anfrage schicken
Wenn Anfrage, dann Antwort
WPWP [Wärmepumpe] schickt Schreibtoken
Modbuseinheit kann eine Schreibanfrage schicken

Es gibt noch ein paar mehr Nachrichten, aber das ist die Idee.

Soweit ich NibePi verstanden habe, werden die Lesewünsche in eine Warteschlange gepackt und beim nächsten Lesetoken wird einer rausgeschickt. Ob dein NodeRed jetzt warten muss, weiss ich nicht.

Ich habe einen Puffer für ALLE Daten (letztlich ein Array). Da landet der jeweils letzte Wert drin. Meine Anzeige liest aus dem Array und parallel wird jeder Wert, der nicht in LOG.SET ist, alle 300 Sekunden aktualisiert. Das reicht für Werte wie den WMZ normalerweise aus.

Den Kompresssorregistern konnte ich bislang nichts sinnvolles entlocken. Vermutlich wird da der Strom auf den Phasenleitungen des Kompressors angezeigt. Mit den bekannten ca. 90V passt das ganz gut.


zitat..
Becker schrieb: 43375",compr. in power mean","info":"Mean power delivered from the inverter to the compressor. Mean is calculated every 10 seconds."
Durchschnittliche Leistung ?

Jedenfalls ist der letzte Wert immer höher und passt ganz gut zu dem gemessenen Wert von meinen Eltako Zähler.


Das ist eine gute Erkenntnis... das teste ich heute abend auch mal aus.


zitat..
Becker schrieb: Gibt es Register für die passive Kühlung -> Vorlauftemperatur berechnet z.B. finde ich nicht.


Die haben wir:

47374: Kuehlstart

47417: WT-Pumpe PC

48459: WQ-Pumpe PC

42406: WMZ passive Kuehlung (selbst entdeckt emoji , geht aber erst mit FW 9xxx)

43024: Kühlstatus: 1=Kuehlung

44270: VL-soll Kühlen (das hast du ja gesucht)


zitat..
Becker schrieb: Was ich auch noch suche ist die VLT beim heizen zu erhöhen um +1K oder +2K.


Habe ich nicht gefunden bisher bzw. nicht gebraucht.

Was ich suche, sind grundsätzlich Register, mit denen man Einfluss nehmen kann, OHNE dass es zum Schreiben kommt wegen der Zyklen.

Ob geschrieben wurde, kannst du an der WPWP [Wärmepumpe] im Änderungsprotokoll sehen. Da kannst du auch leicht neue Register finden: Du betätigst die gewünschte Funktion direkt an der WPWP [Wärmepumpe] und schaust in das Änderungsprotokoll. Da steht nämlich die Registernummer drin.

2
  •  Becker
  •   Gold-Award
2.6.2020  (#392)
Danke Jan.


2020/20200602937405.jpg
Jo passt ganz gut, hab ich mal mit aufgenommen.

@nibepi
is this the log.set:


2020/20200602359455.jpg
but there is no register behind ?

1
  •  Becker
  •   Gold-Award
2.6.2020  (#393)
42406: WMZ passive Kuehlung (selbst entdeckt <img id="em_smile" src="../ressources/1x1.png"> , geht aber erst mit FW 9xxx)

@JanRi 
da kommt bei mir nix



2020/20200602345274.png


2020/20200602190506.png

kommen 50V hin bei 20Hz  emoji



1
  •  JanRi
  •   Gold-Award
2.6.2020  (#394)

zitat..
Becker schrieb: @JanRi  da kommt bei mir nix

 Welche FW?

Versuch mal 40769. Da steht bei mir das gleiche drin.

Moment!

Wenn nichts kommt, dann kann das auch daran liegen, dass das Register nicht in der JSON-Datei steht. NibePi fragt nur ab, was es kennt. Das müsstest du dann ergänzen (Datentyp u32, Faktor 10).

Mein Eintrag:

{"register":"42406","factor":10,"size":"u32","mode":"R","titel":"energy meter passive cooling","info":"","unit":"","min":"0","max":"0"}


zitat..
Becker schrieb: kommen 50V hin bei 20Hz 

Ich meine mich an etwa 90V zu entsinnen, die auf dem Kompressor stehen. Von daher kann es gut sein, dass der Phasenstrom die SUMME der drei Phasen darstellt, denn dann würde das in deinem Beispiel mit den 90V recht gut passen.

Die Spannung sollte konstant sein, der Kompressor wird ja über die Frequenz geregelt.




1
  •  Yogi43
2.6.2020  (#395)
Wenn wir gerade schon beim Ergänzen von Registern sind - kann mir jemand sagen, wie man in dem Addon nibeheatpump von openHAB weitere Register für die WPWP [Wärmepumpe] F1245 ergänzen kann?

Interessieren würden mich z.B.:
- 48043 Aktivierung Urlaubseinstellung (on=10, off=0)
- 48046 Absenkung Kurve Urlaub
- 48047 Modus Wasser Urlaub (Aus=-1, Spar=0, Normal=1, Luxus=2)
- 49008 DM diff start source Prio 2
- 49009 DM start source Prio 1

Vermutlich nur über die Anpassung der entsprechenden Listen in git - oder gibt es noch einen anderen Weg weitere Register auszulesen, die nicht im Umfang des Addons enthalten sind?

1
  •  hartmut
2.6.2020  (#396)
Welches Register ist Thermische Leistung und welches Inverter Durchschnitt Leistung? Ich möchte den COP berechnen

1
  •  chrismo
  •   Gold-Award
2.6.2020  (#397)

zitat..
Yogi43 schrieb: Vermutlich nur über die Anpassung der entsprechenden Listen in git

Ja, anders wird das leider nicht gehen, da das Binding überprüft, ob das Register bekannt ist.

Das Anpassen des Codes ist einfach. Ich weiß aber nicht, wieviel Aufwand dann das Kompilieren ist (wegen der Abhängigkeiten). Das Verwenden des eigenen Moduls ist dann auch wieder einfach. Habe eine Zeit lang das (vorkompilierte) 2.5er Binding in meiner 2.4er Installationen laufen gehabt. Da muss nur dir JAR-Datei ins richtige Verzeichnis kopiert werden.

Am einfachsten wäre wohl die gepatchte Sourcecode-Datei oder alternativ eine Beschreibung der fehlenden Register (Nr, Name, Datentyp, Faktor) im openHAB Forum zu posten und zu hoffen, dass es der Maintainer aufnimmt.

1
  •  Becker
  •   Gold-Award
2.6.2020  (#398)

zitat..
JanRi schrieb:

Ob geschrieben wurde, kannst du an der WPWP [Wärmepumpe] im Änderungsprotokoll sehen. Da kannst du auch leicht neue Register finden: Du betätigst die gewünschte Funktion direkt an der WPWP [Wärmepumpe] und schaust in das Änderungsprotokoll. Da steht nämlich die Registernummer drin.

Beste Tipp überhaupt emoji - so findet man alles schnell.


zitat..
hartmut schrieb: Welches Register ist Thermische Leistung und welches Inverter Durchschnitt Leistung? Ich möchte den COP berechnen

Thermische Leistung habe ich berechnet, weiß nicht ob es dafür ein Register gibt.
Inverter 43375.


zitat..
Moment!

Wenn nichts kommt, dann kann das auch daran liegen, dass das Register nicht in der JSON-Datei steht. NibePi fragt nur ab, was es kennt. Das müsstest du dann ergänzen (Datentyp u32, Faktor 10).

das erklärt es, nur wo diese Datei liegt und ob ich da drin rum schreiben darf weiß ich nicht.

P.S. sehe gerade:
42441","factor":10,"size":"u32","mode":"R","titel":"Heat Meter - Cooling Cpr - Total system","info":"Accumulated energy production as calculated by the heat meter,

den probiere ich mal aus
Edit: ach ne ist Kompressor

1
  •  nibepi
2.6.2020  (#399)

zitat..
Becker schrieb: but there is no register behind ?

A unamed input node outputs every register.
If you enable log.set in your WPWP [Wärmepumpe] it just works in NibePi. The registers will get updated every 0,5 seconds and are removed from the regular slow que.
So there is no additional config with log.set


1
  •  JanRi
  •   Gold-Award
2.6.2020  (#400)

zitat..
Becker schrieb: das erklärt es, nur wo diese Datei liegt und ob ich da drin rum schreiben darf weiß ich nicht.

 Auf RW schalten (mount -o remount,rw /) und dann die Daten F1155.json (oder F1255.json) bearbeiten. Wo sie bei der 1.1 liegt, weiss ich nicht, aber am besten einfach danach suchen:

find . | grep json 

...und dann die richtige nehmen.

Mit mount -o remount,ro / wieder zurück auf Readonly. Falls Permission denied, dann vorher root werden (sudo bash oder sudo vor jedes Kommando).


1
  •  nibepi
2.6.2020  (#401)

zitat..
JanRi schrieb: Auf RW schalten (mount -o remount,rw /) und dann die Daten F1155.json (oder F1255.json) bearbeiten. Wo sie bei der 1.1 liegt, weiss ich nicht, aber am besten einfach danach suchen:

 /home/pi/.node-red/node_modules/nibepi/models/


1


Beitrag schreiben oder Werbung ausblenden?
Einloggen

 Kostenlos registrieren [Mehr Infos]


next