» Diskussionsforum » Energie- und Haustechnik-Forum

DIY Alternative zu Nibe Modbus Modul

19 Beiträge | letzte Antwort 11.2.2019 | erstellt 29.1.2019
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 WP übertragen werden.

4) Das Modbus Modul in der WP 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 WP 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 WP 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.

 
29.1.2019 23:31
Cooler Thread, ich hoffe, da kommt noch viel zusammen! Kann zu openHAB nix sagen (schonmal interessenshalber vor Monaten angeschaut aber noch kein Haus dazu , wäre aber geplant) aber die Empfehlung Pro Arduino, die RasPis fressen regelmäßig SD-Karten, und der zusätzliche Wartungsaufwand muss nicht sein.
29.1.2019 23:39
Hier noch ein paar Infos zur Hardware bzw. Kosten:
- Arduino Uno, ca. 7 Eur (Klone) bis 25 Eur
- Ethernet Shield (W5100 Ethernet), ca. 8 bis 20 Eur
- 3.3V/5V TTL to RS485 Converter Board, ca. 5 Eur
- 12V-5V Step Down Converter, ca. 5 Eur

DIY Alternative zu Nibe Modbus Modul

Und die empfangenden Daten (so wie sie das openHAB Binding loggt) sehen so aus (Timestamps jeweils weggelassen).
40072:BF1 Flow = 16.8
40008:BT2 Supply temp S1 = 33.6
40012:EB100-EP14-BT3 Return temp = 27.0
40013:BT7 Hot Water top = 46.7
40015:EB100-EP14-BT10 Brine in temp = -1.0
40016:EB100-EP14-BT11 Brine out temp = -4.6
...

Also eigentlich schon perfekt zum Visualisieren bzw. die weitere Verarbeitung geeignet.
30.1.2019 7:50
ist das aus den Thread nachgebaut=?

https://knx-user-forum.de/forum/%C3%B6ffentlicher-bereich/knx-eib-forum/diy-do-it-yourself/1309369-nibe-gw-ohne-openhab/page3

Man kann das Openhab auch auf einer Synology laufen lasen. ist eventuell sicherer als am PI und dort könnte man die Daten dann auch den KNX schicken zu einer anderen Visu


30.1.2019 7:51


vestra schrieb: Pro Arduino


 Wäre überhaupt interessant, weil der hat schon alles drauf und dabei und man muss ihm nur anstöpsln...
30.1.2019 8:19
Hallo,

ob ein RPi SD-Karten frisst, kommt stark drauf an, welche Karten man nimmt und was man so damit tut. Ansonsten stimme ich aber zu, dass ein RPi dafür nicht wirklich geeignet ist, denn die Nibe-Seite braucht Echtzeit-Reaktionen, deren Sicherstellung bei einem RPi um so schwerer wird, desto mehr er sonst noch so tut. Von daher ist der Arduino als kleines System, das nur genau das tut und die Daten dann per UDP rausschickt, dafür die beste Lösung.


chrismo schrieb: 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.


Das ist genau das, was ich auch machen will. Kannst du die Anpassungen dokumentieren oder ist das so trivial, dass es der Aufwand der Dokumentation den des Machens übersteigt?

Ich will ohne openHAB usw. arbeiten und lieber eigene Software einsetzen, weil das beliebige Freiheiten lässt. Da ist ein kleines Programm, das letztlich UDP reinbekommt und das in eine Datei oder auf einen FIFO schreibt, perfekt.

Geht mit der angepassten Lösung eigentlich auch die Gegenrichtung, also Schreibzugriffe in das Nibe-System? Das war ja, wenn ich mich an die Threads richtig erinnere, noch experimentell oder nicht vorhanden. 

Viele Grüße,

Jan
30.1.2019 8:27
Wenn es nur ums Lesen geht, kann man auch einen rpi zero per OTG in die Nibe stöpseln und dann die per Log aufgezeichneten Daten per WLAN weiterleiten.

Freut mich, dass es hier noch andere User gibt, die ähnliche Ziele verfolgen

Viele Grüße
Maik
30.1.2019 8:54


SMiak schrieb: Wenn es nur ums Lesen geht, kann man auch einen rpi zero per OTG in die Nibe stöpseln und dann die per Log aufgezeichneten Daten per WLAN weiterleiten.

Freut mich, dass es hier noch andere User gibt, die ähnliche Ziele verfolgen

Viele Grüße
Maik


 also lesen is ma zu wenig... :=)... und ja keine Cloud Lösung was was kost )
30.1.2019 12:25
ich mag Uplink, aber die Daten sind mir zu ungenau, da z.T. nur in 0,5 K aktualisiert wird
30.1.2019 15:35


uzi10 schrieb: ist das aus den Thread nachgebaut=?


Vom Prinzip ist es das gleiche, was die HW angeht. Sind ja alles Standard-Komponenten, die man so bei ebay und co bekommt. Die Software, die dort geschrieben wurde, ist halt nicht verwendbar. Nachdem aber eh schon alles in openHAB vorhanden ist, war es naheliegender einfach das Binding zu nehmen und zu adpatieren.


JanRi schrieb: Ansonsten stimme ich aber zu, dass ein RPi dafür nicht wirklich geeignet ist, denn die Nibe-Seite braucht Echtzeit-Reaktionen


Es ist ja nicht nur das. Im Betrieb wird der RPi schon funktionieren (ich glaube das Timeout der Nibe ist recht hoch). Aber einen RasPi will man dann doch irgendwann mal neu starten und da dann dauert zuerst das Modbus Modul in der WP zu deaktivieren (was man dann sicher irgendwann mal vergisst) ist einfach mühsam.


JanRi schrieb: Das ist genau das, was ich auch machen will. Kannst du die Anpassungen dokumentieren oder ist das so trivial, dass es der Aufwand der Dokumentation den des Machens übersteigt?


Ich muss den Code noch etwas verbessern. Derzeit ist z.B. die Konfiguration noch direkt im Source Code. Ich habe auch die Funktionen für das manuelle Lesen und Schreiben von Registern noch nicht vom originalen Binding übernommen. Dafür müssteich mir noch überlegen, wie man die entsprechenden Befehle triggert. Ich denke, eine einfache HTTP REST API würde sich da anbieten. Wenn das so halbwegs steht, kann ich den Code gerne in ein öffentliches Repository stellen.
30.1.2019 18:37
Hi,


chrismo schrieb: Dafür müssteich mir noch überlegen, wie man die entsprechenden Befehle triggert. Ich denke, eine einfache HTTP REST API würde sich da anbieten.


Dein Bindingersatz läuft ja auf dem empfangenden Rechner. Wäre da nicht ein simples CLI-Programm am einfachsten? Es schreibt auf STDOUT (oder Datei) alles raus, was es bekommt und nimmt alles, was auf STDIN reinkommt, als Kommando. Mit Dateiumlenkungen kann man daraus dann ja bauen, was man will... man kann es ganz simpel per Hand steuern, kann einfache Befehle per Skript reinkippen oder halt ein Modul davorsetzen, das eine beliebige API realisiert.

Mache ich aktuell mit meiner Lichtsteuerung sehr ähnlich... Fifos sind da auch sehr praktisch für "keep it simple"-Lösungen.

Viele Grüße,

Jan
30.1.2019 18:44
Super Thread, danke!

Da werde ich mich auch mal einklinken 
30.1.2019 20:20
Wie kommuniziert der arduino mit einer visu? Wäre ev mqtt möglich oder irgendein Medium damit ich es in eine Wago oder ind Edomi eimbinden kann?.. könnt ihr da was bauen. Modbus tcp wäre auch hilfreich
30.1.2019 23:57
Der Arduino schreibt alle empfangenen Daten per UDP an eine definierte IP Adresse. Die Werte werden dabei 1:1 so weitergeleitet, wie sie von der Nibe kommen. D.h. man muss sie erst dekodieren, bevor man sie anzeigen kann. Das übernimmt der zweite Teil des Bindings, der wohl auf dem Heimautomatisierungsserver laufen wird.

Ich habe heute auch das manuelle Lesen und Schreiben der Werte in den Code eingebaut. Und da bin ich schon auf was gestoßen, was mich im Hinblick auf schreibenden Zugriff sehr vorsichtig werden lässt: als Testwert habe ich die Gradminuten verwendet, für die es sowohl ein 16 bit Register (40005) als auch ein 32 bit Register (40940) gibt. Beim Auslesen des 16bit Registers ist ein falscher Wert ausgelesen worden. Keine Ahnung warum, weil der Code sollte passen (andere 16bit Register wurden richtig ausgelesen). D.h. Schreiben auf dieses Register ist wohl eher nicht zu empfehlen. Beim 32bit Register ist der richtige Wert ausgelesen worden. Ich habe dann auch erfolgreich einen Wert in das Register geschrieben und die Gradminuten wurden entsprechend verstellt. Also grundsätzlich funktioniert schreiben auch, sollte aber mit Vorsicht verwendet werden.


JanRi schrieb: Dein Bindingersatz läuft ja auf dem empfangenden Rechner. Wäre da nicht ein simples CLI-Programm am einfachsten? Es schreibt auf STDOUT (oder Datei) alles raus, was es bekommt und nimmt alles, was auf STDIN reinkommt, als Kommando.


Ja, das würde natürlich funktionieren und ist wohl auch naheliegender. Da ich aber beruflich sehr viel mit Netzwerken zu tun habe, denke ich auch bei lokaler Kommunikation sofort an irgendein Netzwerkprotokoll. Also CLI-Schnittstelle ist ok, solange sie über TCP und Telnet funktioniert Wobei in Linux ja dabei nicht viel Unterschied ist (dank Tools wie curl, oder netcat).
31.1.2019 5:59
bookmark
1.2.2019 12:56


chrismo schrieb: Wenn das so halbwegs steht, kann ich den Code gerne in ein öffentliches Repository stellen.


 Darüber würde ich mich sehr freuen und beteilige mich gerne bei der Weiterentwicklung!
3.2.2019 1:26
Die erste Version von "NibeStar (Nibe heat pump STand Alone handleR)" ist online! 

Der Code und eine Doku ist hier zu finden: https://bitbucket.org/crnv/nibestar/

Ein ausführbares JAVA JAR ist hier herunterzuladen: https://bitbucket.org/crnv/nibestar/downloads/

Das ganze ist die Arbeit der letzen paar Tage. Dementsprechend sieht auch der Code bzw. die Doku aus   Das Projekt zielt also erstmal auf Java-versierte User bzw. Entwickler ab, die wissen wie man ein JAR ausführt bzw. auch direkt im Code nachsehen können, wie das ganze funktioniert. Der Sourcecode selbst, ist also erstmal auch die beste Doku. Ich hoffe durch Austausch hier und Mithilfe durch andere, wird sich das bessern.
3.2.2019 6:45
geht scharf! Vielen Dank.
10.2.2019 13:07


chrismo schrieb:
 Und da bin ich schon auf was gestoßen, was mich im Hinblick auf schreibenden Zugriff sehr vorsichtig werden lässt: als Testwert habe ich die Gradminuten verwendet, für die es sowohl ein 16 bit Register (40005) als auch ein 32 bit Register (40940) gibt. Beim Auslesen des 16bit Registers ist ein falscher Wert ausgelesen worden. Keine Ahnung warum, weil der Code sollte passen (andere 16bit Register wurden richtig ausgelesen). D.h. Schreiben auf dieses Register ist wohl eher nicht zu empfehlen.


 wäre es denkbar bei der Kommunikation zwischen WP und eines originalen Nibe ModBus-Modules mitzuhorchen um die korrekten Zugriffsbefehle/Register zu sehen?
11.2.2019 16:47
Klar, das ist einfach machbar, wenn man ein Modbus40 Modul hat. Wobei das Protokoll eigentlich schon bekannt ist und es, wie oben gesagt, bei allen anderen getesteten Werten funktioniert hat. Ich tippe da auf irgendein anderes Problem. Vielleicht kann ja jemand, der das Nibe Binding verwendet mal berichten, ob das ebenfalls auftritt.



Beitrag hinzufügen oder Werbung ausblenden?
Einloggen

 Kostenlos registrieren [Mehr Infos]

« Energie- und Haustechnik-Forum