« Heizung, Lüftung, Klima  |

DIY Alternative zu Nibe Modbus Modul

 
Teilen: facebook    whatsapp    email
Zusammenfassung anzeigen (Beta)
 1  2 ... 3 ... 16  17  18  19 ... 20 ... 49  50  51 
  •  chrismo
  •   Gold-Award
29.1.2019 - 29.11.2024
1.010 Antworten | 62 Autoren 1010
127
1137
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 WP [Wärmepumpe] übertragen werden.

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

  •  nibepi
24.5.2020  (#341)

zitat..
JanRi schrieb: The Pi Zero consumes MUCH less power.

 I forgot that he had a 3B+, only the rpi zero is a good match for the 12v power.


zitat..
JanRi schrieb: 40769 contains: 166;74;0;0

166+74*256=19110

Currently, cooling is not active but I will monitor that register once scanning is finished. At the moment, I guess it is rather unlikely that such a register contains exactly the known value of the energy meter I'm searching for withou being this energy meter.

Now, we have another thing Uplink cannot do

Great findings! This is truly great stuff!




1
  •  Yogi43
24.5.2020  (#342)
Now I can report success in gathering data from my F1245 - NibePI is working, but I'm actually using NibeGW deployed on the NibePI. NibeGW is working correct if NibePi is started first. That proofs that there is some initialisation problem with NibeGW on the RPi as stated by @JanRi. Therefore I'm awaiting my Prodino MKR.

Here is an example of a chart in HABpanel showing the production of warm water:


2020/20200524383054.jpg

Does the Nibe Binding in openHAB work correctly with 32-bit registers? I saw that the registers 44299 and 44301, containing the second 16 bit off the energy meter, are not analyzed.
Therefore I only use 44298 (HW) and 44300 (Heat) and use a rule to calculate the correct value.

I have to say that NibePi shows the correct values for these registersemoji But now I have already ordered a Prodino for NibeGW.

1
  •  nibepi
24.5.2020  (#343)

zitat..
Yogi43 schrieb: I have to say that NibePi shows the correct values for these registers But now I have already ordered a Prodino for NibeGW

I had that problem when I was using nibegw and openhab. I thought that they were resolved? 
However back then I got tired of that and some random spikes in the values. So I built NibePi from the scratch. 

1
  •  chrismo
  •   Gold-Award
24.5.2020  (#344)

zitat..
Yogi43 schrieb: saw that the registers 44299 and 44301, containing the second 16 bit off the energy meter, are not analyzed.

NibeGW or actually the NibeHeatpumpBinding in openHAB had some wrong register definitions in earlier versions, I think they are fixed now. I also log 32bit registers with it, e.g 44300 for heat meter.

1
  •  Becker
  •   Gold-Award
24.5.2020  (#345)
ich werde meinen jetzigen RPi für NibePi nehmen und den nicht in die WP WP [Wärmepumpe] integrieren.

Kann ich einfach 2 Adern vom Modbus (A,B) 1-2m raus führen?
Oder müssen es 3 Adern (mit Masse) sein ? twisted pair nötig ?
Laut der Seite von NibePi ist das nicht nötig, aber da geht die Leitung auch nur wenige cm.

1
  •  JanRi
  •   Gold-Award
24.5.2020  (#346)

zitat..
Yogi43 schrieb: I saw that the registers 44299 and 44301, containing the second 16 bit off the energy meter, are not analyzed.
Therefore I only use 44298 (HW) and 44300 (Heat) and use a rule to calculate the correct value.

 44299 and 44301 are WRONG. 44298 (HW) and 44300 (Heat) are correct and should be used as 32 bit unsigned int divided by 10. Nibegw delivers the right packet if the right register is requested so the problem seems to be openhab.

With respect to my experiments: Scan is now at 49000, so tomorrow it will be ready.

The register (42406 and also 40769) I found for energy meter for passive cooling works as expected. I enabled PC for some minutes and got 1911,1 and 1911,2 until I stopped that (its too cold for cooling).

In the higher part of the scanned range we have many registers with no answer at all. Many others read all zero.


zitat..
Becker schrieb: Kann ich einfach 2 Adern vom Modbus (A,B) 1-2m raus führen?
Oder müssen es 3 Adern (mit Masse) sein ? twisted pair nötig ?


Ich würde es mit Masse machen. RS485 ist differentiell, aber wenn es irgendeine doofe Nullpunktverschiebung gibt, dann ist es besser, wenn der Pi kaputt geht und nicht die WP WP [Wärmepumpe]. Ich habe etwa 1,5m Kabel zwischen WP WP [Wärmepumpe] und dem Pi, der quasi neben der WP WP [Wärmepumpe] mit einem Kabelbinder an einem Kabelkanal befestigt ist. Ich habe dafür drei der vier Adern des grünen KNX-Kabels genommen. Das lag halt rum. Geht prima ohne jedes Problem.




1
  •  nibepi
24.5.2020  (#347)

zitat..
Becker schrieb: Kann ich einfach 2 Adern vom Modbus (A,B) 1-2m raus führen?
Oder müssen es 3 Adern (mit Masse) sein ? twisted pair nötig ?
Laut der Seite von NibePi ist das nicht nötig, aber da geht die Leitung auch nur wenige cm

I do also recommend ground as the third cable. NibePi as rpi zero is powerd from the heatpump and that make it the same power potential. If you power the Pi from another source the potential might differ and in worst case break something.

1
  •  Yogi43
24.5.2020  (#348)

zitat..
JanRi schrieb: 44299 and 44301 are WRONG. 44298 (HW) and 44300 (Heat) are correct and should be used as 32 bit unsigned int divided by 10. Nibegw delivers the right packet if the right register is requested so the problem seems to be openhab.

 As you can see in the screenshot, the second 16 bits of registers 44298 (AD 0A) and 44300 (AD OC) are send in the registers 44299 (AD 0B) and 44301 (AD 0D):


2020/2020052453763.png

For 44298 it is 5521 in AD 0A and 0002 (times 65536) in AD 0B - this in sum gives me divided by ten 13659 kWh (this is the correct value also shown on the HP).  So the problem is in openHAB - the reason could be the older version 2.5.2 on my Synology DS218.

As you say, the values should be only adressed by using the registers 44298 and 44300.

1
  •  JanRi
  •   Gold-Award
24.5.2020  (#349)

zitat..
Yogi43 schrieb:  As you can see in the screenshot, the second 16 bits of registers 44298 (AD 0A) and 44300 (AD OC) are send in the registers 44299 (AD 0B) and 44301 (AD 0D):

I know. During my scan of ALL registers, I got several of these cases. I guess that the internal memory is organized as 16 bit. Thus, 32 bit registers require two of them. This can be seen when looking at the valid register numbers - 32 bit registers have one address missing afterwards. Packets of type 106 always contain 32 bit so this might be the side affect of "unaligned" accesses. 44299 will work but only up to 6535,5 KWh. After this, you need bit number 17 which is missing emoji


zitat..
Yogi43 schrieb: So the problem is in openHAB - the reason could be the older version 2.5.2 on my Synology DS218.


Do you have the sources? That should be a very simple fix.




1
  •  chrismo
  •   Gold-Award
25.5.2020  (#350)

zitat..
Yogi43 schrieb: the problem is in openHAB - the reason could be the older version 2.5.2 on my Synology DS218

That is actually a rather recent version that should work. I had some problems with some older 2.4 versions. Since 2.5 everything works.

Here is the code for the model definition for F1155/F1255: https://github.com/openhab/openhab-addons/blob/2.5.x/bundles/org.openhab.binding.nibeheatpump/src/main/java/org/openhab/binding/nibeheatpump/internal/models/F1X55.java

44300 is defined as a 32-bit register there. Should be ok. As said openHAB gives the correct value in my case (value is also >6553kWh, so stored in two registers). But I am not using the docker container.

You could set the logging level of the heatpump binding to verbose using the openHAB console. I think all register read requests are logged then, to check what is actually read.


 


1
  •  jaydee73
25.5.2020  (#351)
Hallo zusammen,

da hier ja gerade etwas Dynamik wegen der 1.1 reinkommt, frage ich auch nochmal was in die Runde:

Ich möchte bei mir ja gerne keinen Pi dafür nutzen, sondern das in einer Linux-VM (Proxmox auf einem Intel NUC) laufen lassen. Node-Red und MQTT sind bereits installiert. Ein USB-RS485 ist ebenfalls installiert und an die VM hochgereicht (Gerät ttyACM0).

Meine Fragen:
1)
Lt. @nibepi Github (https://github.com/anerdins/node-red-contrib-nibepi) kann ich das via "npm install --save anerdins/node-red-contrib-nibepi#master" in meiner VM installieren. Korrekt?

2)
Ich verstehe das so, dass der MQTT-Broker dabei mitinstalliert wird. Das ist ja bei mir schon geschehen. Sollte keine Probleme geben, oder?

3)
Muss ich mit setserial dann noch was machen? Wenn ja, auf Kommandozeile oder innerhalb von NodeRed?

4)
Soll/Muss ich Ground berücksichtigen? Wenn ja, was verbinde ich womit? Ich würde vermuten, PIN9 von Platine AA3-X4 mit Ground auf dem USB/RS485-Adapter? Und dazu natürlich noch A+B. Korrekt?

Tausend Dank für etwas Hilfestellung.

Gruß,
Stefan


1
  •  JanRi
  •   Gold-Award
25.5.2020  (#352)

zitat..
jaydee73 schrieb: Ein USB-RS485 ist ebenfalls installiert und an die VM hochgereicht (Gerät ttyACM0).

 Das könnte in einer VM-Umgebung scheitern wegen der Echtzeitanforderungen an das ACK. Müsste man testen. Ansonsten meinen Weg gehen: nibegw auf einem Pi oder Arduino und dann per UDP zur VM und da auf MQTT umsetzen. Bei mir läuft auf dem Pi nur nibegw. Alles andere läuft auf dem Server.


zitat..
jaydee73 schrieb: Muss ich mit setserial dann noch was machen? Wenn ja, auf Kommandozeile oder innerhalb von NodeRed?


Brauchst du nicht. Nibepi macht das vernünftig.


zitat..
jaydee73 schrieb: Soll/Muss ich Ground berücksichtigen? Wenn ja, was verbinde ich womit? Ich würde vermuten, PIN9 von Platine AA3-X4 mit Ground auf dem USB/RS485-Adapter? Und dazu natürlich noch A+B. Korrekt?


Siehe oben. Ich würde GND mit dem GND des USB-Adapters verbinden. Der Anschluss für das Modbus-40 hat 4 Pins. 12V brauchst du nicht, A, B und GND wie von dir genannt verbinden.




1
  •  jaydee73
26.5.2020  (#353)
Danke, Jan.

Datt fluppt aber alles nicht so wie ich mir das gedacht habe. Ob es jetzt an der VM liegt, oder daran, dass es ein unpriviligierter Container ist, oder am nicht richtig durchgereichten USB-Adapter, oder weil ich den NibePi-Flow nicht richtig implementiert habe....ich weiß es nicht. Möchte aber auch nicht Mengen an Zeit verbrennen, um der Ursache auf den Grund zu gehen.

Fazit: Habe mir jetzt die rpi-Zero Komponenten bestellt und mache es wie von nibepi empfohlen als integrierte Lösung innerhalb der WP WP [Wärmepumpe]

Umgesetzt wird es dann von Edomi und von da in die Visu und/oder in die KNX-Welt.

1
  •  jaydee73
26.5.2020  (#354)
Muss eigentlich der beim RS485-Modul mitglieferte Endwiderstand verlötet werden? Lt. Spezifikation wäre es ja notwendig, weil der pi Zero das "Ende des Bus" darstellt. Auf den Bildern im Github-Repo ist es nicht wirklich zu erkennen...

1
  •  nibepi
26.5.2020  (#355)

zitat..
jaydee73 schrieb: Muss eigentlich der beim RS485-Modul mitglieferte Endwiderstand verlötet werden? Lt. Spezifikation wäre es ja notwendig, weil der pi Zero das "Ende des Bus" darstellt. Auf den Bildern im Github-Repo ist es nicht wirklich zu erkennen...

 On such short distance it dosent matter. If you have more components (RMU40 etc) on that bus you should not use the Endwiderstand. 

2
  •  nibepi
26.5.2020  (#356)

zitat..
jaydee73 schrieb: Fazit: Habe mir jetzt die rpi-Zero Komponenten bestellt und mache es wie von nibepi empfohlen als integrierte Lösung innerhalb der WP WP [Wärmepumpe].

 It's the most stable and advanced solution.
NibeGw on a arduino is very stable. But if your main automation platform fails or the network fails, your heatpump will be left with the last known parameters.
With nibepi it can fall back and always have access to the modbus values. 


1
  •  JanRi
  •   Gold-Award
26.5.2020  (#357)

zitat..
nibepi schrieb: But if your main automation platform fails or the network fails, your heatpump will be left with the last known parameters.

 This only matters if you automatically write or remotely control the heat pump.

However, this should only be done in a limited way anyway due to the limited number of write cycles (see the other thread for Nibes answer to that question).


1
  •  Yogi43
26.5.2020  (#358)

zitat..
chrismo schrieb:
You could set the logging level of the heatpump binding to verbose using the openHAB console. I think all register read requests are logged then, to check what is actually read.

 So, hier aus dem Logging in openHAB für die Register 44298 und 44300:


2020/20200526202330.png

Es werden also die Werte als 32-bit Register erkannt, die Register 44299 und 44301 sind aber unbekannt.

Ich verwende eine Synology DS218 - diese unterstützt kein Docker. Installiert habe ich openHAB über ein Packet - Basisverzeichnis ist /volume1/@appstore/openHAB.

Kann mir jemand sagen, wo dort die Sourcen für das nibe-Binding abgelegt sind? Meine Suchen waren bislang erfolglos.

Das Nibe Heatpump Binding ist in Version 2.5.5 installiert

1
  •  hartmut
27.5.2020  (#359)

zitat..
nibepi schrieb: The register you are looking for is 47260. It's not in the official modbus documentation. But it has been found anyway. My final version of 1.1 will have that included in the register files.

Could I please get the entry for the parameter 47260 so that I can add the VVM320.json to me.
Hartmut

1
  •  nibepi
27.5.2020  (#360)

zitat..
hartmut schrieb: Could I please get the entry for the parameter 47260 so that I can add the VVM320.json to me.
Hartmut

My github "anerdins" should contain the latest fix with 47260 included. Look under rep nibepi

1
  •  Becker
  •   Gold-Award
27.5.2020  (#361)

zitat..
nibepi schrieb:

 It's the most stable and advanced solution.
NibeGw on a arduino is very stable. But if your main automation platform fails or the network fails, your heatpump will be left with the last known parameters.
With nibepi it can fall back and always have access to the modbus values.

 Is the NibePi 1.1 ROM 100% compatible with the Raspberryi Pi 3 (with LAN)  -> I´ll write Image on SD and finished?
(Zero has no LAN Interface)




1


Beitrag schreiben oder Werbung ausblenden?
Einloggen

 Kostenlos registrieren [Mehr Infos]


next