FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: matzefisi am 30 Juli 2014, 00:10:44

Titel: Integration von Nibe Wärmepumpen per RS485
Beitrag von: matzefisi am 30 Juli 2014, 00:10:44
Hallo zusammen,

ich grübele schon länger darüber, wie ich meine Heizung (Nibe Fighter 750 http://www.nibe.de/Produkte--Systeme/Abluftwaermepumpen/Systeme--Produkte/NIBE-F750/) an mein FHEM anbinden kann.

Bislang habe ich 3 Möglichkeiten zusammengetragen:

Kauf und Nachrüstung des Kommunikationsmodul MODBUS 40 (GLT-Modul)
Kauf und Nachrüstung der Niebe Uplink Funktion (Quasi ein LAN-Anschluss)
Auslesen und schreiben bestimmter Register über den internen RS485 Bus der einzelnen Komponenten der Heizung.

Möglichkeit 1 und 2 scheiden bei mir aus Kostengründen aus (500 €- 1000 €). Daher denke ich zur Zeit über Möglichkeit 3 nach.

Es haben anscheinend auch schon ein paar Leute probiert und auch Erfolge gehabt:
http://knx-user-forum.de/knx-eib-forum/19877-anbindung-modbus-nibe-5.html
https://github.com/openhab/openhab/wiki/Nibe-Heat-Pump-Binding
http://www.haustechnikdialog.de/Forum/p/1674654

Im Prinzip wird die Anbindung der Raumsteuerung "RMU 40" oder anderer Komponenten misbraucht. http://www.nibe.eu/nibedocuments/9103/031435-5.pdf

Ich möchte an dieser Stelle gerne mal wissen, wer von Euch ebenfalls eine Nibe Wärmepumpe (egal welches Modell) im Einsatz hat und ob ihr schon irgendetwas in Richtung FHEM Anbindung unternommen habt.

Vielen Dank schon mal und bis dahin

Matthias
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: uprinz am 18 September 2014, 18:52:35
Hallo Matthias,

ich habe eine Nibe F2025 mit einer Steuerung SMO 10 und würde auch die auch gerne in fhem einbinden. Wenigstens einige Werte "sehen" können.
Habe mich aber bisher noch nicht damit beschäftigt.

Viele Grüße

Uli Prinz
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: matzefisi am 24 September 2014, 07:51:10
Hallo Uli,

dann sind wir ja schon mal zwei. Ich bin aus Zeitgründen aber noch nicht wirklich weitergekommen.

MfG
Matthias
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: matzefisi am 02 Januar 2015, 23:25:08
Hallo zusammen,

mal ein kleines Update.

Ich habe es nun geschafft mich an den Bus der Heizung zu hängen und bekomme fleißig Daten von der Heizung geliefert. Allerdings stehe ich nun, wie andere vor mir auch, vor dem Problem, dass die Heizung auf Störung geht, wenn sie kein ACK von meinem Script geliefert bekommt. Ich habe auch bereits das NIBEGW vom OpenHAB projekt ausprobiert, allerdings gibt es dort auch die Probleme, dass das ACK wohl nicht sauber bei der Heizung ankommt. Ich werde auf jeden Fall weiterforschen.

MfG
Matthias
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 09 Februar 2016, 10:52:59
Hallo,

Matthias und ich habe in der letzten Zeit etwas weiter am Thema gearbeitet. Nun ist es wohl an der Zeit, unsere Ergebnisse vorzustellen. Herausgekommen sind zwei Module für FHEM, die Daten einer Nibe Wärmepumpe empfangen können. Aktuell ist es noch nicht möglich, die Nibe aktiv zu steuern.

Durch die FHEM Module wird ein Modbus 40 simuliert. Die Kommunikation läuft über den seriellen Anschluss der Wärmepumpe, das Protokoll ist RS485. Entsprechend muss die Wärmepumpe konfiguriert werden. Details über den Anschluss und die Parameter sind ganz gut im Installateurhandbuch des Nibe Modbus 40 beschrieben.

Die Module habe wir erst mal in GitHub (https://github.com/matzefisi/fhem-70_NIBE/tree/devio) abgelegt. Es sind die beiden Dateien 70_NIBE_485.pm und 71_NIBE.pm. Es sind 2 Module geworden, da sich die Kommunikation von der Wärmepumpe als recht zeitkritisch herausgestellt hat. Die getestete Installation ist daher so aufgebaut, dass ein Raspberry Pi direkt mit der Wärmepumpe verbunden ist. Der Raspi übernimmt dabei nur die Kommunikation mit der Wärmepumpe und trennt die einzelnen Nachrichten aus dem Datenstrom. Diese werden dann von der FHEM-Hauptinstallation per FHEM2FHEM gelesen und verarbeitet.

Das ReadMe beschreibt eine Beispielkonfiguration:

Fhem remote (connected to Nibe)
    physical module:
    define NibeWP NIBE_485 /dev/ttyAMA0

    logical module:
    define Nibe NIBE
    attr Nibe IODev NibeWP <-- will be set by Fhem automatically
    attr Nibe ignore 1 <-- otherwise messages will be parsed on remote Fhem too (time critical)


Fhem master
    physical module (dummy for FHEM2FHEM)
    define NibeWP NIBE_485 none
    attr NibeWP dummy 1


    FHEM2FHEM
    define Fhem_on_RPi FHEM2FHEM 192.168.2.47 RAW:NibeWP

    logical module
    define Nibe NIBE

Viele Grüße,
Matthias & Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: asydow am 07 Januar 2017, 13:38:58
Hi.
Bin über das KNX-Forum auf das Thema gestoßen, da ich schon länger eine Anbindung zu FHEM suche.
Ich würde das gerne an meiner VVM300 ausprobieren.
Eine Frage zur Sicherheit: wo ist pin1 wenn ich in die Buchse schaue (Kontakte oben)? Links?

Axel
Titel: Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 08 Januar 2017, 17:15:22
Zitat von: asydow am 07 Januar 2017, 13:38:58
Hi.
Bin über das KNX-Forum auf das Thema gestoßen, da ich schon länger eine Anbindung zu FHEM suche.
Ich würde das gerne an meiner VVM300 ausprobieren.
Eine Frage zur Sicherheit: wo ist pin1 wenn ich in die Buchse schaue (Kontakte oben)? Links?

Axel
Hallo Axel,

Ich bin mir nicht sicher, ob das Modul mit deiner VVM300 funktionieren kann. Das Modul simuliert ein Nibe Modbus 40 und muss auch so im Service-Menü in der Nibe angemeldet werden. Anschluss und Konfiguration ist entsprechend der Dokumentation vorzunehmen (http://www.nibe.de/nibedocuments/14059/031725-5.pdf (http://www.nibe.de/nibedocuments/14059/031725-5.pdf)). Hier gibt es aber keinen Verweis auf die VVM300. Ansonsten ist in der Dokumentation die Lage der Pins für alle unterstützten Geräte sehr schön aufgeführt.

Gruß vuffiraa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: asydow am 09 Januar 2017, 10:53:09
Laut https://knx-user-forum.de/forum/%C3%B6ffentlicher-bereich/knx-eib-forum/20371-anbindung-modbus-nibe/page2 (letzer Beitrag) kann die VVM300 das schon.
Das Display ist ein eingebautes RE10 und hat noch einen zweiten RJ45 Port an dem eine weitere RE10 angeschlossen werden kann.
Deswegen die Frage zum Pin1.
Ich habe mir mal einen USB-Adapter bestellt und werde es mal testen.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 10 Januar 2017, 19:20:36
Hallo Alex,

Das ist nicht die Variante, die das Modul hier umsetzt. Bei deiner Lösung wird mitgelesen, was auf dem Display angezeigt wird. Ein Modbus 40 ist ein separates Kommunikationsmodul.
Die Daten, die übertragen werden, unterscheiden sich zwischen den beiden Ansätzen.

Gruß
Vuffiraa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: asydow am 10 Januar 2017, 19:51:27
Hi Vuffiraa
Danke für die Info. Dann habe ich das falsch verstanden.
Wäre ja auch zu schön gewesen. Dann muss ich mir doch was eigenes überlegen.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: en3rgy@web.de am 14 November 2017, 21:54:36
Die Verkabelung auf Seite der NIBE ist nach Handbuch klar. Doch wie sieht es auf der Seite mit dem PI aus - Welche Lösung habt ihr verwendet?
Bin auf ein extra RS485 Shield gestoßen, doch wird dies dann auch angesprochen?
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 14 November 2017, 22:20:31
Zitat von: En3rGy am 14 November 2017, 21:54:36
Die Verkabelung auf Seite der NIBE ist nach Handbuch klar. Die wie sieht es auf der Seite mit dem PI aus - Welche Lösung habt ihr verwendet?
Bin auf ein extra RS485 Shield gestoßen doch wird dies dann auch angesprochen?

Auf der PI Seite habe ich dieses Linker Kit RS485 https://www.elv.de/linker-kit-raspberry-rs485-schnittstelle-fuer-raspberry-pi-a-b-b.html
Das Modul funktioniert aber wohl auch mit einen USB-RS485-Adapter am PI.
Die zu benutzende Schnittstelle ist Teil der Definition in Fhem.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: en3rgy@web.de am 15 November 2017, 07:13:46
Danke für die Info. In der Integrationsanleitung wird neben A und B auch 12V und GND verkabelt.  Ich gehe mal davon aus, dass der PI und die NIBE mindestens GND noch teilen?

Was hast du mit der 12V und der GND-Leitung gemacht?
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: matzefisi am 15 November 2017, 08:27:52
Hi zusammen,

ich habe es bei mir mit einem RS485 zu USB Adapter am Raspi realisiert. Die 12 V Versorgung habe ich nicht angeklemmt und GND meine ich auch nicht. Bin mir aber gerade nicht sicher. Was bei mir allerdings in der Vergangenheit massive Probleme verursacht hat, war die Kabellänge zwischen Heizung und Raspi. Die habe ich jetzt auf ca. einen Meter gekürzt und seit dem läuft es ohne Probleme.

MfG
Matthias
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 15 November 2017, 08:29:23
Zitat von: En3rGy am 15 November 2017, 07:13:46
Danke für die Info. In der Integrationsanleitung wird neben A und B auch 12V und GND verkabelt.  Ich gehe mal davon aus, dass der PI und die NIBE mindestens GND noch teilen?

Was hast du mit der 12V und der GND-Leitung gemacht?
Ich habe nur die Datenleitungen verkabelt. 12V braucht der PI nicht bzw. verträgt sie auch gar nicht. RS485 funktioniert als Differenz zwischen den Leitungen und nicht gegen GND, hab ich daher auch nicht verbunden.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 15 November 2017, 08:32:14
Zitat von: matzefisi am 15 November 2017, 08:27:52
Hi zusammen,

ich habe es bei mir mit einem RS485 zu USB Adapter am Raspi realisiert. Die 12 V Versorgung habe ich nicht angeklemmt und GND meine ich auch nicht. Bin mir aber gerade nicht sicher. Was bei mir allerdings in der Vergangenheit massive Probleme verursacht hat, war die Kabellänge zwischen Heizung und Raspi. Die habe ich jetzt auf ca. einen Meter gekürzt und seit dem läuft es ohne Probleme.

MfG
Matthias
Hierzu vielleicht noch, bei mir funktioniert es auf ca. 4m mit einem Adernpaar eines Cat5 Kabels.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: en3rgy@web.de am 17 November 2017, 21:47:35
Die Daten können dann wie folgt abgefragt werden:

Gem. Modbus 40 Anleitung mit dem Programm ModbusManager die Parameter konfigurieren, die man auslesen möchte (von NIBE-Webseite).
Die mit dem ModbusManager generierte Datei auf einen USB-Stick laden und den Stick in die NIBE einstecken. Die Datei wird ohne weitere Rückmeldung ausgelesen.
Anschließend empfängt die FHEM-NIBE-Erweiterung die gewählten Daten.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: fritzhugo123 am 17 Dezember 2017, 12:14:54
Hallo zusammen,

ich habe mich nun auch einmal an der Verbindung meiner Nibe Heizung mit FHEM probiert.
Ein bißchen was funktioniert, aber leider noch nicht das, was ich mir erhofft habe.
Mir ist auch noch nicht alles bzgl. Einstellungen und Konfigurationen klar.

Das sind meine Hardwarevorraussetzungen:

Nibe VVM310
Raspberry Pi mit Digitus HM485 USB Adapter
FHEM mit den beiden Nibe Modulen

Folgendes habe ich bisher gemacht:

Die beiden Datenleitungen der Nibe sind mit dem RS485 Modul verbunden.
Nachdem ich MODBUS unter Zubehör in der VVM310 aktiviert habe, konnte ich zwei Readings in FHEM finden:

Readings
product VVM 310, 3x400V 2017-12-17 11:25:07
sw_version 5774 2017-12-17 11:25:07

Generell scheinen also Daten von der Nibe zu FHEM geschickt zu werden.

Folgende Fragen habe ich nun:

1) Die Nibe geht auf Störung, so wie ich gelesen habe liegt es daran, dass kein ACK zur Anlage zurück geschickt wird. Verstehe ich es richtig, dass die Module für FHEM nur einen lesenden MODBUS simulieren und keine ACKs aktiv senden?
2) Wie kann ich weitere Werte erhalten? Wenn ich es richtig verstanden habe, dann kann ich diese per Software und Konfigdatei per USB an die VVM übertragen und diese Werte dann freischalten?
3) Für das fehlende ACK gibt es eine Software mit dem Namen nibegw. Das wurde scheinbar allerdings bisher nur in openhab integriert. Gibt es eine Möglichkeit nibegw mit FHEM zu verknüpfen oder das Nibe Modul so zu erweitern, dass es mit nibegw zusammen arbeitet?

Zusätzlich habe ich scheinbar noch ein Problem mit FHEM und dem Digitus Adapter. Dieser wird als ttyUSB2 eingebunden.
Wenn er angeschlossen ist und FHEM neu gestartet wird, bleibt es bei der Erkennung der USB Geräte hängen. Die letzten Einträge aus dem Log sind folgende:

2017.12.16 17:39:41 3: Probing TCM_ESP3 device /dev/ttyUSB2
2017.12.16 17:39:42 3: Probing TCM_ESP2 device /dev/ttyUSB2
2017.12.16 17:39:42 3: Probing FHZ device /dev/ttyUSB2
2017.12.16 17:39:42 3: Probing TRX device /dev/ttyUSB2
2017.12.16 17:39:43 3: Probing ZWDongle device /dev/ttyUSB2
2017.12.16 17:39:43 3: Probing FRM device /dev/ttyUSB2

Vielleicht könnt ihr mir meine Fragen beantworten und bei meinen Problemen helfen.

Gruß, Matthias
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 17 Dezember 2017, 14:43:18
Zitat von: fritzhugo123 am 17 Dezember 2017, 12:14:54
Hallo zusammen,

ich habe mich nun auch einmal an der Verbindung meiner Nibe Heizung mit FHEM probiert.
Ein bißchen was funktioniert, aber leider noch nicht das, was ich mir erhofft habe.
Mir ist auch noch nicht alles bzgl. Einstellungen und Konfigurationen klar.

Das sind meine Hardwarevorraussetzungen:

Nibe VVM310
Raspberry Pi mit Digitus HM485 USB Adapter
FHEM mit den beiden Nibe Modulen

Folgendes habe ich bisher gemacht:

Die beiden Datenleitungen der Nibe sind mit dem RS485 Modul verbunden.
Nachdem ich MODBUS unter Zubehör in der VVM310 aktiviert habe, konnte ich zwei Readings in FHEM finden:

Readings
product VVM 310, 3x400V 2017-12-17 11:25:07
sw_version 5774 2017-12-17 11:25:07

Generell scheinen also Daten von der Nibe zu FHEM geschickt zu werden.

Folgende Fragen habe ich nun:

1) Die Nibe geht auf Störung, so wie ich gelesen habe liegt es daran, dass kein ACK zur Anlage zurück geschickt wird. Verstehe ich es richtig, dass die Module für FHEM nur einen lesenden MODBUS simulieren und keine ACKs aktiv senden?
2) Wie kann ich weitere Werte erhalten? Wenn ich es richtig verstanden habe, dann kann ich diese per Software und Konfigdatei per USB an die VVM übertragen und diese Werte dann freischalten?
3) Für das fehlende ACK gibt es eine Software mit dem Namen nibegw. Das wurde scheinbar allerdings bisher nur in openhab integriert. Gibt es eine Möglichkeit nibegw mit FHEM zu verknüpfen oder das Nibe Modul so zu erweitern, dass es mit nibegw zusammen arbeitet?

Zusätzlich habe ich scheinbar noch ein Problem mit FHEM und dem Digitus Adapter. Dieser wird als ttyUSB2 eingebunden.
Wenn er angeschlossen ist und FHEM neu gestartet wird, bleibt es bei der Erkennung der USB Geräte hängen. Die letzten Einträge aus dem Log sind folgende:

2017.12.16 17:39:41 3: Probing TCM_ESP3 device /dev/ttyUSB2
2017.12.16 17:39:42 3: Probing TCM_ESP2 device /dev/ttyUSB2
2017.12.16 17:39:42 3: Probing FHZ device /dev/ttyUSB2
2017.12.16 17:39:42 3: Probing TRX device /dev/ttyUSB2
2017.12.16 17:39:43 3: Probing ZWDongle device /dev/ttyUSB2
2017.12.16 17:39:43 3: Probing FRM device /dev/ttyUSB2

Vielleicht könnt ihr mir meine Fragen beantworten und bei meinen Problemen helfen.

Gruß, Matthias

Hallo Matthias,

ich versuche mal etwas Licht ins Dunkel zu bringen ;-)
Du scheinst die Verbindung und Fhem grundsätzlich hinbekommen zu haben. Ansonsten wären die Readings nicht im Modul zu finden.

Der Grund für die Installation über 2 Fhem-Module ist die Art der Kommunikation zur Nibe. Die Nibe möchte für jede Nachricht, die raus geschickt wird, ein ACK und das ziemlich direkt. Und das können die Module auch, aber eben nur ACK und keine eigenen Anfragen oder Kommandos. Bei mir laufen die Module stabil, ohne das die Nibe auf Alarm geht.

Außerdem laufen bei mir die Module mit Remote-Konfiguration auf einem Raspi, auf dem sonst nicht viel los ist. Meine Fhem-Hauptinstanz hat dann die Module nochmal mit der Master-Konfiguration definiert.

Mit dieser Installation liest das Remote-Fhem nur den Datenstrom aus der Nibe, trennt die Nachrichten und schickt jeweils ein ACK. Im Haupt-Fhem werden die Nachrichten dann aufgeparst und die Readings gefüllt. Durch diese Trennung konnte ich erreichen, dass die Nibe die ACKs rechtzeitig erhält und damit zufrieden ist.

Deine Fragen 1 und 3 sollten damit erklärt sein. Du hast wahrscheinlich alles in einer Fhem-Instanz zu laufen, und die ACKs kommen so nicht rechtzeitig bei der Nibe an.

Bei Frage 2 musst du den Nibe ModbusManager verwenden. Mit diesem Programm kann man die Werte definieren, die die Nibe dann kontinuierlich übermittelt. Das ist nicht spezielles für Fhem, sondern die Standartkonfiguration für das Modbus 40.

Bei dem USB Probing habe ich keine Ahnung, das hat bei mir noch keine Probleme gemacht. Das muss man bestimmt irgendwie konfigurieren ;-)

Viele Grüße
Vuffiraa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: fritzhugo123 am 17 Dezember 2017, 14:54:58
Danke für die Antwort.

Das heißt ich nehme besser einen zweiten Raspberry, der nichts anderes tut also mit der Nibe verbunden zu sein und rechtzeitig die ACKs zu schicken.
Von diesem aus werden dann die Daten über FHEM2FHEM an die FHEM Hauptinstallation geschickt und verarbeitet?

Gibt es eine Möglichkeit zu kontrollieren, ob die ACKs geschickt werden und eventuell sogar irgendwo die Laufzeit zu sehen?

Kann mir jemand die 20 sinnvollsten Werte nennen? Die einzelnen erscheinen mir sehr kryptisch.

Gruß, Matthias
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 17 Dezember 2017, 18:23:54
Zitat von: fritzhugo123 am 17 Dezember 2017, 14:54:58
Danke für die Antwort.

Das heißt ich nehme besser einen zweiten Raspberry, der nichts anderes tut also mit der Nibe verbunden zu sein und rechtzeitig die ACKs zu schicken.
Von diesem aus werden dann die Daten über FHEM2FHEM an die FHEM Hauptinstallation geschickt und verarbeitet?
Die Datenübergabe erfolgt per FHEM2FHEM RAW. Ich weiß nicht genau, ob man das auch innerhalb eines Rechner hinbekommt. Vielleicht kann man auch 2 Fhem-Prozesse laufen lassen. Bei mir passte es so ganz gut, ich brauchte eh einen Raspi neben der Nibe.

Zitat
Gibt es eine Möglichkeit zu kontrollieren, ob die ACKs geschickt werden und eventuell sogar irgendwo die Laufzeit zu sehen?
Innerhalb der Nie-Module wird dazu kein Log geschrieben. Ich glaube aber, dass Fhem beim globalen Logging auf entsprechender Stufe herausschreibt, wenn etwas geschrieben wird. Nur leider dauert das Schreiben des Logs so lange, dass dann die ACKs nicht mehr rechtzeitig bei der Nibe ankommen.
Ansonsten kann ich bei mir direkt am RS485-Adapter sehen, ob Nachrichten über die Leitung gehen. Da gibt es eine rote LED für IN und eine grüne für OUT. Rot und grün wechseln sich da in schöner Regelmäßigkeit ab. Rot flackert etwas länger für eine Nachricht von der Nibe und dann blickt grün einmal für das ACK auf.
Zitat
Kann mir jemand die 20 sinnvollsten Werte nennen? Die einzelnen erscheinen mir sehr kryptisch.

Gruß, Matthias
Die Werte muss sich wohl jeder selber raussuchen, meine sind:

     Außentemperatur durchschnitt: BT1_Average     2.1
     Außentemperatur aktuell:      BT1_Outdoor_temp 1.8

     Fußboden Zulauf:       BT2_Supply_temp_S1 25.7
     Fußboden Rücklauf:     EB100-EP14-BT3_Return_temp 25.5
     Warmwasser Tank mitte: BT6_Hot_Water_load 44.3
     Warmwasser Tank oben:  BT7_Hot_Water_top 48.1
     Sole ein:              EB100-EP14-BT10_Brine_in_temp 10.3
     Sole aus               EB100-EP14-BT11_Brine_out_temp 10.9

     Lüftungsanlage ein: AZ1-BT26_Temp_Collector_in_FLM_1 22.3
     Lüftungsanlage aus: AZ1-BT27_Temp_Collector_out_FLM_1 19.7
     Ablufttemperatur:   EB100-BT20_Exhaust_air_temp. 22.4
     Rücklufttemperatur: EB100-BT21_Vented_air_temp. 22.7

     Kompressorstarts:        Compressor_starts_EB100-EP14 18613
     Betriebszeit Warmwasser: Tot._HW_op.time_compr._EB100-EP14 1291
     Betriebszeit total:      Tot._op.time_compr._EB100-EP14 9681
     Gradminuten:             Degree_Minutes  -65.8
     Anlagenstatus:           PCA-Base_Relays_EP14 2
     product                  F1245-6 E DE
     sw_version               7740

Da du aber einen anderen Typ hast, dürften sich die Werte etwas unterscheiden.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: fritzhugo123 am 19 Dezember 2017, 18:49:07
Ich bin einen Schritt weiter gekommen, aber leider nicht nicht am Ziel.

Ich habe einen weiteren Pi genommen und diesen an die NIBE angeschlossen. Die Verbindung funktioniert zu Beginn und ich erhalte auch die Daten.
Nach circa 2 Stunden melden die Nibe allerdings Kommunikationsfehler.
Fhem erhält noch aktuelle Daten, allerdings scheinen die ACKs zu lange zu dauern.
Irgendeine Idee, warum die Kommunikation nur eine gewisse Zeit funktioniert?
Das Ein- und Ausschalten von Modbus von der Nibe löst das Problem nicht.
Mit einem Abstecken und neuen Verbinden des RS485 Adapters funktioniert dier Verbinden erneut für ungefähr 2 Stunden.

Ich habe zusätzliche Werte mit dem Modbus Manager konfiguriert. Im Logfile von FHEM erhalten ich aber Fehlermeldungen:
2017.12.19 14:57:51 3: Nibe: Register 0 not defined
2017.12.19 14:57:51 3: Nibe: Register 44979 not defined
2017.12.19 14:57:51 3: Nibe: Register 0 not defined
2017.12.19 14:58:21 3: Nibe: Register 44033 not defined
2017.12.19 14:58:21 3: Nibe: Register 12 not defined
2017.12.19 14:58:21 3: Nibe: Register 44396 not defined
2017.12.19 14:58:21 3: Nibe: Register 0 not defined
2017.12.19 14:58:21 3: Nibe: Register 44979 not defined
2017.12.19 14:58:21 3: Nibe: Register 0 not defined
2017.12.19 14:58:51 3: Nibe: Register 44033 not defined
2017.12.19 14:58:51 3: Nibe: Register 12 not defined

Kann es sein, dass die FHEM Module nicht alle Register erkennen und darstellen können?

Gruß, Matthias
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 19 Dezember 2017, 22:04:31
Zitat von: fritzhugo123 am 19 Dezember 2017, 18:49:07
Ich bin einen Schritt weiter gekommen, aber leider nicht nicht am Ziel.

Ich habe einen weiteren Pi genommen und diesen an die NIBE angeschlossen. Die Verbindung funktioniert zu Beginn und ich erhalte auch die Daten.
Nach circa 2 Stunden melden die Nibe allerdings Kommunikationsfehler.
Fhem erhält noch aktuelle Daten, allerdings scheinen die ACKs zu lange zu dauern.
Irgendeine Idee, warum die Kommunikation nur eine gewisse Zeit funktioniert?
Das Ein- und Ausschalten von Modbus von der Nibe löst das Problem nicht.
Mit einem Abstecken und neuen Verbinden des RS485 Adapters funktioniert dier Verbinden erneut für ungefähr 2 Stunden.

Ich habe zusätzliche Werte mit dem Modbus Manager konfiguriert. Im Logfile von FHEM erhalten ich aber Fehlermeldungen:
2017.12.19 14:57:51 3: Nibe: Register 0 not defined
2017.12.19 14:57:51 3: Nibe: Register 44979 not defined
2017.12.19 14:57:51 3: Nibe: Register 0 not defined
2017.12.19 14:58:21 3: Nibe: Register 44033 not defined
2017.12.19 14:58:21 3: Nibe: Register 12 not defined
2017.12.19 14:58:21 3: Nibe: Register 44396 not defined
2017.12.19 14:58:21 3: Nibe: Register 0 not defined
2017.12.19 14:58:21 3: Nibe: Register 44979 not defined
2017.12.19 14:58:21 3: Nibe: Register 0 not defined
2017.12.19 14:58:51 3: Nibe: Register 44033 not defined
2017.12.19 14:58:51 3: Nibe: Register 12 not defined

Kann es sein, dass die FHEM Module nicht alle Register erkennen und darstellen können?

Gruß, Matthias

Hallo Matthias,

ich habe gerade mal in die aktuelle Version vom ModbusManager geschaut, da sind einige Register dazu gekommen. Die müssen im Modul ergänzt werden. Fehlen bei dir nur die 3 Register, die man in dem Ausschnitt sieht? Die kann ich bestimmt recht schnell ergänzen.

Warum das bei dir nur 2 Stunden funktioniert, ist mir noch nicht klar. Hast du etwas anderes auf dem Raspi zu laufen, was nach den 2 Stunden Last erzeugt? Vielleicht kannst du auch mal ein "list <device>" der einzelnen Geräte bei dir hier einstellen. Wie sieht den die Speicherauslastung in den 2 Stunden aus? Oder wird irgendwo ein Log geschrieben, dass nach 2 Stunden dann so groß wird, dass es den Raspi ausbremst.

Was musst du tun, wenn der Fehler auftritt? Ab- und Anstecken hilft wohl. Ein Neustart des Raspi oder von Fhem ist nicht notwendig? Ich kann bei mir einen Fehler auch an der Nibe zurücksetzen. Wobei ich einen Fehler innerhalb des letzten halben Jahres nur einmal hatte, ohne das es einen Grund (Stromausfall, Raspi reboot...) gab.

Viele Grüße
Vuffiraa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 20 Dezember 2017, 09:07:30
Hallo Matthias,

ich habe die Register mal versuchsweise ergänzt. Du kannst mal die neue Version probieren: https://raw.githubusercontent.com/matzefisi/fhem-70_NIBE/devio/71_NIBE.pm

Gruß Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: fritzhugo123 am 20 Dezember 2017, 10:36:26
Hallo Ulf,

vielen Dank für die Ergänzung. Nun fehlen noch folgende Werte:

2017.12.20 10:31:16 3: Nibe: Register 40940 not defined
2017.12.20 10:31:16 3: Nibe: Register 65480 not defined
2017.12.20 10:31:16 3: Nibe: Register 40941 not defined
2017.12.20 10:31:16 3: Nibe: Register 12 not defined

Wegen des Kommunikationsfehlers muss ich noch weiter schauen. Neben der FHEM Installation läuft auf dem Pi nichts, so dass eigentlich nichts stören sollte.
Beim ersten Fehler half das Zurücksetzen des Fehlers in der NIBE nicht, er kam direkt wieder.
In den letzten 24 Stunden ist er nur einmal aufgetreten und ein Zurücksetzen hat gereicht.

Gruß, Matthias
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 20 Dezember 2017, 10:57:13
Zitat von: fritzhugo123 am 20 Dezember 2017, 10:36:26
Hallo Ulf,

vielen Dank für die Ergänzung. Nun fehlen noch folgende Werte:

2017.12.20 10:31:16 3: Nibe: Register 40940 not defined
2017.12.20 10:31:16 3: Nibe: Register 65480 not defined
2017.12.20 10:31:16 3: Nibe: Register 40941 not defined
2017.12.20 10:31:16 3: Nibe: Register 12 not defined

Wegen des Kommunikationsfehlers muss ich noch weiter schauen. Neben der FHEM Installation läuft auf dem Pi nichts, so dass eigentlich nichts stören sollte.
Beim ersten Fehler half das Zurücksetzen des Fehlers in der NIBE nicht, er kam direkt wieder.
In den letzten 24 Stunden ist er nur einmal aufgetreten und ein Zurücksetzen hat gereicht.

Gruß, Matthias

Ich habe nur den Register 40940 gefunden, die anderen gibt es bei mir nicht. Die habe ich ergänzt.

Welche Version vom ModbusManager nimmst du und welches Modell ist ausgewählt?

Gruß Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: fritzhugo123 am 20 Dezember 2017, 12:17:41
Ich habe den Modbus Manager in der Version 1.0.9 und als Anlage die VVM310
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 20 Dezember 2017, 18:00:15
Zitat von: fritzhugo123 am 20 Dezember 2017, 12:17:41
Ich habe den Modbus Manager in der Version 1.0.9 und als Anlage die VVM310

Hmm, die benutze ich auch. Kannst du mir mal deine Konfigdatei zukommen lassen? Oder hast du die Namen aller Modbus-Variablen?
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: fritzhugo123 am 09 Januar 2018, 10:15:23
So langsam gehen mir die Ideen aus...

Ich habe die Verbindung nun mit einem Banana Pi und einem Raspberry PI probiert.
Ausserdem habe ich den RS485 USB Adapter verwendet, als auch das RS485 Aufsteckmodul.
Ich habe die Daten direkt vom PI auswerten lassen oder sie per FHEM2FHEM an einen anderen Raspberry geschickt.
Das Kabel habe ich soweit verkürzt, dass der Raspberry fast direkt an der Heizung steckt.
Trotz aller Versuche ist die Verbindung maximal 2 Stunden stabil.
Dann erhalte ich von der Nibe einen Kommunikationsfehler zwischen Anlage und MODBUS Einheit und die Lampe wird rot.
Scheinbar funktioniert die Heizung ansich weiter, allerdings ist dann der Alarm sichtbar.

Hat jemand noch eine Idee was ich machen kann, damit die Verbindung stabil läuft?
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 09 Januar 2018, 12:42:02
Zitat von: fritzhugo123 am 09 Januar 2018, 10:15:23
So langsam gehen mir die Ideen aus...

Ich habe die Verbindung nun mit einem Banana Pi und einem Raspberry PI probiert.
Ausserdem habe ich den RS485 USB Adapter verwendet, als auch das RS485 Aufsteckmodul.
Ich habe die Daten direkt vom PI auswerten lassen oder sie per FHEM2FHEM an einen anderen Raspberry geschickt.
Das Kabel habe ich soweit verkürzt, dass der Raspberry fast direkt an der Heizung steckt.
Trotz aller Versuche ist die Verbindung maximal 2 Stunden stabil.
Dann erhalte ich von der Nibe einen Kommunikationsfehler zwischen Anlage und MODBUS Einheit und die Lampe wird rot.
Scheinbar funktioniert die Heizung ansich weiter, allerdings ist dann der Alarm sichtbar.

Hat jemand noch eine Idee was ich machen kann, damit die Verbindung stabil läuft?

Aus der Ferne ist das schwierig, außer erst mal so allgemeine Sachen.
Wie ist die Auslastung auf deinem PI?
Was nimmst du für ein Kabel?

Grundsätzlich scheint es ja zu gehen. 2 Stunden ist schon relativ lang. Es könnte alles mögliche sein, was die Kommunikation stört.
Versuche mal ein Log auf dem Log zu schreiben. Ich bin mir nicht sicher, ob das geht, da dann die ACKs zu spät kommen. Eventuell wird auch alle 2 Stunden eine andere Art von Nachricht über den Draht geschickt, die das Modul noch nicht kennt.

Die Anlage funktioniert auch trotz der Alarm-Meldung normal weiter.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: fritzhugo123 am 09 Januar 2018, 18:22:21
Der Raspberry macht ja nichts anderes. Die Auslastung ist kleiner 2% usage.
Das Kabel ist ein 40cm geschirmtes Netzwerkkabel (CAT6).

Worauf genau soll ich das LOG machen? Auf dem NIBE Modul? Da sehe ich nur die ausgewählten Werte, die ich im ModbusManager ausgewählt habe.
Oder von NibeWP Modul? Da sehe ich nichts. Ich weiß auch nicht, wie ich die RAWMSG'es loggen kann.
Von den Werten ist es auch unabhängig. Selbst wenn ich nur einen Wert nehme, dann kommt die Fehlermeldung.

Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: stixif am 11 Januar 2018, 21:47:47
Danke für dieses Modul!
hab gerade eine Erweiterung eingecheckt,
da bei mir auch noch ein paar Readings fehlten...

würde mich freuen wenn das senden von werten auch möglich wäre...

grüße stixi
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 12 Januar 2018, 11:21:45
Zitat von: fritzhugo123 am 09 Januar 2018, 18:22:21
Der Raspberry macht ja nichts anderes. Die Auslastung ist kleiner 2% usage.
Das Kabel ist ein 40cm geschirmtes Netzwerkkabel (CAT6).

Worauf genau soll ich das LOG machen? Auf dem NIBE Modul? Da sehe ich nur die ausgewählten Werte, die ich im ModbusManager ausgewählt habe.
Oder von NibeWP Modul? Da sehe ich nichts. Ich weiß auch nicht, wie ich die RAWMSG'es loggen kann.
Von den Werten ist es auch unabhängig. Selbst wenn ich nur einen Wert nehme, dann kommt die Fehlermeldung.

Sorry, dass mir die Nachricht erst jetzt auffällt. Das Log sollst du beim NIBE_485 machen (verbose = 5). Da sollte man dann die Rohnachrichten sehen. Ich vermute, dass er mit den Nachrichten durcheinander kommt und dann ein ACK unter den Tisch fallen lässt.

Falls bei verbose=5 bereits zu viel Zeit durch das Loggen verloren geht, reicht auch verbose=4, dann kann man sehen, ob er Nachrichten verwirft.

Gruß Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 12 Januar 2018, 11:23:55
Zitat von: stixif am 11 Januar 2018, 21:47:47
Danke für dieses Modul!
hab gerade eine Erweiterung eingecheckt,
da bei mir auch noch ein paar Readings fehlten...

würde mich freuen wenn das senden von werten auch möglich wäre...

grüße stixi

Cool, danke für die Unterstützung. Hast du Register ergänzt, die du brauchst, oder einen kompletten Abzug aus dem Modbus Manager?

Gruß Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: stixif am 12 Januar 2018, 14:59:50
den kompletten Abzug aus dem Modbusmanager...
aber ich bekomm noch nicht alle readings die ich gerne haben würde...

bin leider noch nicht so fit in dem ganzen sondern komplett im Anfangsstatium...

wo muss ich die 71_nibe bearbeiten um von den max. 20 readings weg zu kommen?!?
ich will mehr... und es scheint als wäre dies für den RPI3 kein Problem...

kann mir da wer helfen
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 12 Januar 2018, 16:08:28
Zitat von: stixif am 12 Januar 2018, 14:59:50
den kompletten Abzug aus dem Modbusmanager...
aber ich bekomm noch nicht alle readings die ich gerne haben würde...

bin leider noch nicht so fit in dem ganzen sondern komplett im Anfangsstatium...

wo muss ich die 71_nibe bearbeiten um von den max. 20 readings weg zu kommen?!?
ich will mehr... und es scheint als wäre dies für den RPI3 kein Problem...

kann mir da wer helfen

Die 20 Readings sind eine Einschränkung des Modbus Managers. Du kannst dort keine größere Konfiguration zusammenstellen. Oder wurde das geändert?
Fhem hat damit eigentlich nichts zu tun. Fhem verarbeitet einfach nur alle Werte, die geliefert werden. Wenn da mehr kommen, würde das sofort funktionieren.

Gruß Vuffiraa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 13 Januar 2018, 11:08:28
Ich habe endlich mal eine Beschreibung gefunden, wie man Werte schreiben und einzelne Register lesen kann.

Mal hier als Merker, damit der Link nicht verloren geht: https://translate.googleusercontent.com/translate_c?depth=1&hl=de&prev=search&rurl=translate.google.de&sl=sv&sp=nmt4&u=https://www.varmepumpsforum.com/vpforum/index.php%3FPHPSESSID%3Dq05p7raspoadmg0cl7887v8m53%26topic%3D39325.msg679341&usg=ALkJrhhCFBtMUZL0eJvvluNIsZf3gRJKJw#msg679341
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 02 Februar 2018, 19:56:49
Hallo Leute,

ich habe eine Version zum Testen ins Git gestellt. Größte Neuerung ist die Möglichkeit, einzelne Register zu lesen. Ja, ich habe mit dem Lesezugriff angefangen, da sollte weniger schief gehen können  ;)

Im logischen Modul gibt es folgende Operationen unter GET:
- register <register> (<register> ...) - Der Wert der Register wird angefragt. Die Liste ist mit Leerzeichen getrennt. Momentan wird die Registernummer verwendet, z.b. get Nibe register 47007
- readRegisters - Listet alle bekannten Register die gelesen werden können.
- writeRegisters - Listet alle bekannten Register die (demnächst) geändert werden können.

Weiterhin habe ich die Definition der zulässigen Register geändert. Sie sind jetzt nicht mehr im Modul enthalten, sondern werden aus einer eigenen Datei geladen. Diese Datei kann man recht einfach mit dem NIBE Modbus Manager erzeugen. Zuerst im Menü Models das eigene Modell auswählen und dann über Menü File/Export to file eine CSV-Datei erzeugen. Grundeinstellung ist, dass die Datei export.csv ins Fhem-Hauptverzeichnis gepackt wird. Ansonsten kann man im logischen Modul im Fhem-Master den Pfad und Dateinamen über das Attribute modbusFile überschreiben. Daher auch die passende SET-Operation loadModbusFile. Die Modus-Datei wird aber auch bei Starten vom Modul gelesen.

Ein regelmäßiges Abholen von Werten habe ich nicht implementiert. Das sollte sich auch gut per DOIF oder at umsetzen lassen.

Wer sich traut darf testen  :) Also die Moduldateien aktualisieren, export.csv erzeugen und die Fhem Instanzen durchstarten.

Ein Hinweis noch, die Namen der Readings sind durch Änderungen im Modbus Manager leicht anders.

Viele Grüße
Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: stixif am 03 Februar 2018, 11:20:47
Hi, das sind tolle Neuigkeiten  8)

habs gleich mal ausprobiert und versucht meine Wärmewerte aus zu lesen...
hier ist mir eine Differenz zum Nibe Uplink und der Steuerung aufgefallen
bei diesen readings
ID            wert modul       wert nibe
44300          2140.2             15247.4
44308          2137.3             15244.5

die restlichen schauen soweit ganz gut aus

besten dank und gib bescheid wenns was zum ausprobieren gibt!
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 03 Februar 2018, 12:08:22
Zitat von: stixif am 03 Februar 2018, 11:20:47
Hi, das sind tolle Neuigkeiten  8)

habs gleich mal ausprobiert und versucht meine Wärmewerte aus zu lesen...
hier ist mir eine Differenz zum Nibe Uplink und der Steuerung aufgefallen
bei diesen readings
ID            wert modul       wert nibe
44300          2140.2             15247.4
44308          2137.3             15244.5

die restlichen schauen soweit ganz gut aus

besten dank und gib bescheid wenns was zum ausprobieren gibt!

Jetzt sollte es besser sein. Es gibt eine neue Version von 71_NIBE.pm. Die Änderung wirkt im logischen Gerät auf den Fhem Master. Nach dem update des Modules reicht reload 71_NIBE.

Gruß Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: stixif am 03 Februar 2018, 12:20:20
perfekt nun schauts richtig gut aus!
ich danke und werde weiter ausprobieren...
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: uwirt am 14 Februar 2018, 10:49:48
Gibt es eine Möglichkeit an die Daten über den Niebe Uplink heranzukommen?
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 14 Februar 2018, 19:24:04
Zitat von: uwirt am 14 Februar 2018, 10:49:48
Gibt es eine Möglichkeit an die Daten über den Niebe Uplink heranzukommen?

Hallo uwirt,

Uplink ist ein komplett anderer Weg. Von Nibe gibt es hier ein API (https://api.nibeuplink.com). Aber dann müsste jemand ein Modul für diese API entwickeln bzw. eventuell kann man es auch mit HTTPMOD lösen.

Gruß Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 18 Februar 2018, 19:05:38
Hallo Tester  ;)

Ich habe eben die Versionen im Git erneuert. Wenn alles funktioniert, kann man jetzt auch Werte in der Wärmepumpe ändern. Dazu sind sind die beiden Modulteile auf beiden Fhem-Installationen auszutauschen. Also eigentlich ein kompletter Rundumschlag...

Im logischen Modul gibt es nun neu unter SET:
register <register> <value>
Register und Wert sind dabei mit einem Leerzeichen zu trennen, also z.B.:
set Nibe register 47131 11
set Nibe register Language 11

Beide Zeilen ändern die Sprache der Wärmepumpe auf Dänisch, zumindest bei einer F1245. Mit Wert 2 wird es wieder Deutsch ;)
Register könne also per ID oder Reading-Name adressiert werden. Das funktioniert auch so beim GET.

Für die bessere Benutzbarkeit gibt es noch ein Attribute nibeFavorites. Damit kann man eine Liste von Register/Reading-Namen definieren. Die einzelnen Namen werden per Leerzeichen getrennt. Die Register erscheinen dann direkt unter GET und, falls schreibbar, unter SET.
Beispiel:
attr Nibe nibeFavorites Alarm Language
Damit erscheinen beim GET zwei neue Einträge Alarm und Language, aber beim SET nur ein Eintrag für die Sprache. Alarm ist nicht schreibbar, dafür gibt es Alarm_Reset...

Schönen Abend,
Vuffiraa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: stixif am 21 Februar 2018, 17:23:08
scheint soweit ganz gut zu funktionieren!
muss nun nur noch ein paar Parameter suchen ;D

nur beim set is standardmäßig noch test mit drinnen

ist es evtl. möglich zusätzlich wenn man den Parameter aus der Liste wählt
oder sonst irgendwo die Info des jeweiligen Parameters zu sehen
(würde ja auch in der export Datei stehen)
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 21 Februar 2018, 21:02:45
Zitat von: stixif am 21 Februar 2018, 17:23:08
scheint soweit ganz gut zu funktionieren!
muss nun nur noch ein paar Parameter suchen ;D

nur beim set is standardmäßig noch test mit drinnen
Ist mir auch schon aufgefallen. Das ist aber nur der Eintrag, da habe ich nicht gleich ein Update hinterhergeschoben. Die Logik dahinter hatte ich nicht eingecheckt.
Ich muss noch ein bisschen Doku ergänzen, dann kommt diese Korrektur gleich mit.

Zitatist es evtl. möglich zusätzlich wenn man den Parameter aus der Liste wählt
oder sonst irgendwo die Info des jeweiligen Parameters zu sehen
(würde ja auch in der export Datei stehen)
Bei den Get-Methoden 'readRegister' und 'writeRegister' sind auch die Erklärungstexte der Parameter zu sehen. Brauchst du noch mehr Informationen? Ansonsten sind alle Infos, die das Modul braucht, in der Instanz versteckt. Mach mal list <device>.

Gruß Vuffiraa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Tog63 am 06 Mai 2018, 12:36:08
Hallo zusammen

Ich habe dank euren tollen Beiträgen erfolgreich ein Verbindung zur Nibe SMO40 herstellen können, damit ich diese optimal zusammen mit meiner Fronius PV Symo Hybrid 5.0-3-S betreiben kann. Ziel: möglichst viel Eigenverbrauch

Leider habe ich noch ein kleines Problem..

Solange ich die simulierten ModBus-Daten (20 Parameter über das LOG-File) nur empfange, habe ich die gewünschten Daten im Fhem zur Verfügung, aber die Fehlermeldung in der Nibe

       Kommunikationsfehler zwischen Anlage und MODBUS-Einheit

was nicht weiter schlimm ist, da die Nibe normal weiterarbeitet, aber halt die Störunglampe rot brennt.

Das Unterdrücken mache ich, indem ich den TX-pullup am RS485-Interface nicht auf fix 3.3V hänge, sondern an einen Raspberry-Ausgang, den ich gezielt ein/ausschalten kann.
Achtung allen im Netz befindlichen Schema gehen auf 5V: http://cdn-reichelt.de/documents/datenblatt/A300/RB-RS485_2017_01.pdf
=> Bei meinem frisch bei ELV gekauften RS485 geht der Pullup auf 3.3V und die Bauteilebezeichnungen stimmen NICHT mit dem Schame überein!


Ist der TX aktiv, flackert die TX-Led permanent, nicht nur wie erwartet alle 30s, wenn die Nibe die Register des Logs sendet, sondern für jedes Telegramm.

Unterdrücke ich die Antwort von Fhem an die Nibe NICHT, geht diese nach ca. 2 Minuten auf Störung, z.B.

   Slave-Wärmepumpe 1 Kommunikationsfehler
   Komm.fehler mit PCA-Zubehör Heizkreis 2

und damit läuft die Anlage nicht mehr richtig, weil scheinbar die Antworten des Fhem dazwischenfunken.

Bin kein RS485 Profi, daher meine Anfrage an euch

Liegt dies an der gemeinsamen RS485-Adresse?
Wie könnte ich die Adresse des ModBus von den restlichen Nibe-Einheiten trennen => Laut ModBus Datenblatt lässt sich die Adresse einstellen, aber wo?
https://www.nibe.ch/nibedocuments/21149/031725-9.pdf
Wo müsste ich beim Fhem die rs485 Adresse verändern?

Gerne erwarte ich eure Vorschläge



Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 09 Mai 2018, 22:41:15
Hallo Tog63,

dann fangen wir mal an  ;)

Das Fhem Modul simuliert das Modbus 40, aber nur gegenüber der Nibe. Das bedeutet, dass das Modul nichts mit Modbus zu tun hat. Daher kann/muss man auch keine Modbus-Adresse einstellen.
Bei mir läuft das Modul permanent und empfängt die Daten der Nibe. Die Nibe selber kommuniziert wirklich im Sekundentakt, daher flackert die TX-Led auch dauernd. Das Modul verlangsamt das bewusst und schickt die Daten nur alle 30 Sekunden weiter.

Die eigentliche Aufgabe wäre, dass Modul auch bei dir robust laufen zu lassen. Grund für den Alarm ist wahrscheinlich, dass das Modul auch auf Nachrichten reagiert, die eigentlich nicht für das Modul (bzw. ein Modbus 40) bestimmt sind. Schicke mir mal ein Log mit verbose = 5 für den Zeitraum, wenn die Nibe auf Alarm geht.

Gruß Vuffiraa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Tog63 am 25 Mai 2018, 22:40:19
Hallo Vuffiraa

Herzlichen Dank für Deine Info.

Die neue Heizung ist im Ferienhaus installiert, daher hat es ein wenig länger gedauert, bis ich diese angefügte Log erstellen konnte

Wie erwähnt läuft das RS485-Interface am Nibe-PI ohne TX (über GPIO27 geschaltet)

Habe jetzt zweimal das TX aktiviert, bis Fehler mit den Nibe-RS485-Interface gemeldet werden (und diesen Fehler quittiert).
Danach wieder den TX deaktiviert bis Nibe-Modus-Fehler anzeigt (Fehler quittiert) und das ganze nochmals wiederholt

ca. 18:16:10   über PI-GPIO27 TX an RS485 aktiviert
=> ca. 2 Minuten später meldet Nibe   «Slave-Wärmepumpe 1 Kommunikationsfehler»

ca. 18:29:56   über PI-GPIO27 TX wieder deaktiviert
=> ca. 1 Minuten später meldet Nibe   «Kommunikationsfehler zwischen Anlage und MODBUS-Einheit.»

ca. 18:30:52   über PI-GPIO27 TX wieder aktiviert 
=> ca. 2 Minuten später meldet Nibe   Slave-Wärmepumpe 1 Kommunikationsfehler»

ca. 18:34:33    über PI-GPIO27 TX wieder deaktivert
=> ca. 1 Minuten später meldet Nibe   «Kommunikationsfehler zwischen Anlage und MODBUS-Einheit.»

Wie es ausschaut, kommen bei deaktiviertem TX die Nibe-Register-Blöcke dreifach mit längeren Abständen. Ist der TX an kommt der Register-Block einzeln aber häufiger.
Ist diese Häufigkeit ein Grund, dass der RS485 überaktiv ist?

Kannst Du anhand der Log mehr rauslesen, wieso Nibe Slave-Wärmepumpe 1 Kommunikationsfehler» meldet

Gerne erwarte ich Deine Rückmeldung/ratschläge
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 30 Mai 2018, 21:51:07
Hallo Tog63,

ich habe im Git neue Versionen der Module abgelegt. Kannst du den Test damit noch mal wiederholen?

Zur Funktion kann ich nur vermuten, dass die Nibe die Meldungen immer 3x schickt, wenn niemand eine Empfangsbestätigung sendet. Das senden solcher ACKs passiert dann, wenn TX aktiviert ist. Darum werden die Meldungen dann auch nur noch einfach gesendet. Vielleicht schickt die Nibe aber dann auch noch mehr, da ja jemand da ist, der antwortet.

Ich vermute, dass es zu den Kommunikationsfehlern kommt, weil das Fhem-Modul zu oft Meldungen beantwortet und damit die Antwort des wirklichen Empfängers überschreibt. Das sollte jetzt nicht oder nicht mehr so oft passieren. Im Log sollte das dann aber zu sehen sein.

Schönen Abend
Vuffiraa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Tog63 am 31 Mai 2018, 08:41:03
Guten Morgen Vuffiraa

Besten Dank für Deine neuen Files-
Ich habe diese heute morgen aufgespielt und neu gestartet => gleiches Fehlerbild
Entweder ModBus-Fehler ohne TX, bzw. Slave-Fehler mit TX

Heute früh kam noch eine neue Nibe FW SMO_40_v8350R2. Diese habe ich auch aufgespielt
dito: Entweder ModBus-Fehler ohne TX, bzw. Slave-Fehler mit TX

Hiernach die Störungsmeldungen der Nibe
31.05.2018 08:23:45 Kommunikationsfehler zwischen Anlage und MODBUS-Einheit.
31.05.2018 08:22:49 Komm.fehler mit PCA-Zubehör Heizkreis 2.
31.05.2018 08:20:21 Kommunikationsfehler zwischen Anlage und MODBUS-Einheit.
31.05.2018 08:17:22 Komm.fehler mit PCA-Zubehör Heizkreis 2.
und die Log (verbose 5)

Frage bzgl. Log: woran erkenne ich, dass der Raspi antwortet, sehe eigentlich nur read?

Guten Morgen
Silvan







Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 01 Juni 2018, 14:48:46
Zitat von: Tog63 am 31 Mai 2018, 08:41:03
Guten Morgen Vuffiraa

Frage bzgl. Log: woran erkenne ich, dass der Raspi antwortet, sehe eigentlich nur read?

Guten Morgen
Silvan

Hallo Silvan,

das Modul bedient sich beim Antworten der Standardfunktionalität von FHEM. Das sind dann solche Logs: SW: 06. Hier wurde der Hex-Wert "06" geschrieben, was für ACK steht.

Wenn das Modul eine Nachricht empfangen hat, wird eine Bestätigung gesendet, also:
2018.05.31 08:17:42 5: NibeWP: raw read: 5c0020685099a801
2018.05.31 08:17:42 5: NibeWP: raw read: 004e9c01026c9c10
2018.05.31 08:17:42 5: NibeWP: raw read: 016b9c1201879c14
2018.05.31 08:17:42 5: NibeWP: raw read: 01d89cc700c19cbb
2018.05.31 08:17:42 5: NibeWP: raw read: 00479cbb004d9c00
2018.05.31 08:17:42 5: NibeWP: raw read: 8000a8150101a8b8
2018.05.31 08:17:42 5: NibeWP: raw read: 01ec9f0000ffff00
2018.05.31 08:17:42 5: NibeWP: raw read: 00fda70000ffff00
2018.05.31 08:17:42 5: NibeWP: raw read: 00ffff0000ffff00
2018.05.31 08:17:42 5: NibeWP: raw read: 00ffff0000ffff00
2018.05.31 08:17:42 5: NibeWP: raw read: 00ffff000023
2018.05.31 08:17:42 5: SW: 06

Das ist eine normale Statusmeldung mit den per ModbusManager konfigurierten Werten. Am Ende wird dann die Bestätigung gesendet.

Wenn bei dir TX deaktiviert ist, sieht es zwar so aus, dass ACKs geschickt werden, aber die kommen ja nicht an. Daher schickt die Nibe die Nachrichten 3x. Danach wird das wohl als Fehler vermerkt und bei Wiederholung geht die Nibe auf "Kommunikationsfehler zwischen Anlage und MODBUS-Einheit."
2018.05.25 18:16:10 5: NibeWP: raw read: 5c00206b004b
2018.05.25 18:16:10 5: SW: 06
2018.05.25 18:16:11 5: NibeWP: raw read: 5c00206b004b
2018.05.25 18:16:11 5: SW: 06
2018.05.25 18:16:11 5: NibeWP: raw read: 5c00206b004b
2018.05.25 18:16:11 5: SW: 06


Der letzte Fall ist die Situation, wo Nachrichten von mehreren Stellen bestätigt werden. Da darf sich das Modul warscheinlich einfach nicht einmischen.
2018.05.31 08:17:46 5: NibeWP: raw read: 5c000a90009a
2018.05.31 08:17:46 5: SW: 06
2018.05.31 08:17:46 5: NibeWP: raw read: 15
2018.05.31 08:17:46 5: NibeWP: raw read: 5c000a90009a
2018.05.31 08:17:46 4: NibeWP: drop 2 characters

Die Nachricht wird vom Modul bestätigt, aber jemand anderes (PCA-Zubehör?) lehnt die Nachricht ab: 15 (NAK). Diese 2 Zeichen gehören zu keiner Nachricht, daher gibt es am Ende auch noch den Eintrag im Log, dass die Zeichen verworfen werden. Ich hoffe, wenn das Modul hier nicht Antworten sendet, das Zubehör richtige Bestätigungen schickt und die Nibe keine Kommunikationsfehler bekommt.

Ich versuche das mal heute Abend ins Modul einzubauen.
Edit: Die neue Version ist im Git und wartet auf deinen Test  :)

Gruß Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Tog63 am 02 Juni 2018, 09:04:10
Guten Morgen Ulf

Besten Dank für Deine Infos.
Jetzt kommt für mich ein wenig Licht in die Logs.
Habe soeben die neuen Files aufgespielt und den TX aktiviert und siehe da

.. auch nach einer Stunde geht die Nibe nicht mehr auf Störung   :)

Habe jetzt erstmals auch das Lesen/Schreiben von einzelnen Registern ausgeführt und dies funktioniert ebenso.

Bravo, mit Deiner Hilfe habe ich jetzt die Möglichkeit die Nibe zusammen mit meiner PV-Anlage optimal zu nutzen => ein kleiner Schritt Richtung Energiewende   :D

Mein Heizungsbauer freut sich auch schon auf diese tolle FHEM Möglichkeit.

Nochmals herzlichen Dank und ein schönes Wochenende wünscht Dir
Silvan
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 02 Juni 2018, 17:47:14
Zitat von: Tog63 am 02 Juni 2018, 09:04:10
Guten Morgen Ulf

Besten Dank für Deine Infos.
Jetzt kommt für mich ein wenig Licht in die Logs.
Habe soeben die neuen Files aufgespielt und den TX aktiviert und siehe da

.. auch nach einer Stunde geht die Nibe nicht mehr auf Störung   :)

Habe jetzt erstmals auch das Lesen/Schreiben von einzelnen Registern ausgeführt und dies funktioniert ebenso.

Bravo, mit Deiner Hilfe habe ich jetzt die Möglichkeit die Nibe zusammen mit meiner PV-Anlage optimal zu nutzen => ein kleiner Schritt Richtung Energiewende   :D

Mein Heizungsbauer freut sich auch schon auf diese tolle FHEM Möglichkeit.

Nochmals herzlichen Dank und ein schönes Wochenende wünscht Dir
Silvan

Hallo Silvan,

schön zu lesen, dass wir das Rätsel gelöst haben  :)

Die Optimierung mit der PV-Anlage würde auch interessieren. Momentan läuft meine Nibe über einen eigenen Zähler mit extra Tarif. Durch den Unterschied zum Normaltarif lohnt sich das Zusammenklemmen (noch) nicht.

Dir auch ein schönes Wochenende!
Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: MegaData am 14 Juni 2018, 18:14:39
Hi hi,

ich habe auch eine F1145 und würde da gern optimieren ;-) Ich sehe das also richtig, das man

- einen extra Raspi
- mit einem RS485 -> USB Kabel
- ein 2. fhem mit fhem2fhem Connection

benötigt ? Finde ich ganz schön aufwendig... Aber wenn es tatsächlich läuft... Würde ich mich mal mit Hardware eindecken :)
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 14 Juni 2018, 19:14:20
Zitat von: MegaData am 14 Juni 2018, 18:14:39
Hi hi,

ich habe auch eine F1145 und würde da gern optimieren ;-) Ich sehe das also richtig, das man

- einen extra Raspi
- mit einem RS485 -> USB Kabel
- ein 2. fhem mit fhem2fhem Connection

benötigt ? Finde ich ganz schön aufwendig... Aber wenn es tatsächlich läuft... Würde ich mich mal mit Hardware eindecken :)

Hallo,

soweit siehst du alles richtig. Alternativ kannst du für den Raspi auch ein RS485-Erweiterungsboard nehmen.

Die 2 Fhem-Installationen scheinen notwendig, da die Nachrichten nicht schnell genug verarbeitet werden können. Das macht dann die Hauptinstanz. Bei mir war der Raspi auch notwendig, da ich meine Nibe nicht direkt mit meiner Fhem-Hauptinstanz verbinden kann.

Nur mal als schnelle Idee könnte man mal prüfen, ob man auch 2 Fhem-Instanzen auf dem gleichen Rechner laufen lassen könnte. Sieht das Fhem2Fhem vor?

Gruß Vuffiraa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: MegaData am 15 Juni 2018, 20:42:12
Wenn es nur ums auslesen geht... habe ich auch https://www.marshflattsfarm.org.uk/wordpress/?page_id=3480 (https://www.marshflattsfarm.org.uk/wordpress/?page_id=3480) gefunden. Das greift scheinbar aufs Uplink zu und macht die Werte lesbar. Bekommt man das nicht irgendwie in Fhem integriert ? Wenn es in Richtung Solar-Ertragserhöhung geht... kann man ja SmartGrid mit ner Relaiskarte schalten und will eigentlich gerade nur wissen ob geheizt wird oder nicht... ?
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 15 Juni 2018, 21:02:31
Zitat von: MegaData am 15 Juni 2018, 20:42:12
Wenn es nur ums auslesen geht... habe ich auch https://www.marshflattsfarm.org.uk/wordpress/?page_id=3480 (https://www.marshflattsfarm.org.uk/wordpress/?page_id=3480) gefunden. Das greift scheinbar aufs Uplink zu und macht die Werte lesbar. Bekommt man das nicht irgendwie in Fhem integriert ? Wenn es in Richtung Solar-Ertragserhöhung geht... kann man ja SmartGrid mit ner Relaiskarte schalten und will eigentlich gerade nur wissen ob geheizt wird oder nicht... ?

Dann ist die Frage, ob deine Wärmepumpe ein Uplink-Modul hat. Dann brauchst du noch das passende Uplink-Abo dazu.
Ansonsten könnte man den beschriebenen Ansatz bestimmt verwenden. Wenn man dann, genauso wie der Autor, MQTT verwendet, könnte man die Ergebnisse in FHEM integrieren.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: MegaData am 15 Juni 2018, 21:37:07
Ja die 1145 hat das schon eingebaut. Ein Abo braucht man nur wenn man die Heizung über das Portal steuern will, auslesen geht gratis :)
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 15 Juni 2018, 22:01:32
Zitat von: MegaData am 15 Juni 2018, 21:37:07
Ja die 1145 hat das schon eingebaut. Ein Abo braucht man nur wenn man die Heizung über das Portal steuern will, auslesen geht gratis :)

Na dann stehen dir alle Möglichkeiten offen. Die Uplink API könnte man bestimmt auch in einem Modul aufrufen und dann die Daten dort direkt verarbeiten. Wenn das keine Option ist, geht es per MQTT, ohne das man Fhem erweitern muss.
Meine 1245 ist von 2011, da war das noch nicht dabei.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 20 November 2018, 22:15:46
Hallo, jetzt habe ich mich mal doch angemeldet.
Ich habe eine Nibe F750 und möchte Einstellungen der Pumpe steuern, sprich Register schreiben.
In einem Beitrag wird erwähnt, dass wohl nicht alle Register geschrieben werden können.
Laut der Beschreibung gibt es wenn, alles installiert, ist einen Befehl der mir ausweist welche Register beschrieben werden können.

Da ich lange im Irrgarten von API und IFTTT erfolglos gesucht hatte, möchte ich hier nicht jetzt auch noch Zeit verschwenden und dann erkennen dass meine Anforderungen nicht erfüllt werden können.

Es müssten folgende Werte frei gesetzt werden können.
1. die normale Ventilatorgeschwindigkeit!!! im Service Einstellungsmenue. ID???
2. Ladepumpe Heizung ID43181
3. Gradminuten ID43005

Wünschenswert wäre
4. Außentemperatur oder Raumtemperatur (um indirekt die Heizkurve und dadurch die angestrebte Vorlauftemperatur anzupassen)
5. Denke Kompressor, berechnete Vorlauftemperatur etc kann ich wohl ausschließen, da es zu sehr in das System eingreift.

Hintergrund:
Wir haben eine Luftfeuchtigkeit von 10-50%, da brauche ich keine ständige Lüftung.
Die Luft ist aber der Energieträger und die Menge schwankt nach Anforderungen von Warmwasser, Heizung und Außentemperatur.
Bei Temperaturen im Außenbereich von 0-12 Grad gerät die Heizung häufig in Start/Stopp Betrieb weil zu viel Energie da ist oder sie ständig vereist.
Es gibt leider keinen Filter für die Außentemperatur zu der Vorlauftemperatur der FBH, somit wird tagsüber gedrosselt und Nachts muss die Heizung  wieder extrem arbeiten und vereist.
Genauso gibt es nur eine sehr einfache statische Schaltung zu Lüftung und Heizbedarf, die gerade mal die Probleme bei einer Außentemperatur größer 12 Grad ausstreicht.

In meiner Not würde ich über die AUX Eingänge die Lüfter einstellen, aber es würde nur ein Bruchteil der Möglichkeiten erreicht.

Händisch bekomme ich die Heizung in einen gleichmäßigen Lauf, aber ich kann nicht alle Stunde die Werte kontrollieren und anpassen.

Es wäre also schön wenn ich erfahren könnte ob technisch die genannten Register geschrieben werden können.

Lieber Grüße
Sonnenschein.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 21 November 2018, 14:02:06
Hallo Sonnenschein,

das Modul stützt sich auf die Parameter, die im ModbusManager als änderbar ausgewiesen werden. Es gibt keine Logik, die noch weitergehende Enschränkungen oder Ausnahmen macht. Mir war nur aufgefallen, dass es nicht zu allen Einstellungen, die man im Display der Nibe konfigurieren kann (z.B. Zeitsteuerungen), entsprechende Register im ModbusManager gibt. Im ModbusManager kannst du die Register für dein Modell anschauen oder auch exportieren. Das Fhem-Modul liest genau diese Datei und erzeugt daraus die Listen der lesbaren Register und der schreibbaren Register.

Ich kann dir hier leider auch nicht grantieren, dass sich alle deine Anforderungen mit dem Fhem-Modul umsetzen lassen. Selbsterklärend sind die ganzen Register leider nicht und du wirst etwas Zeit aufwenden müssen, um dich da einzuarbeiten. Die Aufgabe würde wahrscheinlich darin bestehen, aus den änderbaren Parameter die Kombination zu finden, die dein gewünschtes Erbegnis erreicht. Wenn ich das richtig sehe, kann man Ventilatorgeschwindigkeiten, die Geschwindigkeit der Ladepumpe und Temperatursensoren nicht direkt einstellen. Aber Gradminuten, Punktverschiebungen der Heizkurve, Min- und Maxwerte für Geschwindigkeiten usw.

Ich hoffe, das schreckt dich jetzt nicht ab!

Viele Grüße
Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 21 November 2018, 21:49:14
Hallo Ulf,

vielen Dank für die schnelle und kompetente Antwort.
Habe alle gewünschten Werte gefunden.
Habe mit dem Motbusmanager vor vier Jahren mal kurz gearbeitet.
Aber jetzt sehe ich zusätzliche Register die sehr interessant sind.
Seltsamerweise sind da aber auch  Register dabei, die würde ich niemals wagen zu schreiben.

Abschrecken, tut mich eher noch der Aufbau 2.Rechner etc und die Angst, dass die 20 Werte nicht reichen werden.
Weil aktuell sprudeln viele Ideen.

Natürlich kann ich es jetzt nicht finden. Aber man könne wohl auch auf gezielte Einzelregister des Modbus zugreifen ohne die Modbusliste. Hier waren die Responce Time auch länger. Wenn ich mich richtig erinnere bis zu der dreifachen Zeit. dann wären auch alle Register erreichbar. Wäre das eine Idee? Hoffe ich finde die Angaben dazu noch.

Mein Fhem Server ist ein alter Laptop, wäre es ein Versuch wert, deine beiden Module auf einem Rechner zu installieren?
Geht das überhaupt? Ist eine FHEM2FhEM Konfiguration für deine Module zwingend erforderlich?
Gabe es schon eine Antwort zu der Frage zwei Instanzen von Fhem auf einem Rechner laufen zu lassen und mit FHEM2FHem zu kombinieren?

Ich vermute, dass eine Portierung auf ein Arduino oder gar einem ESP8266, kommt eher einer Neuprogrammierung nahe, oder?

Liebe Grüße Sonnenschein
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 21 November 2018, 22:55:22
Gefunden das Thema mit den Timeout und einzelabfragen der Register
Siehe Anhang Seite 22.

mit log.set 0,5sec
ohne log.set 2,1sec
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 23 November 2018, 13:28:49
Hallo Sonnenschein,

das was du zu den Einzelabfragen gefunden hast, bezieht sich auf die Modbus-Erweiterung. Das Fhem-Modul simuliert ja genau dieses, daher sind die Angaben so nicht anwendbar. Aber natürlich kann das Fhem-Modul das trotzdem ;-)

Das Modul kann beliebige Register aus der Heizung lesen. Dabei gibt es nur den Unterschied, ob der Register zu den 20 Registern gehört, die über den ModbusManager definiert werden können. Wenn es zu diesen gehört, liefert die Heizung die Werte regelmäßig ans Modul. Ansonsten muß das Modul den Registerwert direkt bei der Heizung anfragen. Der zweite Weg dauert etwas länger. Aber mit Hilfe von 'notify' oder 'DOIF' lassen sich dann alle Register von der Heizung holen.

Das Problem mit den zwei Fhem-Instanzen besteht darin, dass die Heizung ihre Nachrichten immer sehr zeitnah bestätigt haben will. Das klappt, bei mir, nicht auf der Hauptinstallation bzw. das komplette Verarbeiten der Nachrichten dauert zu lange. Naja und dann steht meine Hauptinstanz auch nicht neben der Heizung. Die zweite Fhem-Instanz läuft bei mir auf einem Raspi B+. Da kommen nur die Daten von der Heizung und ein paar Stromzählern an. Grundsätzlich funktioniert das aber auch alles auf einer Fhem-Instanz. Wenn die Nachrichten nicht rechtzeitig bestätigt werden, geht die Heizung in den Alarmmodus, funktioniert aber weiterhin und liefert auch weiterhin Daten ans Modul. Zum Testen könnte ich das akzeptieren. Zwei Fhem-Instanzen auf dem gleichen Rechner hat wohl noch keiner probiert bzw. ich habe da keine Antwort bekommen.

Bei einer Portierung auf Arduino / ESP8266 müsste man das Module bzw. Teile davon komplett neu machen. In dieser Richtung plane ich aber momentan nichts.

Viele Grüße
Ulf
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 05 Januar 2019, 19:30:04
Hallo,

ich habe meinen RS485 USB Stick erhalten und auch schon einige Versuche unternommen.
1. Einzelne Register lesen und schreiben geht auf einem Rechner.
2. Nibe akzeptiert irgend wie die LOG.SET nicht. Es werden keine Daten über den Modbus gesendet als auch auf den Stick geschrieben.
3. Ca nach 24h +/- 1h timeout wie zu vermuten war.
4. Habe NibeGW (Raspbery) gestartet, hier gibt es keinen timeout. Die RAW Daten werden fleißig per UDP gesendet. Es gibt keinen timeout.

Jetzt dachte ich fein, jetzt mache ich aus NIBE 70 RS485.pm einfach ein NIBE 70 UDP.
Leider sind meine PERL Kenntnisse eher eines DAUs und musste feststellen ich werde mich nicht rein denken könne.
Auf Openhab2 wollte ich jetzt auch nicht umstellen.

Der Vorteil mit NibeGW ist, local könnte ich den Dienst höher priorisieren umd timeouts zu verhindern. NibeGW gibt es auch als Arduino, die könnte man auf einen ESP8266 kompalieren. So hätte meinen Dongle, den man einfach an die Nibe Pumpe anschließen könnte.
Laut Änderungsverzeichniss soll NibeGW auch schreiben können.

Wäre es für Euch möglich eine UDP Variante mit aufzunehmen?
Sobald ich den Code für einen ESP8266 fertig habe, würde ich ihn auch veröffentlichen.

Ich würde es gerne sogar selber versuchen, aber ich bin wohl noch zu weit weg vom progammieren.

Liebe Grüße
Sonnenschein.


Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 06 Januar 2019, 11:53:17
Hallo Sonnenschein,

da hast du ja einiges probiert. Ich versuche mal die einzelnen Punkte aus deinem Beitrag zu kommentieren  ;)

Das Problem mit dem USB-Stick und LOG.SET sollte sich unabhängig vom Modul direkt mit an der Nibe lösen lassen. Prüfe mal genau, nach den Anweisungen von Nibe, das Format des Sticks und die Datei (Format, Dateinamen, Ablageort auf dem Stick). Wenn du es schaffst, Logs auf den Stick zu schreiben, liefert die Nibe auch über die Modbus40-Schnittstelle Daten.

Hast du jetzt eigentlich alles nur auf dem Rechner installiert? Da hatte ich auch vermutet, dass es nicht ohne Timeouts geht. Wo läuft das NibeGW? Wenn du da extra einen Raspi genommen hast, könntest du den doch auch für Fhem benutzen.

Mit UDP habe ich mich auch noch nicht weiter beschäftigt, aber nichts ist unmöglich. Man braucht, wie immer, nur die Zeit dafür. Also ich kann nichts versprechen, aber ich überlege es mir mal. Ich habe mir den Code vom NibeGW (für openhab2) mal angeschaut, du hast recht, da sind die Kommandos zu sehen, damit man auch einzelnen Werte lesen und schreiben können sollte.

Viele Grüße,
VuffiRaa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 06 Januar 2019, 22:26:42
Hallo VuffiRaa,

bin auch schon ein kleines bisschen weitergekommen.
Aber erst zu deinen Themen.

LOG.SET: Die Nibe Pumpe schreibt die LOG Daten auf den USB Stick. Aber ich erkenne weder über dein NIBE70_RS485.pm oder NibeGW, dass die LOG:SET Daten gesendet werden. Vielleicht interpretiere ich es ja auch falsch. Es werde in beiden Varianten ca. alle 2 Sekunden RAW Daten gesendet die mit 5c00206850 beginnen und dann mit 20x mit FFFF0000 gefüllt sind. Das sieht für mich nach keinen Inhalt aus, das HEX 68 einen LOG.SET kennzeichnet. Pass ja auch zu den 20x FFFF0000.

Installation: Einmal hatte beide NIBE Module auf einem Rechner installiert. Was ja wie beschrieben mit timeout funktionierte. Jetzt läuft NibeGW, FHEM, UPNP und Samba auf dem Rechner. Ich habe jetzt seit zwei Tagen keinen timeout gehabt. Gut NibeGW muss jetzt auch nur den RS485 Transfer bestätigen und die Daten auf UDP pollen. Empfangen konnte ich mangels Programmier Erfahrungen nicht.  Denke an NibeGW ist der Vorteil, das es im Hintergrund eigenständig laufen kann.

Weitere Erfahrungen:
Ich konnte ein $sock=IO::Socket::INE unter Perl installieren und somit über Perl die UDP Daten empfangen.
Jetz versuche ich es mit deinem nibe.pl Programm zu verknüpfen um einfach besser in Perl reinzukommen. Die Fhem Komponente ist gerade noch zu viel, für mich ist @Hash =@_ immer noch etwas völlig abstracktes. Wenn ich nibe.pl aber richtig verstanden habe, werden nur die LOG.SET Daten gesendet.

Also wäre der nächste Schritt, gezielte Werte abzufragen, wie es bei NIBE71.pm mit GET möglich ist.
Danach zu schreiben wie unter SET und dann die Einbindung in FHEM.
Aber es ist für mich der keine Erfahrung mit Perl hat sehr schwierig.

Das funktioniert
#!/usr/bin/perl -w

use IO::Socket;
use strict;

print "Start Server\n";

my ($sock);
my $data;

$sock=IO::Socket::INET->new(
  Proto => 'udp',
  LocalPort => 9999 ,
  Host => 127.0.0.1
) or die "Can't bind: $@\n";

print scalar localtime().": Awaiting data...\n";

while($sock->recv($data, 512)) {

  print scalar localtime().": , ";
  printf (unpack("H*",$data));
  print "\n";
}
print "Stop Server\n";

close($sock);


Da habe ich schon Problem im Umgang $daten und @daten $daten von UDP muss ich jetzt in ein Array bringen. Mal sehen ob ich es schaffe.
#!/usr/bin/perl -w
use strict;
use IO::Socket;

# http://search.cpan.org/~cook/Device-SerialPort-1.002/SerialPort.pm

# Configuration
my $debug = 1; # If you want to see the RAW message please set debug=1

#------------------------------------------------------------------------------------------------------

print "UDP Socket\n";

my ($sock);
$sock=IO::Socket::INET->new(
  Proto => 'udp',
  LocalPort => 9999 ,
  Host => 127.0.0.1
) or die "Can't bind: $@\n";



# Define the basic variables
my $daten; # Array for storing the message



print "Initialized. Let´s go...\n";


# Start the main queue
while(1) {
        # Daten vom UDP Socket holen
$sock->recv($daten, 512);

# Check if the end of the message has arrived
if (defined $daten [0] && $daten[0] eq "5c" && defined $daten[4] && defined $daten[5]) {

# Check if the length of the message is reached.
if (0+@daten==hex($daten[4])+6) {

# Calculate checksum
my $j=0;
my $checksum=0;
for (my $j = 2; $j < hex($daten[4])+5; $j++) {
        $checksum = $checksum^hex($daten[$j]);
  }

                        # Print what we got so far to the console
                        print "HEAD: $daten[0]$daten[1] ADDR: $daten[2] CMD: $daten[3] LEN: $daten[4] CHK: $daten[@daten-1]";


# } nicht gelöscht?

# Check if we got a message with the command 68
# In this message we can expect 20 values from the heater which were defined with the help of ModbusManager
if ($daten[3] eq "68") {
my $j=5;
while($j <  hex($daten[4])+1) {
if ($daten[$j+1].$daten[$j] ne "ffff") {
# Getting the register name
print return_register( hex($daten[$j+1].$daten[$j]),0);
#print " ";
       
print $daten[$j+1] . " " . $daten[$j] . " - " . $daten[$j+3] . " " . $daten[$j+2] . "\n";

# Calculating the actual value
#my $valuetype = return_register( hex($daten[$j+1].$daten[$j]),3);
#my $factor = return_register( hex($daten[$j+1].$daten[$j]),4);
#print return_normalizedvalue($valuetype,$daten[$j+3].$daten[$j+2])/$factor."\n";
$j=$j+4;
} else {
$j=$j+4;
}

}
}

@daten=();
}
}

$SIG{INT} = sub { die "Caught a sigint: $!" };
}

print "\nScript Ended\n";


sub return_normalizedvalue {
# Helper for normalizing the value
#s16, #s32, #u16, u8, #u32, #s8
my (@input) = @_;

if ($input[0] eq "s8") {
    return 0 if $input[1] !~ /^[0-9A-Fa-f]{1,2}$/;
my $num = hex($input[1]);
return $num >> 7 ? $num - 2 ** 8 : $num;
}
elsif ($input[0] eq "s16") {
return 0 if $input[1] !~ /^[0-9A-Fa-f]{1,4}$/;
my $num = hex($input[1]);
return $num >> 15 ? $num - 2 ** 16 : $num;
}
elsif ($input[0] eq "s32") {
return 0 if $input[1] !~ /^[0-9A-Fa-f]{1,8}$/;
my $num = hex($input[1]);
return $num >> 31 ? $num - 2 ** 32 : $num;
}
else {
# Lazy replacement for U8 -> U32
return hex($input[1]);
}
}

sub write_data {
# To be done:
#http://elektronikforumet.com/forum/viewtopic.php?f=4&t=13714&sid=34bc49f6c5651c1464df383af2906265&start=165
#sendBuffer[0] = 0x01; // To the master address 1
#sendBuffer[1] = 0x10; // Write command
#sendBuffer[2] = 0xB7; // High byte address register
#sendBuffer[3] = 0xA3; // Low byte address register
#sendBuffer[4] = 0x00; // Number of register to write high byte
#sendBuffer[5] = 0x01; // Number of register to write low byte
#sendBuffer[6] = 0x02; // Number of following bytes
#tempshort = short.Parse(textBox29.Text);
#shortBuffer = BitConverter.GetBytes(tempshort);
#sendBuffer[7] = shortBuffer[1]; // Value to set, high byte
#sendBuffer[8] = shortBuffer[0]; // Value to set, low byte
#CRC = ModRTU_CRC(sendBuffer, 9);
#sendBuffer[9] = (byte)CRC;
#sendBuffer[10] = (byte)(CRC / 256);



}

sub return_register {

#Title  = 0
#Info = 1
#Unit = 2
#Size = 3
#Factor = 4
#Min = 5
#Max = 6
#Default= 7
#Mode = 8

my (@input) = @_;
my %register = (
40004 => ["BT1 Outdoor temp","Outdoor temperature","°C","s16","10","0","0","0","R"],
40005 => ["EB23-BT2 Supply temp S4","Supply temperature for system 4","°C","s16","10","0","0","0","R"],
40005 => ["EB23-BT2 Supply temp S4","Supply temperature for system 4","°C","s16","10","0","0","0","R"],
40006 => ["EB22-BT2 Supply temp S3","Supply temperature for system 3","°C","s16","10","0","0","0","R"],
40007 => ["EB21-BT2 Supply temp S2","Supply temperature for system 2","°C","s16","10","0","0","0","R"],
40008 => ["BT2 Supply temp S1","Supply temperature for system 1","°C","s16","10","0","0","0","R"],
40012 => ["EB100-EP14-BT3 Return temp","Return temperature","°C","s16","10","0","0","0","R"],
40013 => ["BT7 Hot Water top","","°C","s16","10","0","0","0","R"],
40014 => ["BT6 Hot Water load","","°C","s16","10","0","0","0","R"],
40017 => ["EB100-EP14-BT12 Cond. out","","°C","s16","10","0","0","0","R"],
40018 => ["EB100-EP14-BT14 Hot gas temp","","°C","s16","10","0","0","0","R"],
40019 => ["EB100-EP14-BT15 Liquid line","","°C","s16","10","0","0","0","R"],
40020 => ["EB100-BT16 Evaporator temp","","°C","s16","10","0","0","0","R"],
40022 => ["EB100-EP14-BT17 Suction","","°C","s16","10","0","0","0","R"],
40025 => ["EB100-BT20 Exhaust air temp.","","°C","s16","10","0","0","0","R"],
40026 => ["EB100-BT21 Vented air temp.","","°C","s16","10","0","0","0","R"],
40030 => ["EB23-BT50 Room Temp S4","","°C","s16","10","0","0","0","R"],
40031 => ["EB22-BT50 Room Temp S3","","°C","s16","10","0","0","0","R"],
40032 => ["EB21-BT50 Room Temp S2","","°C","s16","10","0","0","0","R"],
40033 => ["BT50 Room Temp S1","","°C","s16","10","0","0","0","R"],
40045 => ["EQ1-BT64 PCS4 Supply Temp","PCS4 Only","°C","s16","10","0","0","0","R"],
40047 => ["EB100-BT61 Supply Radiator Temp","","°C","s16","10","0","0","0","R"],
40048 => ["EB100-BT62 Return Radiator Temp","","°C","s16","10","0","0","0","R"],
40050 => ["EB100-BS1 Air flow","","","s16","10","0","0","0","R"],
40051 => ["EB100-BS1 Air flow unfiltered","Unfiltered air flow value","","s16","100","0","0","0","R"],
40054 => ["EB100-FD1 Temperature limiter","","","s16","1","0","0","0","R"],
40067 => ["BT1 Average","EB100-BT1 Outdoor temperature average","°C","s16","10","0","0","0","R"],
40071 => ["BT25 external supply temp","","°C","s16","10","0","0","0","R"],
40072 => ["BF1 Flow","Current flow","l/m","s16","10","0","0","0","R"],
40074 => ["EB100-FR1 Anode Status","","","s16","1","0","0","0","R"],
40077 => ["BT6 external water heater load temp.","This includes DEW and SCA accessory","°C","s16","10","0","0","0","R"],
40078 => ["BT7 external water heater top temp.","This includes DEW and SCA accessory","°C","s16","10","0","0","0","R"],
40079 => ["EB100-BE3 Current Phase 3","","A","s32","10","0","0","0","R"],
40081 => ["EB100-BE2 Current Phase 2","","A","s32","10","0","0","0","R"],
40083 => ["EB100-BE1 Current Phase 1","","A","s32","10","0","0","0","R"],
40107 => ["EB100-BT20 Exhaust air temp.","","°C","s16","10","0","0","0","R"],
40108 => ["EB100-BT20 Exhaust air temp.","","°C","s16","10","0","0","0","R"],
40109 => ["EB100-BT20 Exhaust air temp.","","°C","s16","10","0","0","0","R"],
40110 => ["EB100-BT21 Vented air temp.","","°C","s16","10","0","0","0","R"],
40111 => ["EB100-BT21 Vented air temp.","","°C","s16","10","0","0","0","R"],
40112 => ["EB100-BT21 Vented air temp.","","°C","s16","10","0","0","0","R"],
40127 => ["EB23-BT3 Return temp S4","Return temperature for system 4","°C","s16","10","0","0","0","R"],
40128 => ["EB22-BT3 Return temp S3","Return temperature for system 3","°C","s16","10","0","0","0","R"],
40129 => ["EB21-BT3 Return temp S2","Return temperature for system 2","°C","s16","10","0","0","0","R"],
40141 => ["AZ2-BT22 Supply air temp. SAM","","ºC","s16","10","0","0","0","R"],
40142 => ["AZ2-BT23 Outdoor temp. SAM","","ºC","s16","10","0","0","0","R"],
40143 => ["AZ2-BT68 Flow temp. SAM","Heat medium flow temperature to SAM module","°C","s16","10","0","0","0","R"],
40144 => ["AZ2-BT69 Return temp. SAM","Heat medium return temperature from SAM module","°C","s16","10","0","0","0","R"],
40157 => ["EP30-BT53 Solar Panel Temp","","°C","s16","10","0","0","0","R"],
40158 => ["EP30-BT54 Solar Load Temp","","°C","s16","10","0","0","0","R"],
43001 => ["Software version","","","u16","1","0","0","0","R"],
43005 => ["Degree Minutes","","","s16","10","-30000","30000","0","R/W"],
43006 => ["Calculated Supply Temperature S4","","°C","s16","10","0","0","0","R"],
43007 => ["Calculated Supply Temperature S3","","°C","s16","10","0","0","0","R"],
43008 => ["Calculated Supply Temperature S2","","°C","s16","10","0","0","0","R"],
43009 => ["Calculated Supply Temperature S1","","°C","s16","10","0","0","0","R"],
43013 => ["Freeze Protection Status","1 = Freeze protection active","","u8","1","0","0","0","R"],
43061 => ["t. after start timer","","","u8","1","0","0","0","R"],
43062 => ["t. after mode change","Time after mode change","","u8","1","0","0","0","R"],
43064 => ["HMF dT set.","set point delta T for the heat medium flow","","s16","10","0","0","0","R"],
43065 => ["HMF dT act.","Current value of the delta T for the heat medium flow","","s16","10","0","0","0","R"],
43081 => ["Tot. op.time add.","Total electric additive operation time","h","s32","10","0","9999999","0","R"],
43084 => ["Int. el.add. Power","Current power from the internal electrical addition","kW","s16","100","0","0","0","R"],
43086 => ["Prio","Indicates what heating action (HW/heat/pool) currently prioritised 10=Off 20=Hot Water 30=Heat 40=Pool 41=Pool 2 50=Transfer 60=Cooling","","u8","1","0","0","0","R"],
43091 => ["Int. el.add. State","State of the internal electrical addition","","u8","1","0","0","0","R"],
43108 => ["Fan speed current","The current fan speed after scheduling and blocks are considered","%","u8","1","0","0","0","R"],
43122 => ["Compr. current min.freq.","The current minimum frequency of the compressor","Hz","s16","1","0","0","0","R"],
43123 => ["Compr. current max.freq.","The current maximum frequency of the compressor","Hz","s16","1","0","0","0","R"],
43124 => ["Airflow ref.","Reference value for the airflow.","","s16","10","0","0","0","R"],
43132 => ["Inverter com. timer","This value shows the time since last communication with the inverter","sec","u16","1","0","0","0","R"],
43133 => ["Inverter drive status","","","u16","1","0","0","0","R"],
43136 => ["Compr. current freq.","The frequency of the compressor at the moment","Hz","u16","10","0","0","0","R"],
43137 => ["Inverter alarm code","","","u16","1","0","0","0","R"],
43138 => ["Inverter fault code","","","u16","1","0","0","0","R"],
43140 => ["compr. temp.","Current compressor temparture","°C","s16","10","0","0","0","R"],
43141 => ["compr. in power","The power delivered from the inverter to the compressor","W","u16","1","0","0","0","R"],
43144 => ["Compr. energy total","Total compressor energy in kWh","kWh","u32","100","0","9999999","0","R"],
43145 => ["Unknown"," ",,"kWh","u32","100","0","9999999","0","R"],
43147 => ["Compr. in current","The current delivered from the inverter to the compressor","A","s16","1","0","0","0","R"],
43181 => ["Chargepump speed","","","s16","1","0","0","0","R"],
43182 => ["Compr. freq. setpoint","The targeted compressor frequency","Hz","u16","1","0","0","0","R"],
43239 => ["Tot. HW op.time add.","Total electric additive operation time in hot water mode","h","s32","10","0","9999999","0","R"],
43305 => ["Compr. energy HW","Compressor energy during hot water production in kWh","kWh","u32","100","0","9999999","0","R"],
43375 => ["compr. in power mean","Mean power delivered from the inverter to the compressor. Mean is calculated every 10 seconds.","W","s16","1","0","0","0","R"],
43382 => ["Inverter mem error code","","","u16","1","0","0","0","R"],
43416 => ["Compressor starts EB100-EP14","Number of compressorer starts","","s32","1","0","9999999","0","R"],
43420 => ["Tot. op.time compr. EB100-EP14","Total compressorer operation time","h","s32","1","0","9999999","0","R"],
43424 => ["Tot. HW op.time compr. EB100-EP14","Total compressorer operation time in hot water mode","h","s32","1","0","9999999","0","R"],
43427 => ["Compressor State EP14","20 = Stopped, 40 = Starting, 60 = Running, 100 = Stopping","","u8","1","0","0","0","R"],
43435 => ["Compressor status EP14","Indicates if the compressor is supplied with power 0=Off 1=On","","u8","1","0","0","0","R"],
43437 => ["HM-pump Status EP14","Status of the circ. pump","","u8","1","0","0","0","R"],
43514 => ["PCA-Base Relays EP14","Indicates the active relays on the PCA-Base card. The information is binary encoded","","u8","1","0","0","0","R"],
43516 => ["PCA-Power Relays EP14","Indicates the active relays on the PCA-Power card. The information is binary encoded","","u8","1","0","0","0","R"],
43542 => ["Calculated supply air temp.","","ºC","s16","10","0","0","0","R"],
44258 => ["External supply air accessory relays","Indicates the status of the relays on the external supply air accessory. The information is binary encoded. B0: relay K1 (QN40 close signal). B1: relay K2 (QN40 open signal)","","u8","1","0","0","0","R"],
44267 => ["Calc. Cooling Supply Temperature S4","","°C","s16","10","0","0","0","R"],
44268 => ["Calc. Cooling Supply Temperature S3","","°C","s16","10","0","0","0","R"],
44269 => ["Calc. Cooling Supply Temperature S2","","°C","s16","10","0","0","0","R"],
44270 => ["Calc. Cooling Supply Temperature S1","","°C","s16","10","0","0","0","R"],
44317 => ["SCA accessory relays","Indicates the status of the relays on the SCA accessory. The information is binary encoded. B0: relay K1 (Solar pump). B1: relay K2 (Solar Cooling Pump) B2: relay K3 (QN28)","","u8","1","0","0","0","R"],
44331 => ["Software release","","","u8","1","0","0","0","R"],
45001 => ["Alarm number","The value indicates the most severe current alarm","","s16","1","0","0","0","R"],
47062 => ["HW charge offset","Offset of HW charge temperature from the stop temperature","°C","s8","10","0","0","0","R/W"],
47291 => ["Floor drying timer","","hrs","u16","1","0","10000","0","R"],
47004 => ["Heat curve S4","Heat curve to use see manual for the different curves.","","s8","1","0","15","9","R/W"],
47005 => ["Heat curve S3","Heat curve to use see manual for the different curves.","","s8","1","0","15","9","R/W"],
47006 => ["Heat curve S2","Heat curve to use see manual for the different curves.","","s8","1","0","15","9","R/W"],
47007 => ["Heat curve S1","Heat curve to use see manual for the different curves.","","s8","1","0","15","9","R/W"],
47008 => ["Offset S4","Offset of the heat curve","","s8","1","-10","10","0","R/W"],
47009 => ["Offset S3","Offset of the heat curve","","s8","1","-10","10","0","R/W"],
47010 => ["Offset S2","Offset of the heat curve","","s8","1","-10","10","0","R/W"],
47011 => ["Offset S1","Offset of the heat curve","","s8","1","-10","10","0","R/W"],
47012 => ["Min Supply System 4","","°C","s16","10","50","700","200","R/W"],
47013 => ["Min Supply System 3","","°C","s16","10","50","700","200","R/W"],
47014 => ["Min Supply System 2","","°C","s16","10","50","700","200","R/W"],
47015 => ["Min Supply System 1","","°C","s16","10","50","700","200","R/W"],
47016 => ["Max Supply System 4","","°C","s16","10","50","700","600","R/W"],
47017 => ["Max Supply System 3","","°C","s16","10","50","700","600","R/W"],
47018 => ["Max Supply System 2","","°C","s16","10","50","700","600","R/W"],
47019 => ["Max Supply System 1","","°C","s16","10","50","700","600","R/W"],
47020 => ["Own Curve P7","User defined curve point","°C","s8","1","0","80","15","R/W"],
47021 => ["Own Curve P6","User defined curve point","°C","s8","1","0","80","15","R/W"],
47022 => ["Own Curve P5","User defined curve point","°C","s8","1","0","80","26","R/W"],
47023 => ["Own Curve P4","User defined curve point","°C","s8","1","0","80","32","R/W"],
47024 => ["Own Curve P3","User defined curve point","°C","s8","1","0","80","35","R/W"],
47025 => ["Own Curve P2","User defined curve point","°C","s8","1","0","80","40","R/W"],
47026 => ["Own Curve P1","User defined curve point","°C","s8","1","0","80","45","R/W"],
47027 => ["Point offset outdoor temp.","Outdoor temperature point where the heat curve is offset","°C","s8","1","-40","30","0","R/W"],
47028 => ["Point offset","Amount of offset at the point offset temperature","°C","s8","1","-10","10","0","R/W"],
47029 => ["External adjustment S4","Change of the offset of the heat curve when closing the external adjustment input","","s8","1","-10","10","0","R/W"],
47030 => ["External adjustment S3","Change of the offset of the heat curve when closing the external adjustment input","","s8","1","-10","10","0","R/W"],
47031 => ["External adjustment S2","Change of the offset of the heat curve when closing the external adjustment input","","s8","1","-10","10","0","R/W"],
47032 => ["External adjustment S1","Change of the offset of the heat curve when closing the external adjustment input","","s8","1","-10","10","0","R/W"],
47033 => ["External adjustment with room sensor S4","Room temperature setting when closing the external adjustment input","°C","s16","10","50","300","200","R/W"],
47034 => ["External adjustment with room sensor S3","Room temperature setting when closing the external adjustment input","°C","s16","10","50","300","200","R/W"],
47035 => ["External adjustment with room sensor S2","Room temperature setting when closing the external adjustment input","°C","s16","10","50","300","200","R/W"],
47036 => ["External adjustment with room sensor S1","Room temperature setting when closing the external adjustment input","°C","s16","10","50","300","200","R/W"],
47041 => ["Hot water mode"," 0=Economy 1=Normal 2=Luxury","","s8","1","0","2","1","R/W"],
47043 => ["Start temperature HW Luxury","Start temperature for heating water","°C","s16","10","50","700","470","R/W"],
47044 => ["Start temperature HW Normal","Start temperature for heating water","°C","s16","10","50","700","450","R/W"],
47045 => ["Start temperature HW Economy","Start temperature for heating water","°C","s16","10","50","700","380","R/W"],
47046 => ["Stop temperature Periodic HW","Temperature where hot water generation will stop","°C","s16","10","550","700","550","R/W"],
47047 => ["Stop temperature HW Luxury","Temperature where hot water generation will stop","°C","s16","10","50","700","520","R/W"],
47048 => ["Stop temperature HW Normal","Temperature where hot water generation will stop","°C","s16","10","50","700","500","R/W"],
47049 => ["Stop temperature HW Economy","Temperature where hot water generation will stop","°C","s16","10","50","700","430","R/W"],
47050 => ["Periodic HW","Activates the periodic hot water generation","","s8","1","0","1","1","R/W"],
47051 => ["Periodic HW Interval","Interval between Periodic hot water sessions","days","s8","1","1","90","14","R/W"],
47054 => ["Run time HWC","Run time for the hot water circulation system","min","s8","1","1","60","3","R/W"],
47055 => ["Still time HWC","Still time for the hot water circulation system","min","s8","1","0","60","12","R/W"],
47092 => ["Manual compfreq HW","Should the compressor frequency be manual set in HW?","","u8","1","0","0","0","R/W"],
47093 => ["Manual compfreq speed HW","Manual compressor frequency in HW?","Hz","u16","1","0","0","0","R/W"],
47094 => ["Sec per compfreq step","Time between changes of the copmpressor frequency","s","u8","1","0","0","0","R/W"],
47095 => ["Max compfreq step","Largest allowed change of compressor frequency in normal run","Hz","u8","1","0","0","0","R/W"],
47096 => ["Manual compfreq Heating","Should the compressor frequency be manual set in Heating?","","u8","1","0","0","0","R/W"],
47097 => ["Min speed after start","Time with minimum compressor frequency when heating demand occurs","Min","u8","1","0","0","0","R/W"],
47098 => ["Min speed after HW","Should the compressor frequency be manual set in HW?","Min","u8","1","0","0","0","R/W"],
47099 => ["GMz","Compressor frequency regulator GMz","","u8","1","0","0","0","R/W"],
47100 => ["Max diff VBF-BerVBF","Largest allowed difference between Supply and calc supply","°C","u8","10","0","0","0","R/W"],
47101 => ["Comp freq reg P","Compressor frequency regulator P","","u8","1","0","0","0","R/W"],
47102 => ["Comp freq max delta F","Maximum change of copmpressor frequency in compressor frequency regulator","Hz","s8","1","0","0","0","R/W"],
47103 => ["Min comp freq","Minimum allowed compressor frequency","Hz","s16","1","0","0","0","R/W"],
47104 => ["Max comp freq","Maximum allowed compressor frequency","Hz","s16","1","0","0","0","R/W"],
47105 => ["Comp freq heating","Compressor frequency used in heating mode","Hz","s16","1","0","0","0","R/W"],
47131 => ["Language","Display language in the heat pump 0=English 1=Svenska 2=Deutsch 3=Francais 4=Espanol 5=Suomi 6=Lietuviu 7=Cesky 8=Polski 9=Nederlands 10=Norsk 11=Dansk 12=Eesti 13=Latviesu 16=Magyar","","s8","1","0","18","0","R/W"],
47134 => ["Period HW","","min","u8","1","0","180","20","R/W"],
47135 => ["Period Heat","","min","u8","1","0","180","20","R/W"],
47136 => ["Period Pool","","min","u8","1","0","180","20","R/W"],
47138 => ["Operational mode heat medium pump"," 10=Intermittent 20=Continous 30=Economy 40=Auto","","u8","1","10","40","40","R/W"],
47206 => ["DM start heating","The value the degree minutes needed to be reached for the pump to start heating","","s16","1","-1000","-30","-60","R/W"],
47207 => ["DM start cooling","The value the degree minutes needed to be reached for the pump to start cooling","","s16","1","0","0","0","R/W"],
47208 => ["DM start add.","The value the degree minutes needed to be reached for the pump to start electric addition","","s16","1","0","0","0","R/W"],
47209 => ["DM between add. steps","The number of degree minutes between start of each electric addition step","","s16","1","0","0","0","R/W"],
47210 => ["DM start add. with shunt","","","s16","1","-2000","-30","-400","R/W"],
47212 => ["Max int add. power","","kW","s16","100","0","4500","600","R/W"],
47214 => ["Fuse","Size of the fuse that the HP is connected to","A","u8","1","1","200","16","R/W"],
47261 => ["Exhaust Fan speed 4","","%","u8","1","0","100","100","R/W"],
47262 => ["Exhaust Fan speed 3","","%","u8","1","0","100","80","R/W"],
47263 => ["Exhaust Fan speed 2","","%","u8","1","0","100","30","R/W"],
47264 => ["Exhaust Fan speed 1","","%","u8","1","0","100","0","R/W"],
47265 => ["Exhaust Fan speed normal","","%","u8","1","0","100","65","R/W"],
47266 => ["Supply Fan speed 4","","%","u8","1","0","100","90","R/W"],
47267 => ["Supply Fan speed 3","","%","u8","1","0","100","70","R/W"],
47268 => ["Supply Fan speed 2","","%","u8","1","0","100","25","R/W"],
47269 => ["Supply Fan speed 1","","%","u8","1","0","100","0","R/W"],
47270 => ["Supply Fan speed normal","","%","u8","1","0","100","60","R/W"],
47271 => ["Fan return time 4","Time from a changed fan speed until it returns to normal speed","h","u8","1","1","99","4","R/W"],
47272 => ["Fan return time 3","Time from a changed fan speed until it returns to normal speed","h","u8","1","1","99","4","R/W"],
47273 => ["Fan return time 2","Time from a changed fan speed until it returns to normal speed","h","u8","1","1","99","4","R/W"],
47274 => ["Fan return time 1","Time from a changed fan speed until it returns to normal speed","h","u8","1","1","99","4","R/W"],
47275 => ["Filter Reminder period","Time between the reminder of filter replacement/cleaning.","Months","u8","1","1","24","3","R/W"],
47276 => ["Floor drying"," 0=Off 1=On","","u8","1","0","1","0","R/W"],
47277 => ["Floor drying period 7","Days each period is active","days","u8","1","0","30","2","R/W"],
47278 => ["Floor drying period 6","Days each period is active","days","u8","1","0","30","2","R/W"],
47279 => ["Floor drying period 5","Days each period is active","days","u8","1","0","30","2","R/W"],
47280 => ["Floor drying period 4","Days each period is active","days","u8","1","0","30","3","R/W"],
47281 => ["Floor drying period 3","Days each period is active","days","u8","1","0","30","2","R/W"],
47282 => ["Floor drying period 2","Days each period is active","days","u8","1","0","30","2","R/W"],
47283 => ["Floor drying period 1","Days each period is active","days","u8","1","0","30","2","R/W"],
47284 => ["Floor drying temp. 7","Supply temperature each period","°C","u8","1","15","70","20","R/W"],
47285 => ["Floor drying temp. 6","Supply temperature each period","°C","u8","1","15","70","30","R/W"],
47286 => ["Floor drying temp. 5","Supply temperature each period","°C","u8","1","15","70","40","R/W"],
47287 => ["Floor drying temp. 4","Supply temperature each period","°C","u8","1","15","70","45","R/W"],
47288 => ["Floor drying temp. 3","Supply temperature each period","°C","u8","1","15","70","40","R/W"],
47289 => ["Floor drying temp. 2","Supply temperature each period","°C","u8","1","15","70","30","R/W"],
47290 => ["Floor drying temp. 1","Supply temperature each period","°C","u8","1","15","70","20","R/W"],
47294 => ["Use airflow defrost","If reduced airflow should start defrost","","u8","1","0","0","0","R/W"],
47295 => ["Airflow reduction trig","How much the airflow is allowed to be reduced before a defrost is trigged","%","u8","1","0","0","0","R/W"],
47296 => ["Airflow defrost done","How much the airflow has to raise before a defrost is ended","%","u8","1","0","0","0","R/W"],
47297 => ["Initiate inverter","Start initiation process of the inverter","","u8","1","0","0","0","R/W"],
47298 => ["Force inverter init","Force inverter initiation process of the inverter","","u8","1","0","0","0","R/W"],
47299 => ["Min time defrost","Minimum duration of the defrost","min","u8","1","0","0","0","R/W"],
47300 => ["DOT","Dimensioning outdoor temperature","°C","s16","10","-400","200","-180","R/W"],
47301 => ["delta T at DOT","Delta T (BT12-BT3)at dimensioning outdoor temperature","°C","s16","10","0","250","100","R/W"],
47302 => ["Climate system 2 accessory","Activates the climate system 2 accessory 0=Off 1=On","","u8","1","0","1","0","R/W"],
47303 => ["Climate system 3 accessory","Activates the climate system 3 accessory 0=Off 1=On","","u8","1","0","1","0","R/W"],
47304 => ["Climate system 4 accessory","Activates the climate system 4 accessory 0=Off 1=On","","u8","1","0","1","0","R/W"],
47305 => ["Climate system 4 mixing valve amp.","Mixing valve amplification for extra climate systems","","s8","10","1","100","10","R/W"],
47306 => ["Climate system 3 mixing valve amp.","Mixing valve amplification for extra climate systems","","s8","10","1","100","10","R/W"],
47307 => ["Climate system 2 mixing valve amp.","Mixing valve amplification for extra climate systems","","s8","10","1","100","10","R/W"],
47308 => ["Climate system 4 shunt wait","Wait time between changes of the shunt in extra climate systems","secs","s16","10","10","300","30","R/W"],
47309 => ["Climate system 3 shunt wait","Wait time between changes of the shunt in extra climate systems","secs","s16","10","10","300","30","R/W"],
47310 => ["Climate system 2 shunt wait","Wait time between changes of the shunt in extra climate systems","secs","s16","10","10","300","30","R/W"],
47317 => ["Shunt controlled add. accessory","Activates the shunt controlled addition accessory 0=Off 1=On","","u8","1","0","1","0","R/W"],
47318 => ["Shunt controlled add. min. temp.","","°C","s8","1","5","90","55","R/W"],
47319 => ["Shunt controlled add. min. runtime","","hrs","u8","1","0","48","12","R/W"],
47320 => ["Shunt controlled add. mixing valve amp.","Mixing valve amplification for shunt controlled add.","","s8","10","1","100","10","R/W"],
47321 => ["Shunt controlled add. mixing valve wait","Wait time between changes of the shunt in shunt controlled add.","secs","s16","1","10","300","30","R/W"],
47352 => ["SMS40 accessory","Activates the SMS40 accessory","","u8","1","0","1","0","R/W"],
47370 => ["Allow Additive Heating","Whether to allow additive heating (only valid for operational mode Manual)","","u8","1","0","1","1","R/W"],
47371 => ["Allow Heating","Whether to allow heating (only valid for operational mode Manual or Add. heat only)","","u8","1","0","1","1","R/W"],
47372 => ["Allow Cooling","Whether to allow cooling (only valid for operational mode Manual or Add. heat only)","","u8","1","0","1","1","R/W"],
47378 => ["Max diff. comp.","","°C","s16","10","10","250","100","R/W"],
47379 => ["Max diff. add.","","°C","s16","10","10","240","70","R/W"],
47384 => ["Date format"," 1=DD-MM-YY 2=YY-MM-DD","","u8","1","1","2","1","R/W"],
47385 => ["Time format"," 12=12 hours 24=24 Hours","","u8","1","12","24","24","R/W"],
47387 => ["HW production","Activates hot water production where applicable 0=Off 1=On","","u8","1","0","1","0","R/W"],
47388 => ["Alarm lower room temp.","Lowers the room temperature during red light alarms to notify the occupants of the building that something is the matter 0=Off 1=On","","u8","1","0","1","0","R/W"],
47389 => ["Alarm lower HW temp.","Lowers the hot water temperature during red light alarms to notify the occupants of the building that something is the matter 0=Off 1=On","","u8","1","0","1","1","R/W"],
47391 => ["Use room sensor S4","When activated the system uses the room sensor 0=Off 1=On","","u8","1","0","1","0","R/W"],
47392 => ["Use room sensor S3","When activated the system uses the room sensor 0=Off 1=On","","u8","1","0","1","0","R/W"],
47393 => ["Use room sensor S2","When activated the system uses the room sensor 0=Off 1=On","","u8","1","0","1","0","R/W"],
47394 => ["Use room sensor S1","When activated the system uses the room sensor 0=Off 1=On","","u8","1","0","1","0","R/W"],
47395 => ["Room sensor setpoint S4","Sets the room temperature setpoint for the system","°C","s16","10","50","300","200","R/W"],
47396 => ["Room sensor setpoint S3","Sets the room temperature setpoint for the system","°C","s16","10","50","300","200","R/W"],
47397 => ["Room sensor setpoint S2","Sets the room temperature setpoint for the system","°C","s16","10","50","300","200","R/W"],
47398 => ["Room sensor setpoint S1","Sets the room temperature setpoint for the system","°C","s16","10","50","300","200","R/W"],
47399 => ["Room sensor factor S4","Setting of how much the difference between set and actual room temperature should affect the supply temperature.","","u8","10","0","60","20","R/W"],
47400 => ["Room sensor factor S3","Setting of how much the difference between set and actual room temperature should affect the supply temperature.","","u8","10","0","60","20","R/W"],
47401 => ["Room sensor factor S2","Setting of how much the difference between set and actual room temperature should affect the supply temperature.","","u8","10","0","60","20","R/W"],
47402 => ["Room sensor factor S1","Setting of how much the difference between set and actual room temperature should affect the supply temperature.","","u8","10","0","60","20","R/W"],
47415 => ["Speed circ.pump Pool","","%","u8","1","0","100","70","R/W"],
47417 => ["Speed circ.pump Cooling","","%","u8","1","0","100","70","R/W"],
47442 => ["preset flow clim. sys.","Preset flow setting for climate system. 0 = manual setting, 1 = radiator, 2 = floor heating, 3 = radiator + floor heating.","","u8","1","0","3","1","R/W"],
47473 => ["Max time defrost","Maximum duration of the defrost","min","u8","1","0","0","0","R/W"],
47537 => ["Night cooling","If the fan should have a higher speed when there is a high room temp and a low outdoor temp. 0=Off 1=On","","u8","1","0","1","0","R/W"],
47538 => ["Start room temp. night cooling","","°C","u8","1","20","30","25","R/W"],
47539 => ["Night Cooling Min. diff.","Minimum difference between room temp and outdoor temp to start night cooling","°C","u8","1","3","10","6","R/W"],
47555 => ["DEW accessory","Activates the DEW accessory","","u8","1","0","1","0","R/W"],
47570 => ["Operational mode","The operational mode of the heat pump 0=Auto 1=Manual 2=Add. heat only","","u8","1","0","0","0","R/W"],
48134 => ["Operational mode charge pump","","","u8","1","10","20","20","R/W"],
48158 => ["SAM supply air curve: outdoor temp T3","The supply air curve is defined by 3 supply air temperatures at 3 different outdoor temperatures T1, T2 and T3.","°C","s16","10","-400","200","150","R/W"],
48159 => ["SAM supply air curve: outdoor temp T2","The supply air curve is defined by 3 supply air temperatures at 3 different outdoor temperatures T1, T2 and T3.","°C","s16","10","-390","190","0","R/W"],
48160 => ["SAM supply air curve: outdoor temp T1","The supply air curve is defined by 3 supply air temperatures at 3 different outdoor temperatures T1, T2 and T3.","°C","s16","10","-400","200","-150","R/W"],
48161 => ["SAM supply air curve: supply air temp at T3","The supply air curve is defined by 3 supply air temperatures at 3 different outdoor temperatures T1, T2 and T3.","°C","s16","10","160","520","220","R/W"],
48162 => ["SAM supply air curve: supply air temp at T2","The supply air curve is defined by 3 supply air temperatures at 3 different outdoor temperatures T1, T2 and T3.","°C","s16","10","160","520","220","R/W"],
48163 => ["SAM supply air curve: supply air temp at T1","The supply air curve is defined by 3 supply air temperatures at 3 different outdoor temperatures T1, T2 and T3.","°C","s16","10","160","520","220","R/W"],
48201 => ["SCA accessory","Activates the SCA accessory","","u8","1","0","1","0","R/W"],
);
return $register{$input[0]}[$input[1]];
}


Grüße Sonnenschein
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 07 Januar 2019, 08:53:57
Hallo

Bezüglich der umwandlung von String in Array habe ich eine Lösung gefunden.

funktioniert @daten= (unpack("H*",$d_UDP) =~ /(.{2})/g);
funtkionierte nicht push (@daten, unpack("H*",$d_UDP));

Auch mit LOG.SET bin ich weitergekommen
Habe den USB Stick komplett geleert.
Ich habe eine ganz neue LOG.SET mit nur 4 Einträgen generiert (Modbus 1.09)
Die Nibe Pumpe (Firmware v8839R3)  ausgeschaltet.
Auch der Haken die SET.LOG zu ignorieren ist wie sonst auch deaktiviert.
LOG Interval 10sec.
Jetzt kommen Blöcke mit 5c00206850 bei denen vier Datensätze gefüllt sind und der Rest mit FFFF0000 gefüllt ist

Naja und die NIBE7XXX.PM habe ich noch meine Probleme weil es für mich immer noch zu abstrackt ist.
Ich finde zum Beispiel nicht wo die Daten gelesen werden, es gibt zwar eine sub NIBE_485_Read aber die wird wohl nur durch select aufgerufen. Da kann ich wohl nicht die Daten einfach reinmogeln.... Naja ein Buch mit sieben Sigeln.
Da wäre es schön Hilfe zu bekommen.

Liebe Grüße
Sonenschein.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 07 Januar 2019, 11:25:34
Hallo Sonnenschein,

ich hattte gestern Abend mal geschaut, ob ich das Modul auf UDP umstellen kann. Gestern hat es noch nicht geklappt, aber eigentlich sollte es möglich sein. Ich schau mal weiter.

Die 5c00206850-Blöcke sind jetzt bei dir richtig. Es werden immer alle angeforderten Werte in den Block geschrieben und dann mit FFFF0000 bis zur Maximallänge aufgefüllt.

Die Nibe-Module in Fhem kombinieren auch noch 2 Ansätze, es soll ja nicht so einfach sein...
Einerseits ist das Konzept der Module zweistufig, siehe https://wiki.fhem.de/wiki/DevelopmentModuleIntro#Funktionen_f.C3.BCr_zweistufiges_Modulkonzept
Weiterhin werden Fhem-interne Funktionen verwendet, damit Fhem bei der Kommunikation nicht blockiert. Die Verbindung zur Nibe wird in Fhem registriert und dann ruft Fhem die Funktion NIBE_485_Read, wenn Daten auf Schnittstelle ankommen, siehe https://wiki.fhem.de/wiki/DevelopmentModuleIntro#Die_wichtigsten_Funktionen_in_einem_Modul

Bald kannst du mit deinem eigenen Modul anfangen  ;)

Gruß VuffiRaa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 07 Januar 2019, 21:40:45
Hallo VuffiRaa.

naja Ich und eigene Module schreiben, da bin ich der noch nicht einmal der einäugige unter den Blinden.
Bin heute schon ziemlich aufgelaufen. Aber irgendwie scheinst Du schon gewusst zu haben, wo ich mein nächstes Problem haben werde.

Habe ich es denn jetzt zu mindest richtig verstanden?
Ein ioread in NIBE70 greift übern den "FHEM KERN" auf die Routine NIBE_485_Read  in NIBE71.(führt sie aus)
Die Routine NIBE_485_Read  greift dann mit DevIo_SimpleRead direkt auf den Serialport.
Sprich einer der Aufgaben wäre, zum Beispiel die Daten in der NIBE_485_Read auf die UDP Daten um zulenken.
NIBE _485 liefert ja nur RAW Daten wie UDP Schnittstelle. Die Aufbereitung der Daten erfolgt ja erst in NIBE70.
Oder ist das noch zu naiv?

Irgendwie sagt mir mein Bauchgefühl, dass es eine neue NIBE70_UDP.PM bedarft.
Wenn es für Dich OK ist, würde ich auch Dich warten und mich jetzt mehr darauf zu konzentrieren, das NibeGW auf einem ESP8266 zu portieren.
Da hat der erste Versuch nämlich nicht funktioniert.
Aber es wäre insgesamt eine geniale Lösung, denn so würde NIBE Pume für unter 10€ WLAN fähig gemacht werden. Die dann auf zwei verschiedene Smarthome Systemen verwaltet werden könnte und naja vielleicht schreibt noch jemand als dritte Lösung eine APP.
Die WLAN Lösung hätte noch den Vorteil die Bindung erfolgt absolut potentialfrei wäre, weil ich vor habe die 12V der Nibe Pumpe für den ESP zu verwenden und somit quasi in die Nibe Pumpe integriert wird.

Viele liebe Grüße
Sonnenschein
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 07 Januar 2019, 22:12:20
Hallo Sonnenschein,

soweit scheinst du es verstanden zu haben. Wobei es kein Nibe70 braucht. Das war der allererste Versuch für das Modul. Momentan braucht man nur 70_NIBE_485.pm und 71_NIBE.pm.

Falls du mal etwas probieren willst. Ich habe eine neue Datei ins Git gelegt 70_NIBE_UDP.pm. Wenn du das zusammen mit 71_NIBE konfigurierst, sollten die Daten aus dem NibeGW empfangen werden. Das Lesen und Schreiben einzelner Werte klappt noch nicht.

physical module:
define NibeWP NIBE_UDP 127.0.0.1

logical module:
define Nibe NIBE
attr Nibe IODev NibeWP <-- will be set by Fhem automatically
attr Nibe modbusFile <-- optional, default <global-modpath>/export.csv


Aber Vorsicht, das Modul ist mal schnell mit der heißen Nadel gestrickt.

Gruß VuffiRaa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 08 Januar 2019, 08:28:29
Hallo VuffiRaa,

das Lesen von den Gruppen funktioniert. Vielen Dank.
Wirst Du noch an dem Schreiben von Werten arbeiten

Endschuldige bitte, ich war da wohl zu schreibfaul, mit Nibe70 meinte ich 70_NIBE_485

Wünsche Dir einen schönen Tag.
Grüße
Sonnenschein.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 08 Januar 2019, 19:10:02
Zitat von: Sonnenschein am 08 Januar 2019, 08:28:29
Hallo VuffiRaa,

das Lesen von den Gruppen funktioniert. Vielen Dank.
Wirst Du noch an dem Schreiben von Werten arbeiten

Endschuldige bitte, ich war da wohl zu schreibfaul, mit Nibe70 meinte ich 70_NIBE_485

Wünsche Dir einen schönen Tag.
Grüße
Sonnenschein.

Klar, so ist der Plan. So halb fertig würde das Modul ja keinen Sinn machen.
Falls dir schon Probleme auffallen, schreib einfache.

Ich habe nur leider bis zum Wochenende nicht wirklich Zeit, um weiterzumachen.
Also etwas Geduld musst du noch haben.

Gruß VuffiRaa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 09 Januar 2019, 08:37:12
Zitat von: vuffiraa am 08 Januar 2019, 19:10:02
Klar, so ist der Plan. So halb fertig würde das Modul ja keinen Sinn machen.
Falls dir schon Probleme auffallen, schreib einfache.

Ich habe nur leider bis zum Wochenende nicht wirklich Zeit, um weiterzumachen.
Also etwas Geduld musst du noch haben.

Gruß VuffiRaa

ja klar melde ich mich, wenn mir etwas auffällt.
Was mich jetzt nicht stört, bei Status von Device Nibe stehen nur ???, aber vielleicht liegt es daran, dass das selective Lesen nocht nicht funktioniert.


Ich habe NibeGW auf eine ESP8266 portieren und ein paar UDP Nachrichten senden können.
Sonst kann ich es leider noch nicht mehr  testen, da mir der RS232 zu RS484 Wandler noch fehlt.
Hoffe der kommt bald.

Aber mir sind schon eine Optimierungsmöglichkeiten aufgefallen.
Zum Schutz der Nibe Pumpe, habe ich einen Wander mit hohem galvanischen Schutz gekauft, ist ja aber nicht nicht notwendig wenn es in die Heizung integriert wird. Die einfacheren Wandler, sind schon für 1€ zu bekommen.
Ich arbeite zur Zeit gerne mit dem WEMOS D1, weil er so einfach bei Entwicklungen ist. Allerdings wird empholen in nicht mit 3.3V zu betreiben.
Ein ESP01S ist deutich abgespeckt und kann direkt mit 3.3V betrieben werden, zudem sind die schon für 1,88€ zur bekommen.
So wie ich gesehen habe sind wohl die 12V der Pumpe in Ihrer Leistung kritisch und ich erhoffe mir noch einmal etwas Leisung zu sparen, wenn ich von 12V auf 3.3V mit eine Stepdown Wandler runter wandle. Wobei wir hier eh nur noch von mW reden.

Grüße
Sonnenschein


Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 09 Januar 2019, 17:37:36
Zitat von: Sonnenschein am 09 Januar 2019, 08:37:12
Was mich jetzt nicht stört, bei Status von Device Nibe stehen nur ???, aber vielleicht liegt es daran, dass das selective Lesen nocht nicht funktioniert.

Der Status wird aus einem der Register 43513 oder 43514 gebaut. Wenn du den mit im LOG.SET aufnimmst, wird dann auch ein Status auftauchen. Für den Status ist es auch ganz gut, wenn der nicht einzeln abgefragt werden muss, sondern automatisch kommt.

Gruß VuffiRaa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 12 Januar 2019, 14:38:31
Das Schreiben und Lesen einzelner Werte sollte jetzt auch klappen. Ich habe eine neue Version ins Git geladen (0.0.2). Damit müsste dann alles möglich sein, was das 485er Modul auch anbietet.

Ich bin mir noch nicht sicher, ob das Modul und auch die Raspi-Implementierung im LAN oder nur auf dem gleichen Host funktionieren. Da werde ich mal Testen. Das ist ja auch für die Portierung interessant, da hier Localhost nicht ausreicht...

Mit dem Wemos D1 spiele ich auch gerne herum. Die Dinger sind nicht schlecht  :)

Gruß VuffiRaa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 13 Januar 2019, 12:35:43
Hallo,

weils gerade eng ist nur kurz, es geht alles, Lesen Gruppe, Lesen Einzelwert, Schreiben Lüftung.
Es gibt aber einige Anspassung vom NibeGW an ESP8266.
Bei mir gab es Problme mit den Variablen bzgl. WLAN Moduls.
Aber nach langem fuchsen und viel Stolpersteinen geschaft.
Jetzt kommt der Langzeittest.

Grüße
Sonnenschein

Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 24 Januar 2019, 12:58:45
Hallo,

ich habe die Struktur im Git etwas umgestellt damit Updates auch direkt aus FHEM möglich sind.
Also zur Installation oder zum  Update der Module einfach mal:

update all https://raw.githubusercontent.com/matzefisi/fhem-70_NIBE/devio/controls_70_NIBE.txt

Danach muss Fhem neu gestartet werden:

shutdown restart

Für einzelne (kleine) Änderungen könnte hier aber auch ein Reload der Module reichen.

Ansonsten habe ich die UDP-Variante jetzt mehrere Tage bei mir ohne Problem zu laufen. Bisher sehe ich keinen Unterschied in der Benutzung zur "alten" RS485-Lösung. Der Vorteil ist ganz klar, dass man so keine 2 Fhem-Installationen mehr braucht. Man kann also auch die gesamte Lösung z.B. auf einem Raspberry laufen lassen. Die Installationsvarianten sind im README (https://github.com/matzefisi/fhem-70_NIBE/blob/devio/README.md) beschrieben.

Ich denke damit ist der Einstieg einfacher geworden.

Gruß VuffiRaa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: SirUli am 26 Januar 2019, 20:17:55
Erstmal großes Kompliment an dich und euch - sehr cool ohne nibe uplink arbeiten zu können!

Zitat von: vuffiraa am 24 Januar 2019, 12:58:45Ich denke damit ist der Einstieg einfacher geworden.

Ich habe eine SMO40 und ja - der Einstieg war etwas einfacher aber immer noch ganz schön haarig ;) Liegt aber an Nibe, das ist unnötig kompliziert gemacht.

Leider habe ich mit dem nibegw nicht so viel erfolg - gibt es eurer Meinung nach einen Unterschied zwischen dem NIBE_RS485 Modul und nibegw was die Datenverarbeitung angeht? Bei mit geht bei Verwendung von nibegw meine SMO40 nach wenigen Sekunden auf Alarm ... bei NIBE_RS485 eben nicht.

Noch geht bei mir mit NIBE_RS485 das lesen von zusätzlichen Registern nicht - da muss ich mich mal noch reinfuchsen warum. das ausführen von "get NIBE register 40004" auf dem Quell-RPI sollte doch eigentlich zum Erfolg führen oder nicht?

Cheers,
Uli
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 27 Januar 2019, 18:12:51
Hallo Uli,

dann mal sehen, ob wir die Sache bei dir auch zum Laufen bringen  ;)

Zitat von: SirUli am 26 Januar 2019, 20:17:55
Leider habe ich mit dem nibegw nicht so viel erfolg - gibt es eurer Meinung nach einen Unterschied zwischen dem NIBE_RS485 Modul und nibegw was die Datenverarbeitung angeht? Bei mit geht bei Verwendung von nibegw meine SMO40 nach wenigen Sekunden auf Alarm ... bei NIBE_RS485 eben nicht.
Das Modul NIBE_485 habe ich unabhängig von NibeGW entwickelt. Es ist schon möglich, dass es da Unterschiede gibt. Mein Modul passt halt zu meiner Anlage und allen anderen, mit denen hier im Forum getestet wurde. Leider habe ich nicht den Überblick, was genau die Unterschiede zu NibeGW sind. Aber du kannst gerne mal NibeGW mit dem Parameter -v laufen lassen, dann gibt es einen Output. Den kann ich mir mal anschauen und den Leuten von NibeGW vielleicht einen Patch vorschlagen.

Zitat
Noch geht bei mir mit NIBE_RS485 das lesen von zusätzlichen Registern nicht - da muss ich mich mal noch reinfuchsen warum. das ausführen von "get NIBE register 40004" auf dem Quell-RPI sollte doch eigentlich zum Erfolg führen oder nicht?

Get sollte im NIBE-Gerät in der Fhem-Installation funktionieren, die nicht direkt mit der Wärmepumpe verbunden ist. Also laut meinem Readme im Git im logischen Modul des Fhem Master. Ansonsten interessieren mich Log-Files mit verbose=5 in den NIBE-Modulen.

Gruß VuffiRaa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: SirUli am 27 Januar 2019, 22:19:59
Zitat von: vuffiraa am 27 Januar 2019, 18:12:51Aber du kannst gerne mal NibeGW mit dem Parameter -v laufen lassen, dann gibt es einen Output.
Mach ich die Tage :)

Zitat von: vuffiraa am 27 Januar 2019, 18:12:51Ansonsten interessieren mich Log-Files mit verbose=5 in den NIBE-Modulen.

Dann wollen wir mal, danke fürs Angebot. Ich hab zwei FHEM installationen, einmal "FHEM" und einmal "FHEMIOT". Letzeres ist ein RPI mit RS485 Shield an der WP.

Das List des NIBE_485 auf FHEM:
Internals:
   Clients    :NIBE:
   DEF        none
   FUUID      5c4b7e8d-f33f-3ce1-db13-a8b14224c6774052
   NAME       K1.O_EB1_NIBEGW
   NR         6818
   STATE      dummy
   TYPE       NIBE_485
   MatchList:
     1:NIBE     .*
Attributes:
   DbLogExclude .*
   dummy      1
   room       K1-Technikraum


Und des NIBE auf FHEM:
Internals:
   CHANGED   
   FUUID      5c4b7eb1-f33f-3ce1-f144-6b64fd1a689aff91
   IODev      K1.O_EB1_NIBEGW
   K1.O_EB1_NIBEGW_MSGCNT 11417
   K1.O_EB1_NIBEGW_TIME 2019-01-27 22:14:04
   LASTInputDev K1.O_EB1_NIBEGW
   MODEL      SMO 40
   MSGCNT     11417
   NAME       K1.O_EB1
   NOTIFYDEV  global
   NR         6849
   NTFY_ORDER 50-K1.O_EB1
   STATE      ???
   TYPE       NIBE
   Helper:
.....--> GEKÜRZT
   READINGS:
.....--> GEKÜRZT
   register:
.....--> GEKÜRZT
Attributes:
   DbLogInclude .*
   IODev      K1.O_EB1_NIBEGW
   event-min-interval .*:30
   modbusFile /opt/fhem/FHEM/nibe.csv
   room       K1-Technikraum


Log von FHEM:
2019.01.27 22:04:24 5: MatchList => HASH(0x55ab4281f670)
2019.01.27 22:04:24 5: .clientArray => ARRAY(0x55ab424fee88)
2019.01.27 22:04:24 5: TYPE => NIBE_485
2019.01.27 22:04:24 5: FUUID => 5c4b7e8d-f33f-3ce1-db13-a8b14224c6774052
2019.01.27 22:04:24 5: NAME => K1.O_EB1_NIBEGW
2019.01.27 22:04:24 5: STATE => dummy
2019.01.27 22:04:24 5: DEF => none
2019.01.27 22:04:24 5: CL => HASH(0x55ab4366ff98)
2019.01.27 22:04:24 5: NR => 6818
2019.01.27 22:04:24 5: Clients => :NIBE:
2019.01.27 22:04:33 5: K1.O_EB1_NIBEGW: dispatch 5c00206850449c2b0074a400804d9c08024e9cfb01fda75f006cad1e0025ac8f0926ac0000a9ad00009fae00001cacf1001bacd2011aacf20017acf200f6bc4600a2ae0000d0a00000b2af8c0027acd20628ac000030
2019.01.27 22:04:33 5: K1.O_EB1_NIBEGW: parse 5c00206850449c2b0074a400804d9c08024e9cfb01fda75f006cad1e0025ac8f0926ac0000a9ad00009fae00001cacf1001bacd2011aacf20017acf200f6bc4600a2ae0000d0a00000b2af8c0027acd20628ac000030
2019.01.27 22:04:33 3: K1.O_EB1: Skip initial value of register BT1_Average__24h
2019.01.27 22:04:33 5: K1.O_EB1: called function NIBE_Set()
2019.01.27 22:04:33 5: K1.O_EB1: called function NIBE_Set()
2019.01.27 22:04:33 5: K1.O_EB1: called function NIBE_Set()
2019.01.27 22:04:33 5: K1.O_EB1: called function NIBE_Set()
2019.01.27 22:04:33 5: K1.O_EB1: called function NIBE_Get()
2019.01.27 22:04:34 5: K1.O_EB1_NIBEGW: dispatch 5c00206d0901222a534d4f20343038
2019.01.27 22:04:34 5: K1.O_EB1_NIBEGW: parse 5c00206d0901222a534d4f20343038
2019.01.27 22:04:34 5: K1.O_EB1: Calculated checksum 38
2019.01.27 22:04:34 5: K1.O_EB1: HEAD: 5c00 ADDR: 20 CMD: 6d LEN: 09 CHK: 38
2019.01.27 22:04:34 5: K1.O_EB1: Checksum OK
2019.01.27 22:05:03 5: K1.O_EB1_NIBEGW: dispatch 5c00206850449c2b0074a400804d9c08024e9cfb01fda739006cad1e0025ac8f0926ac0000a9ad00009fae00001cacf1001baccc011aacf20017acf200f6bc4600a2ae0000d0a00000b2af8c0027acd20628ac000048
2019.01.27 22:05:03 5: K1.O_EB1_NIBEGW: parse 5c00206850449c2b0074a400804d9c08024e9cfb01fda739006cad1e0025ac8f0926ac0000a9ad00009fae00001cacf1001baccc011aacf20017acf200f6bc4600a2ae0000d0a00000b2af8c0027acd20628ac000048
2019.01.27 22:05:03 5: K1.O_EB1: Calculated checksum 48
2019.01.27 22:05:03 5: K1.O_EB1: HEAD: 5c00 ADDR: 20 CMD: 68 LEN: 50 CHK: 48
2019.01.27 22:05:03 5: K1.O_EB1: Checksum OK
2019.01.27 22:05:03 5: K1.O_EB1: Found register BT1_Outdoor_Temperature
2019.01.27 22:05:03 5: K1.O_EB1: Value 002b normalized 4.3
2019.01.27 22:05:03 5: K1.O_EB1: Found register BT1_Average__24h
2019.01.27 22:05:03 3: K1.O_EB1: Skip initial value of register BT1_Average__24h
2019.01.27 22:05:03 5: K1.O_EB1: Found register BT7_HW_Top
2019.01.27 22:05:03 5: K1.O_EB1: Value 0208 normalized 52
2019.01.27 22:05:03 5: K1.O_EB1: Found register BT6_HW_Load
2019.01.27 22:05:03 5: K1.O_EB1: Value 01fb normalized 50.7
2019.01.27 22:05:03 5: K1.O_EB1: Found register Degree_Minutes__16_bit_
2019.01.27 22:05:03 5: K1.O_EB1: Value 0039 normalized 5.7
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101_Speed_charge_pump
2019.01.27 22:05:03 5: K1.O_EB1: Value 001e normalized 30
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101-EP14_Compressor_starts
2019.01.27 22:05:03 5: K1.O_EB1: Value 0000098f normalized 2447
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101-EP14_Compressor_State
2019.01.27 22:05:03 5: K1.O_EB1: Value 0000 normalized 0
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101-EP14_Defrosting_Outdoor_Unit
2019.01.27 22:05:03 5: K1.O_EB1: Value 0000 normalized 0
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101-EP14-BT15_Liquid_Line
2019.01.27 22:05:03 5: K1.O_EB1: Value 00f1 normalized 24.1
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101-EP14-BT14_Hot_Gas_Temp
2019.01.27 22:05:03 5: K1.O_EB1: Value 01cc normalized 46
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101-EP14-BT12_Condensor_Out
2019.01.27 22:05:03 5: K1.O_EB1: Value 00f2 normalized 24.2
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101-EP14-BT3_Return_Temp.
2019.01.27 22:05:03 5: K1.O_EB1: Value 00f2 normalized 24.2
2019.01.27 22:05:03 5: K1.O_EB1: Found register Speed_circ.pump_Heat_Slave_1
2019.01.27 22:05:03 5: K1.O_EB1: Value 0046 normalized 70
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101-EP14_Calculated_Power_Outdoor_Unit
2019.01.27 22:05:03 5: K1.O_EB1: Value 0000 normalized 0
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101-EP14_Fan_Status
2019.01.27 22:05:03 5: K1.O_EB1: Value 0000 normalized 0
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101-EP14_Inverter_Temperature
2019.01.27 22:05:03 5: K1.O_EB1: Value 008c normalized 14
2019.01.27 22:05:03 5: K1.O_EB1: Found register EB101-EP14_Tot._op.time_compr
2019.01.27 22:05:03 5: K1.O_EB1: Value 000006d2 normalized 1746
2019.01.27 22:05:03 5: K1.O_EB1: called function NIBE_Set()
2019.01.27 22:05:03 5: K1.O_EB1: called function NIBE_Set()
2019.01.27 22:05:04 5: K1.O_EB1_NIBEGW: dispatch 5c00206d0901222a534d4f20343038
2019.01.27 22:05:04 5: K1.O_EB1_NIBEGW: parse 5c00206d0901222a534d4f20343038
2019.01.27 22:05:04 5: K1.O_EB1: Calculated checksum 38
2019.01.27 22:05:04 5: K1.O_EB1: HEAD: 5c00 ADDR: 20 CMD: 6d LEN: 09 CHK: 38
2019.01.27 22:05:04 5: K1.O_EB1: Checksum OK
2019.01.27 22:05:04 5: K1.O_EB1: called function NIBE_Get()
2019.01.27 22:05:04 4: K1.O_EB1: Read command: C069022AA021
2019.01.27 22:05:08 5: K1.O_EB1: called function NIBE_Set()
2019.01.27 22:05:08 5: K1.O_EB1: called function NIBE_Set()
2019.01.27 22:05:08 5: K1.O_EB1: called function NIBE_Get()


Und nun auf FHEMIOT die NIBE_RS485:
Internals:
   Clients    :NIBE:
   DEF        /dev/ttyAMA0
   DeviceName /dev/ttyAMA0@9600
   FD         8
   FUUID      5c4b7c3f-f33f-ad1b-2e4a-29d244118a2f1c6f
   K1.O_EB1_NIBEGW_MSGCNT 11467
   K1.O_EB1_NIBEGW_TIME 2019-01-27 22:15:34
   NAME       K1.O_EB1_NIBEGW
   NR         69
   PARTIAL   
   RAWMSG     5c00206d0901222a534d4f20343038
   STATE      opened
   TYPE       NIBE_485
   MatchList:
     1:NIBE     .*
   READINGS:
     2019-01-25 21:14:39   state           opened
   helper:
     buffer     
     register:
     register_write:
Attributes:
   room       K1-Technikraum


Und die NIBE auf FHEMIOT:
Internals:
   CHANGED   
   FUUID      5c4b7ce6-f33f-ad1b-fbe8-5841145216c3898b
   IODev      K1.O_EB1_NIBEGW
   K1.O_EB1_NIBEGW_MSGCNT 39
   K1.O_EB1_NIBEGW_RAWMSG 5c00206850449c2b0074a400804d9ced014e9ce801fda7b3fe6cad0a0025ac7c0926ac0000a9ad01009fae00001cac24011bac35021aac2b0117ac0301f6bc4600a2ae0200d0a00000b2af8c0027acc10628ac000038
   K1.O_EB1_NIBEGW_TIME 2019-01-26 20:15:48
   LASTInputDev K1.O_EB1_NIBEGW
   MODEL      SMO 40
   MSGCNT     39
   NAME       K1.O_EB1
   NOTIFYDEV  global
   NR         78
   NTFY_ORDER 50-K1.O_EB1
   STATE      ???
   TYPE       NIBE
   READINGS:
     2019-01-25 21:17:46   product         SMO 40
     2019-01-25 21:17:46   sw_version      8746
   register:
Attributes:
   IODev      K1.O_EB1_NIBEGW
   event-min-interval .*:30
   ignore     1
   modbusFile /opt/fhem/FHEM/nibe.csv
   room       K1-Technikraum


Und dann noch das Log von FHEMIOT im Anhang dieses Beitrags (war mir dann doch zu groß ;) ) Ich hab mal noch meine LOG.SET mit angehängt.

Edit: Verbunden sind die beiden RPI via FHEM2FHEM (IP und Passwörter hab ich unten rausgestrichen ;)):
Internals:
   Clients    :NIBE:
   DEF        XXXXXXREMOVEDXXXXXX:7072 RAW:K1.O_EB1_NIBEGW XXXXXXREMOVEDXXXXXX
   FD         25
   FUUID      5c4b7ee8-f33f-3ce1-ca32-0d8c418efbe541a8
   Host       XXXXXXREMOVEDXXXXXX:7072
   NAME       FHEM_F2FRAW_FHEMIOT
   NR         6895
   PARTIAL   
   STATE      connected
   TYPE       FHEM2FHEM
   informType RAW
   portpassword XXXXXXREMOVEDXXXXXX
   rawDevice  K1.O_EB1_NIBEGW
Attributes:
   DbLogExclude .*
   room       X-FHEM


Vielen Dank schon mal fürs gucken!
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 28 Januar 2019, 20:39:38
Hallo Uli,

soweit sehen dein Geräte erst mal gut aus. Eine Sache ist mir aber aufgefallen, die Punkte im Gerätenamen sind laut Wiki (https://wiki.fhem.de/wiki/Gerätename) nicht erlaubt. Dadurch könnte vielleicht die FHEM2FHEM-Kommunikation durcheinander kommen. Kannst du die Gerätenamen versuchsweise anpassen? Ansonsten müsste ich noch ein paar Logausschriften ergänzen, um dem Problem näher zukommen.

Beim NibeGW habe ich vielleicht eine Idee, ich probier mal was.
[Edit] Der schnelle Test hat leider keine Erkenntnis gebracht. Starte mal NibeGW mit der Option -vv. Dann gibt es genug Logs, damit man den Unterschied zum Fhem-Modul sehen sollte.

Gruß VuffiRaa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: SirUli am 31 Januar 2019, 22:19:25
Hi VuffiRaa,

Spannend mit den Gerätenamen - ist mir ehrlich gesagt noch nicht aufgefallen. Probiere ich - genauso wie den nibegw - am Wochenende mal aus.

Danke dir - ich melde mich am Wochenende dazu nochmal!

Viele Grüße,
Uli
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: SirUli am 03 Februar 2019, 21:06:19
Hi VuffiRaa,

hier schon mal die logs von nibegw. Anfangs mit root user - weil ich rechte Probleme ausschließen wollte (attempt1), dann mit fhem (attempt2), dann wieder mit root (attempt3). Anlage ging bei den letzten beiden immer in Alarm, beim ersten hatte ichs nicht gesehen, gehe aber davon fast aus, nachdem attempt3 wieder auf Fehler lief.

Zum register read bin ich noch nicht gekommen - spontant gings via RS485 nicht aber da will ich erst alle Nebenquellen weiter ausschließen.

Vielen Dank auf jeden Fall ;)

Viele Grüße,
Uli
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 04 Februar 2019, 17:50:34
Hallo Uli,

ich habe mir die Logs angeschaut. Schaut eigentlich gut aus, aber mein Verdacht wäre, dass da gleichzeitig noch ein Programm auf die serielle Schnittstelle zugreift. Bei mir war es z.B. so, dass die die Definition des Nibe_485-Moduls erst löschen musste, bevor ich NibeGW starten konnte.
Was noch auffällt ist, dass NibeGW zwar im Log schreibt, dass es ACKs versenden will, die aber wohl nicht ankommen.  In diesem Fall schickt die Wärmepumpe die Nachrichten einfach bis zu dreimal hintereinander.
Kannst du vielleicht nochmal probieren, wenn der Raspberry Pi neugestartet wurde und wirklich nix anderes läuft?

Viele Grüße,
VuffiRaa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: SirUli am 27 Februar 2019, 23:11:41
Zitat von: vuffiraa am 04 Februar 2019, 17:50:34
Kannst du vielleicht nochmal probieren, wenn der Raspberry Pi neugestartet wurde und wirklich nix anderes läuft?
Gerade endlich getan - hat leider nichts geändert. Geht nach kurzer Zeit auf Fehler :( Najut mit NIBE_485 scheint es ja zu klappen... insofern bin ich erstmal happy. Nur die anderen register abzurufen löst noch gar nichts aus - hast du da ne Idee?

Viele Grüße,
Uli
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 01 März 2019, 16:26:52
Zitat von: SirUli am 27 Februar 2019, 23:11:41
Gerade endlich getan - hat leider nichts geändert. Geht nach kurzer Zeit auf Fehler :( Najut mit NIBE_485 scheint es ja zu klappen... insofern bin ich erstmal happy. Nur die anderen register abzurufen löst noch gar nichts aus - hast du da ne Idee?

Viele Grüße,
Uli
Hallo Uli,

ich behaupte einfach mal, das da noch eine Kleinigkeit klemmt. Wenn wir die gefunden haben, gehen wahrscheinlich beide Lösungen  ;)

Hast du die Punkte mal aus den Gerätenamen genommen? Ansonsten würde ich mir gerne mal komplette Logs für einen Leseversuch anschauen. Also in beide Fhem Module das Attribute verbose = 5.

Hast du das bei dir auch über 2 Fhem-Installationen umgesetzt? Dann die Logs auch von beiden Installationen.

Was beim Abrufen einzelner Register noch zu beachten ist, dass der Abruf nicht direkt erfolgt. Das Kommando wird zum Nibe485-Gerät geschickt und das wartet dann, bis der Anfragekanal durch die Nibe geöffnet wird. Daher ist der Wert in den Readings erst nach einem Refresh nach ein paar Sekunden zu sehen.

Gruß VuffiRaa

PS: Apropos "Najut" nicht das ich dir das hier um die Ecke mal bei nem Bier erklären kann, wohne in Falkensee  :)
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: SirUli am 05 März 2019, 22:10:44
Hi VuffiRaa,

erstmal vielen Dank für deine Geduld. Ich mach mich da am Wochenende nochmal dran. Vorab aber schon mal:

Zitat von: vuffiraa am 01 März 2019, 16:26:52
Hast du die Punkte mal aus den Gerätenamen genommen?
Genau, das habe ich nun konsequent erstmal durch mein ganzes FHEM umgesetzt - hier ebenso. Bei 600 Device Definitionen nicht so trivial :D

Zitat von: vuffiraa am 01 März 2019, 16:26:52
Hast du das bei dir auch über 2 Fhem-Installationen umgesetzt?
Aktuell ja. Hatte, als ich nibegw getestet hatte, dann FHEM2FHEM abgeklemmt, aber eher damit ich nicht wieder mit den Statistiken in der Datenbank rummachen muss ;)

Zitat von: vuffiraa am 01 März 2019, 16:26:52Was beim Abrufen einzelner Register noch zu beachten ist, dass der Abruf nicht direkt erfolgt.
Wäre überhaupt kein Thema. Wegen mir erst sehr verzögert aber da diese selbst nach Tagen noch nicht eintreffen vermute ich eher dass es gar nicht passiert.

Zitat von: vuffiraa am 01 März 2019, 16:26:52
Nicht das ich dir das hier um die Ecke mal bei nem Bier erklären kann
Meine Ecke ist leider tatsächlich 613km von deiner Ecke entfernt :( Daher wäre das Bier zwar cool aber vermutlich eins der teureren ;) Danke fürs Angebot!
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 10 März 2019, 14:08:02
Hallo,

Mal eine kurze Rückmeldung.
NibeGW in Verbindung eines Wemos D1 läuft einigermaßen stabil.
Hatte vielleicht drei Störungen an der WP.

Das Thema Einzelwerte lesen habe ich auch. Zuverlässig kommen die Daten nicht vorallem bei einem Mehrfach Abruf. Die fünf täglichen Werte rufe ich jetzt in zwei Minuten Abstände einzelnd ab. So ging es bis auf einmal in den letzten zwei Wochen besser.

Mit einem ESP01 gab es einen total Absturz, selbst ein abschalten hat nicht ausgereicht.
Die Komponenten funktionieren einzelnd aber. Da ich mit dem Step down Wandler schon am Anfang Probleme hatte(Spindel klemmte) vermute ich, der war der Übeltäter. Ich werde es noch einmal versuchen, wenn ein neuer Regler mit festen 3.3V da ist. Habe es noch einmal mit zwei 100nF und einem 470yF Kondensator an den Powerleitungen versucht. Seit drei Tagen läuft es einwandfrei mit einem ESP01. Was bei mir schiefgenlaufen ist mit der neuen Platine habe ich ein neue IP bekommen. Man bekommt zwar dann die 20 Werte geliefert aber man kann keine Einzelwerte abfragen oder Werte setzten. Ist zwar logisch, aber da es keine Fehlermeldung gab viel es erst später auf.

Aktuell regele ich den Lüfter nach der Abluftemperatur. Somit wird gerade soviel gelüftet wie es notwendig ist ohne dass der Verdichter vereist.
So habe ich die Luftfeuchtigkeit von 15% auf 25% erhöht.

Aktuelle versuche Fakten für einen Inverter Alarm III zusammeln.

Bei dem github Update Aufruf bekomme Probleme mit der Zugriffsberechtigung, habe aber da noch nicht weiter gesehen.

So meine Kinder rufen.
Vielen Dank für die Anpassung auf NibeGW

Grüße Sonnenschein
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: SirUli am 13 Mai 2019, 23:24:21
Zitat von: Sonnenschein am 10 März 2019, 14:08:02NibeGW in Verbindung eines Wemos D1 läuft einigermaßen stabil.

Hi Sonnenschein,

hast du da evtl. schon was, was man bei uns einsetzen könnte? Ich habe großes Interesse daran, den direkten RPI loszuwerden ;)

Viele Grüße,
Uli
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 22 Mai 2019, 03:37:50
Hallo Uli,

Entschuldige bitte, habe deine Frage gar nicht mitbekommen. Hatte aber gerafe viel um die Ohren.

Also bei mir läuft es mit dem ESP 01 super.
Der Fehler ist die Spannungsversorgung gewesen.
Bin aber immer noch nicht direkt an den 12V von Nibe.
Keine Kommunikationsfehler, schreiben funktiiniert.

Bisher bin ich sehr zufrieden.
Werde mal die Tage Bilder hochladen.

Grüße Sonnenschein


Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: SirUli am 30 Mai 2019, 22:14:55
Hi Sonnenschein,
Das hört sich super an - es wäre super wenn du deine Software und den Aufbau mit uns teilen könntest? Ich würde gerne vom RPI wegkommen - sofern irgendwie möglich ;)

Danke im Voraus!
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 09 Juni 2019, 20:58:26
Hier schon einmal der INO Code für einen ESP8266!
Den Rest habe ich so gelassen:
https://github.com/paulianttila/openhab2-addons/tree/nibe2-final/addons/binding/org.openhab.binding.nibeheatpump/NibeGW/Arduino/NibeGW

SSID bitte nachpflegen.



/*
   Copyright (c) 2014-2018 by the respective copyright holders.
   All rights reserved. This program and the accompanying materials
   are made available under the terms of the Eclipse Public License v1.0
   which accompanies this distribution, and is available at
   http://www.eclipse.org/legal/epl-v10.html
   ----------------------------------------------------------------------------
    Author: pauli.anttila@gmail.com
    2.11.2013   v1.00   Initial version.
    3.11.2013   v1.01
    27.6.2014   v1.02   Fixed compile error and added Ethernet initialization delay.
    29.6.2015   v2.00   Bidirectional support.
    18.2.2017   v3.00   Redesigned.
    13.03.2019 Design for ESP8266 01
   
*/

// ######### CONFIGURATION #######################


// Used serial port and direction change pin for RS-485 port
#define RS485_PORT              Serial
#define RS485_DIRECTION_PIN     2

#define ACK_MODBUS40            true
#define ACK_SMS40               false
#define ACK_RMU40               false
#define SEND_ACK                true

// ######### INCLUDES #######################
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include "NibeGw.h"


//#include <avr/wdt.h>

// ######### VARIABLES #######################
IPAddress remoteIP(192,168,178,30);

unsigned int TARGET_PORT = 9999;
unsigned int INCOMING_PORT_READCMDS = 10000;
unsigned int INCOMING_PORT_WRITECMDS = 10001;

boolean wlanInitialized = false;
WiFiUDP udp;
WiFiUDP udp4writeCmnds;

// SSID parameters
const char* ssid = "Your SSID";
const char* password = "Your SSID PASSWORD";

NibeGw nibegw(&RS485_PORT, RS485_DIRECTION_PIN);

// ######### SETUP #######################

void setup()
{
  // Start watchdog
//  wdt_enable (WDTO_2S);

  nibegw.setCallback(nibeCallbackMsgReceived, nibeCallbackTokenReceived);
  nibegw.setAckModbus40Address(ACK_MODBUS40);
  nibegw.setAckSms40Address(ACK_SMS40);
  nibegw.setAckRmu40Address(ACK_RMU40);
  nibegw.setSendAcknowledge(SEND_ACK);

  WiFi.persistent(false);
  WiFi.mode(WIFI_OFF);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  IPAddress ip(192, 168, 178, 32);
  IPAddress gateway(192, 168, 178, 1);
  IPAddress subnet(255, 255, 255, 0);
  IPAddress dns(192, 168, 178, 1);
  // WiFi.config(ip, dns, gateway, subnet);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    pinMode(1, LOW);
    delay(1000);
    pinMode(1, HIGH);
    delay(1000);

  }
 
//  udp.beginPacket(remoteIP, TARGET_PORT);
//  udp.write("WLAN", 4);
//  udp.endPacket();
     pinMode(1, LOW);
}

// ######### MAIN LOOP #######################

void loop()
{

// wdt_reset();

  if (!nibegw.connected())
  {
    nibegw.connect();
  }
  else
  {
    do
    {
      nibegw.loop();
    } while (nibegw.messageStillOnProgress());
  }

  if (!wlanInitialized)
  {
      initializeWlan();   
  }
}

// ######### FUNCTIONS #######################

void initializeWlan()
{
  wlanInitialized = true;
  udp.begin(INCOMING_PORT_READCMDS);
  udp4writeCmnds.begin(INCOMING_PORT_WRITECMDS);
}

void nibeCallbackMsgReceived(const byte* const data, int len)
{
  if (wlanInitialized)
  {
    sendUdpPacket(data, len);
  }
}


int nibeCallbackTokenReceived(eTokenType token, byte* data)
{
  if (wlanInitialized)
  {
    if (token == READ_TOKEN)
    {
      int packetSize = udp.parsePacket();
      if (packetSize)
        return udp.read(data, packetSize);
    }
    else if (token == WRITE_TOKEN)
    {
      int packetSize = udp4writeCmnds.parsePacket();
      if (packetSize)
              return udp4writeCmnds.read(data, packetSize);
    }
  }
  return 0;
}


void sendUdpPacket(const byte * const data, int len)
{
  udp.beginPacket(remoteIP, TARGET_PORT);
  udp.write(data, len);
  udp.endPacket();
}


Wenn unklar bitte melden.
Sorry Fotos muss ich noch einmal machen wegen dem Kondensator.

Grüße
Sonnenschein
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 15 Juni 2019, 15:27:53
Hallo,

anbei die Bilder von der Platine.

Anlüsse von oben
1. VCC
2. GND
3. B-
4. A+

Bauteile
1x ESP-01
1x RS485 Converter
1x Stepdown Regler
1x 100nF
1x 47µF niedrige Bauform
1x 4pol Schraubklemme
1x 2x5pol Buchsenleiste

Die folgenden Links, sind nur ein Anhaltspunkt keine Kaufempfehlung.
https://www.ebay.de/itm/ESP8266-ESP-01S-Serial-WIFI-Wireless-Transceiver-Module-Send-Receive-AP-STA-S/162755777481?hash=item25e50013c9:g:TKwAAOSw3v1Z5HD4:rk:6:pf:0 (https://www.ebay.de/itm/ESP8266-ESP-01S-Serial-WIFI-Wireless-Transceiver-Module-Send-Receive-AP-STA-S/162755777481?hash=item25e50013c9:g:TKwAAOSw3v1Z5HD4:rk:6:pf:0)
https://www.ebay.de/itm/LM2596S-DC-Spannung-Step-Down-Schaltregler-Netzteil-Modul-Wandler-Konverter/163212684819?hash=item26003bee13:g:7AAAAOSwe09Z-8hE:rk:2:pf:1&frcectupt=true (https://www.ebay.de/itm/LM2596S-DC-Spannung-Step-Down-Schaltregler-Netzteil-Modul-Wandler-Konverter/163212684819?hash=item26003bee13:g:7AAAAOSwe09Z-8hE:rk:2:pf:1&frcectupt=true)
https://www.ebay.de/itm/New-3-3V-UART-serial-to-RS485-SP3485-Transceiver-Converter-Communication-SP3485/162722492852?hash=item25e30431b4:g:VVMAAOSwPpZZ7VEt:rk:1:pf:1&frcectupt=true (https://www.ebay.de/itm/New-3-3V-UART-serial-to-RS485-SP3485-Transceiver-Converter-Communication-SP3485/162722492852?hash=item25e30431b4:g:VVMAAOSwPpZZ7VEt:rk:1:pf:1&frcectupt=true)

Natürlich alles ohne Haftung oder Garantie.

Sollte jetzt alles komplett sein.
Bei Fragen bitte melden.



Liebe Grüße
Sonnenschein
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: SirUli am 17 Juni 2019, 13:00:30
Hi Sonnenschein,

vielen Dank! Für was hattest du die zwei Kondensatoren "1x 100nF" & "1x 47µF niedrige Bauform" benötigt? Spannungsstabilisierung? Oder hast du dich auf einen bestimmten Bauplan bezogen?
Vielen Dank im Voraus!
Viele Grüße,
Uli
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: AlexGfX am 30 Juni 2019, 11:58:48
Mal frage
Gibt es mittlerweile Möglichkeit per ip mit Uplink zu verbinden ?

Grüße
Alex
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: SirUli am 30 Juni 2019, 20:40:29
Hi Alex,

die Verbindung mit Uplink ist nicht teil dieses Threads, hier ist nur via RS485 besprochen. Uplink ist beispielsweise in homeassistant enthalten - könnte man via MQTT in FHEM rüberbringen.

Viele Grüße,
Uli
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: lammy am 01 Oktober 2019, 21:07:44
Hi Jungs,

ich habe die Kommunikation zum laufen bekommen. Jedoch gibt die Nibe Fighter 370 aktuell nur Typ und Seriennummer zurück. Kommunikation läuft daher.

Wenn ich mir meine Log anschaue bekomme ich viele von denen hier. Kann mir jemand sagen wo ich anfangen soll mit der Fehlersuche :)

2019.10.01 18:46:03 3: Nibe: Register 40014 not defined
2019.10.01 18:46:03 3: Nibe: Register 574 not defined
2019.10.01 18:46:03 3: Nibe: Register 40013 not defined
2019.10.01 18:46:03 3: Nibe: Register 540 not defined
2019.10.01 18:46:03 3: Nibe: Register 40147 not defined
2019.10.01 18:46:03 3: Nibe: Register 0 not defined
2019.10.01 18:46:03 3: Nibe: Register 40152 not defined
2019.10.01 18:46:03 3: Nibe: Register 0 not defined
2019.10.01 18:46:03 3: Nibe: Register 43108 not defined
2019.10.01 18:46:03 3: Nibe: Register 0 not defined


SET.LOG
NIBL;20191001;8310]
Divisors 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
Date Time BT1 Outdoor Temperature [°C] BT2 Supply temp S1 [°C] BT20 Exhaust air temp. 1 [°C] BT21 Vented air temp. 1 [°C] BT22 Supply air temp. [°C] BT25 Ext. Supply [°C] BT50 Room Temp S1 [°C] BT53 Solar Panel Temp [°C] BT54 Solar Load Temp [°C] BT6 HW Load [°C] BT64 Average [°C] BT7 HW Top [°C] BT70 HW Comfort Supply Temp. [°C] BT71 Ext. Return Temp [°C] BT82 HW Comfort Return Temp [°C] BT83 HW Comfort Cylinder Temp [°C] Fan speed current [%]
40004
40008
40025
40026
42138
40071
40033
40043
40044
40014
40889
40013
40147
40152
40625
40626
43108
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 02 Oktober 2019, 09:19:20
Moin,

kannst du mal ein list Nibe probieren. Gibt es dort einen Abschnitt register?

Ich tippe, dass du die Voraussetzungen für das Modul überlesen hast  ;)

ZitatPrerequisite

Export from NIBE ModbusManager
- Select model in menu Models
- Goto File / Export to file
- Put the file into the directory defined in device "global" attribute "modpath" or use attribute "modbusFile" in the logical module at FHEM master
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: AlexGfX am 21 Januar 2020, 12:34:33
Hat jemand von euch die schon mal gute Ergebnisse haben mal Lust Sketches Baupläne/Verdrahtungen zur Verfügung zu stellen? eventuell als eine Art Tutorial? damit man auch mal nachvollziehen kann wie aufgebaut wurde ( Google hilft zwar auch aber es gibt mittlerweile mehrere nibeGW Projekte)
Für mich wäre auch interessant wenn jemand mit Arduino UNO gearbeitet hat ob man das quasi direkt an die 12v Spannung anschließen kann für Stromversorgung (nibe AA3-X4 kontakt 12 mit 12v Spannung bei nibe f730/750 eventuell auch andere modele )

Grüße
Alex
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: RaTe am 10 November 2020, 14:01:37
Falls hier noch jemand ans Nachbauen denkt:

Habe das als simple Steckbrett-Variante für die Nibe F1255-6 mit nem NodeMCU an einem USB-Netzteil und einem TTL zu RS485 (wie z.B. https://www.ebay.de/itm/SCM-TTL-to-RS485-Adapter-485-to-UART-Serial-Port-3-3V-5V-Level-Converter-Module/152232036253?hash=item2371bc879d:g:vH8AAOSwvMFa2AD3) und dem Code von Sonnenschein erfolgreich zum laufen bekommen (nur kurzer Test für 5 Minuten, nur lesen. Die ganzen offenen Kontakte im Hauswirtschaftsraum auf der Waschmaschine sind für den Dauerbetrieb nicht optimal).
Wenn der Stepdown-Wandler im Briefkasten liegt werde ich es mal mit einer Dauervariante an den 12V der Nibe versuchen.

Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Sonnenschein am 22 November 2020, 22:00:58
Hallo Ihr Liebe,

da ich an einer anderen Baustelle gearbeitet habe wurde mir bewusst, dass meine Regelung zur Lüftung für den Eeprom der NIBE Pumpe gefährlich sein könnte. Nach einiger Suche konnte ich nur erfahren, dass ich der Tat kritisch sein könnte permanent Wert zu schreiben.
Einzig scheint der Wert GRADMINUTEN unkritisch zu sein, weil der nicht gespeichert wird.

Bei meiner Regelung hatte ich den Lüftungsstrom in Abhängig des Leistungsbedarfes (indirekt über Ablufttemperatur) eingestellt. Es war eigentlich für mich perfekt, sehr schade darum. Habe endlich die Regelung in eine Steuerung über die Relais geändert. Sprich der Lüfter wird nicht mehr stufenlos geregelt sondern über zwei zusätliche Lüfterstufen gesteuert.

Hat jemand von Euch Informationen zum EEPROM?


Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: RaTe am 25 November 2020, 11:10:09
Das wird hier durchdiskutiert (falls Du das nicht schon selbst gefunden hast):
https://www.energiesparhaus.at/forum-nibe-wp-wie-oft-kann-man-parameter-veraendern-flash-lebensdauer/55835

Offizielle Antwort von Nibe ist offenbar diese (aus obigem Thread):
ZitatNIBE schrieb: The EEPROM settings are stored has, according to the datasheet, a limit of 1 million writes per position. That may of course sound a lot but if you write every second that means only 11.5 days until the EEPROM position dies. So to answer the question, when calculating with 15 years of life the maximum would be 182 writes per day per setting.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: RaTe am 27 November 2020, 17:32:51
Habe jetzt die gelötete Version (ESP-01, Step-Down-Spannungswandler, TTL zu RS485 Adapter) seit 2 Tagen an den 12V der Nibe ohne erkennbare Probleme. Schaltung analog zur Abbildung von Sonnenschein abzüglich der Kondensatoren (so wie ich das als Elektronik-DAU verstehe sind die ja schon auf dem Step-Down-Wandler vorhanden).
Wenn das weiter ohne Probleme läuft ist das ne echt günstige Sache (Materialkosten ca. 5 Euro, geringer Stromverbrauch).
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: stenny am 07 Januar 2021, 12:45:04
Hallo,

Habe diesen Beitrag mal überflogen.
Hätte eine Frage ob dieses auch mit einer VVM320 funktioniert.
Steht halt bei meinen Eltern...

Danke
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 09 Januar 2021, 19:15:23
Hallo stenny,

das Modul wird in der Nibe Wärmepumpe als Modbus 40 Kommunikationsmodul konfiguriert.
Laut der Anleitung hier https://www.nibe.eu/assets/documents/24801/031725-10.pdf, wird deine VVM 320 vom Modus 40 unterstützt. Ich denke, es sollte funktionieren.

Gruß VuffiRaa
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: stenny am 10 Januar 2021, 15:43:33
Danke für deine Antwort.

Vielleicht noch 2 Sachen.
Gibt es ggf die Hardware fertig zu bekommen.
Ich finde nicht wirklich einen Link zu der Software/GitHub

Dann will ich mal sehen mit welcher Hardware ich das am besten lose.....
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 14 Januar 2021, 08:19:36
Hier ist der Link zum GitHub https://github.com/fhem/Nibe
Ich habe auf der Seite einige Links aktualisiert, damit sollten alle Information verfügbar sein.

Eine Bezugsquelle für fertige Hardware ist mir nicht bekannt.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: stenny am 20 Februar 2021, 13:30:46
Hallo,

wie immer scheine ich es nicht zu kappieren.....

Habe den Arduino geflasht und angeschlossen.
Einstellungen an der Heizung sind durchgeführt.

Bekomme aber keine Verbindung mit fhem hin.....

Das GateWay ist 192.168.31.199 (anpingbar) - Daten per UDP auf Port 8089 an 200.
Daten mit dem USB Stick in die Nibe eingespielt.

Beim ersten Versuch war der Bus gedreht was natürlich einen Fehler an der Heizung brachte. Nach korrekten Anschluß lief die Heizung weiter - heist das das der Arduino wohl korrekt arbeitet.

Jetzt bekomme ich aber keine Verbindung zum fhem.
Was wie muss ich das Modul eunrichten.....?

Internals:
   Address    192.168.31.199
   Clients    :NIBE:
   DEF        192.168.31.199 8089
   FD         12
   FUUID      603105b4-f33f-7399-2ac1-c41282485af2fc76
   LocalPort  8089
   NAME       Heizung
   NR         49
   PeerPortRead 10000
   PeerPortWrite 10001
   STATE      opened
   TYPE       NIBE_UDP
   MatchList:
     1:NIBE     .*
   READINGS:
     2021-02-20 13:57:27   state           opened
Attributes:


Internals:
   FUUID      60310283-f33f-7399-5680-e77feed8e2ec77c4
   FVERSION   71_NIBE.pm:?/2021-02-20
   IODev      Heizung
   NAME       Nibe
   NOTIFYDEV  global
   NR         48
   NTFY_ORDER 50-Nibe
   STATE      ???
   TYPE       NIBE
   register:
Attributes:
   IODev      Heizung
   event-min-interval .*:30
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 20 Februar 2021, 16:40:32
Hallo stenny,

ich glaube die Ports im Modul passen noch nicht. Definiere es mal so:
define <name> NIBE_UDP [<address>] [<local_port>] [<read_port>] [<write_port>]

Bzw. ohne Angabe der Ports werde Grundeinstellungen genommen:

Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: stenny am 20 Februar 2021, 16:44:05
Hallo

der 9999 Ist bei mir nicht frei
in der datei für den Arduino habe ich es auf 8089 geändert, und auch im FHEM

Habe noch nicht herausgefunfen wo der 9999er genutz wird (fhem läuft im Docker auf einer Synology) Ports sind alle durchgeleitet

/**
* openHAB, the open Home Automation Bus.
* Copyright (c) 2010-2015, openHAB.org <admin@openhab.org>
*
* See the contributors.txt file in the distribution for a
* full listing of individual contributors.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses>.
*
* Additional permission under GNU GPL version 3 section 7
*
* If you modify this Program, or any covered work, by linking or
* combining it with Eclipse (or a modified version of that library),
* containing parts covered by the terms of the Eclipse Public License
* (EPL), the licensors of this Program grant you additional permission
* to convey the resulting work.
*
* ----------------------------------------------------------------------------
*
*  This ARDUINO application listening data from Nibe F1145/F1245 heat pumps (RS485 bus)
*  and send valid frames to configurable IP/port address by UDP packets.
*  Application also acknowledge the valid packets to heat pump.
*
*  Ethernet and RS-485 arduino shields are required.
*
*  Serial settings: 9600 baud, 8 bits, Parity: none, Stop bits 1
*
*  MODBUS module support should be turned ON from the heat pump.
*
*  Frame format:
*  +----+----+----+-----+-----+----+----+-----+
*  | 5C | 00 | 20 | CMD | LEN |  DATA   | CHK |
*  +----+----+----+-----+-----+----+----+-----+
*
*  Checksum: XOR
*
*  When valid data is received (checksum ok),
*   ACK (0x06) should be sent to the heat pump.
*  When checksum mismatch,
*   NAK (0x15) should be sent to the heat pump.
*
*  If heat pump does not receive acknowledge in certain time period,
*  pump will raise an alarm and alarm mode is activated.
*  Actions on alarm mode can be configured. The different alternatives
*  are that the Heat pump stops producing hot water (default setting)
*  and/or reduces the room temperature.
*
*  Author: pauli.anttila@gmail.com
*
*
*  2.11.2013 v1.00 Initial version.
*  3.11.2013   v1.01   
*/

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
#include <avr/wdt.h>

// ######### CONFIGURATION #######################

// enable debug printouts, listen printouts e.g. via netcat (nc -l -u 50000)
#define ENABLE_DEBUG

// the media access control (ethernet hardware) address for the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

//the IP address for the shield
byte ip[] = { 192, 168, 31, 199 };   

// target IP address and port where UDP packats are send
IPAddress target_ip(192, 168, 31, 200);
unsigned int udp_port = 8089;


// ######### VARIABLES #######################

// direction change pin for RS-485 port
#define directionPin  2

#ifdef ENABLE_DEBUG
char verbose = 0;
char debug_buf[100];
#endif

// state machine states
enum e_state {
  STATE_WAIT_START,
  STATE_WAIT_DATA,
  STATE_OK_MESSAGE_RECEIVED,
  STATE_CRC_FAILURE,
};

e_state state = STATE_WAIT_START;

EthernetUDP udp;

// message buffer for RS-485 communication 
#define MAX_DATA_LEN 255
byte buffer[MAX_DATA_LEN];

byte index = 0;

// ######### SETUP #######################

void setup()  {
  wdt_enable (WDTO_1S);
 
  pinMode(directionPin, OUTPUT);
  digitalWrite(directionPin, LOW);
 
  Serial.begin(9600, SERIAL_8N1);
 
  Ethernet.begin(mac,ip);
  udp.begin(udp_port);
 
  #ifdef ENABLE_DEBUG
  if (verbose) {
    debugPrint("\nstarted\n");
  }
  #endif
}

// ######### MAIN LOOP #######################

void loop() {
 
  wdt_reset ();
 
  #ifdef ENABLE_DEBUG
  int packetSize = udp.parsePacket();
  if(packetSize)
  {
    verbose = udp.read();
  }
  #endif
 
  switch(state) {
 
    case STATE_WAIT_START:
      if (Serial.available() > 0) {
        byte b = Serial.read();
 
        #ifdef ENABLE_DEBUG
        if (verbose > 2) {
          sprintf(debug_buf, "%02x", b);
          debugPrint(debug_buf);
        }
        #endif
       
        if (b == 0x5C) {
          buffer[0] = b;
          index = 1;
          state = STATE_WAIT_DATA;
         
          #ifdef ENABLE_DEBUG
          if (verbose > 1) {
            debugPrint("Frame start found\n");
          }
          #endif
        }
      }
      break;
     
    case STATE_WAIT_DATA:
      if (Serial.available() > 0) {
        byte b = Serial.read();
 
        #ifdef ENABLE_DEBUG
        if (verbose > 2) {
          sprintf(debug_buf, "%02x", b);
          debugPrint(debug_buf);
        }
        #endif
     
        if (index >= MAX_DATA_LEN)
        {
          // too long message
          state = STATE_WAIT_START;
        }
        else
        {
          buffer[index++] = b;
         
          int msglen = checkNibeMessage(buffer, index);
         
          #ifdef ENABLE_DEBUG
          if (verbose > 1) {
            sprintf(debug_buf, "\ncheckMsg=%d\n", msglen);
            debugPrint(debug_buf);
          }
          #endif
             
          switch (msglen)
          {
            case 0:   break; // Ok, but not ready
            case -1:  state = STATE_WAIT_START; break; // Invalid message
            case -2:  state = STATE_CRC_FAILURE; break; // Checksum error
            default:  state = STATE_OK_MESSAGE_RECEIVED; break;
          }
        }
      }
      break;

    case STATE_CRC_FAILURE:
      #ifdef ENABLE_DEBUG
      if (verbose) {
        debugPrint("CRC failure\n");
      }
      #endif
     
      sendNak();
      state = STATE_WAIT_START;
      break;
   
    case STATE_OK_MESSAGE_RECEIVED:
      #ifdef ENABLE_DEBUG
      if (verbose) {
        debugPrint("Message received\n");
      }
      #endif
     
      sendAck();
     
      // send UDP packet if message is a data packet
      // if data contains 0x5C (start character), message len can be bigger than 0x50
      if (buffer[0] == 0x5C && buffer[1] == 0x00 && buffer[2] == 0x20 && buffer[3] == 0x68 && buffer[4] >= 0x50)
        sendUdpPacket(buffer, index);
      state = STATE_WAIT_START;
      break;
  }

}


// ######### FUNCTIONS #######################

/*
* Return:
*  >0 if valid message received (return message len)
*   0 if ok, but message not ready
*  -1 if invalid message
*  -2 if checksum fails
*/
int checkNibeMessage(const byte* const data, byte len)
{
    #ifdef ENABLE_DEBUG
    if (verbose > 2) {
      sprintf(debug_buf, "\nlen=%u\n", len);
      debugPrint(debug_buf);
    }
    #endif
   
    if (len <= 0)
        return 0;
   
    if (len >= 1)
    {
        if (data[0] != 0x5C)
            return -1;
       
        if (len >= 3)
        {
            if (data[1] != 0x00 || data[2] != 0x20)
                return -1;
        }
       
        if (len >= 6)
        {
            int datalen = data[4];
           
            if (len < datalen + 6)
                return 0;
           
            byte checksum = 0;
           
            // calculate XOR checksum
            for(int i = 2; i < (datalen + 5); i++)
                checksum ^= data[i];
           
            byte msg_checksum = data[datalen + 5];
           
            #ifdef ENABLE_DEBUG
            if (verbose > 1) {
              sprintf(debug_buf, "\nchecksum=%02x, msg_checksum=%02x\n", checksum, msg_checksum);
              debugPrint(debug_buf);
            }
            #endif
                     
            if (checksum != msg_checksum) {
             
              // check special case, if checksum is 0x5C (start character),
              // heat pump seems to send 0xC5 checksum
              if (checksum != 0x5C && msg_checksum != 0xC5)
                return -2;
            } 
           
            return datalen + 6;
        }
       
    }
   
    return 0;
   
}

void sendAck()
{
  #ifdef ENABLE_DEBUG
  if (verbose) {
    debugPrint("Send ACK\n");
  }
  #endif
 
  digitalWrite(directionPin, HIGH);
  delay(1);
  Serial.write(0x06);
  Serial.flush();
  delay(1);
  digitalWrite(directionPin, LOW);
}

void sendNak()
{
  #ifdef ENABLE_DEBUG
  if (verbose) {
    debugPrint("Send NAK\n");
  }
  #endif
 
  digitalWrite(directionPin, HIGH);
  delay(1);
  Serial.write(0x15);
  Serial.flush();
  delay(1);
  digitalWrite(directionPin, LOW);
}

void sendUdpPacket(const byte* const data, int len) {
 
  #ifdef ENABLE_DEBUG
  if (verbose) {
    sprintf(debug_buf, "Sending UDP packet, len=%d\n", len);
    debugPrint(debug_buf);
    if (verbose > 2) {
      int i;
      for (i=0; i<len; i++) {
        sprintf(debug_buf, "%02x", data[i]);
        debugPrint(debug_buf);
      }
      debugPrint("\n");
    }
  }
  #endif
 
  udp.beginPacket(target_ip, udp_port);
  udp.write(data, len);
  udp.endPacket();
}

#ifdef ENABLE_DEBUG
void debugPrint(char* data) {
  udp.beginPacket(target_ip, 50000);
  udp.write(data);
  udp.endPacket();
}
#endif


Da die Heizung selber ja nicht auf Störung geht sollte das soweit iO sein.
Der UDP Part sagt auch das Verbunden ist (opend)

Internals:
   Address    192.168.31.199
   Clients    :NIBE:
   DEF        192.168.31.199 8089 10000 10001
   FD         12
   FUUID      603105b4-f33f-7399-2ac1-c41282485af2fc76
   LocalPort  8089
   NAME       Heizung
   NR         49
   PeerPortRead 10000
   PeerPortWrite 10001
   STATE      opened
   TYPE       NIBE_UDP
   MatchList:
     1:NIBE     .*
   READINGS:
     2021-02-20 16:44:47   state           opened
Attributes:


Nachtrag:
Gerade einen Pi nur für den Nibe aufgesetzt - keine Änderung
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: vuffiraa am 20 Februar 2021, 19:25:07
Hmm, so direkt kann ich das Problem auch nicht erkennen.
UDP ist leider verbindungslos, du bekommst also keine Fehlermeldung, wenn die Gegenstelle nicht erreichbar ist.

Kannst du irgendwie auf den Seriellen Monitor auf dem Arduino anschauen? Vielleicht sieht man da, was stört bzw. ob wirklich Daten gesendet werden.

Vielleicht auch mal die Kommunikation von FHEM aus starten. Also z.B. mit get register irgendetwas anfragen.
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: stenny am 21 Februar 2021, 08:48:04
Hi,

Arduino ist erst mal neuland für mich - seriellen monitor muss ich mal lesen.

Get get register ging gesetern nichts. Da das nicht bei mir zuhause ist wird das aber ein paar Tage dauern

Danke erstmal
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Kruemel am 21 August 2022, 10:27:01
Hallo zusammen, wir haben seit kurzem eine vvm s320. In der Anleitung zum modbus ist sicht gelistet. Auch im Modbusmanager Version 1.0.9 ist sie nicht aufgeführt. Hat jemand vlt schon Erfahrungen damit gemacht?
Gruß
Wolfgang
Titel: Antw:Integration von Nibe Wärmepumpen per RS485
Beitrag von: Kruemel am 22 August 2022, 14:35:44
Hallo, meine Frage hat sich erledigt. Die s320 kann Modbus von Haus aus.