Fehler bei NiBe Integration

Hallo zusammen,

ich habe eine Nibe Wärmepumpe bekommen. Modell S2060 und VVM S320.

Nun wollte ich die Integration in HA installieren und ich bekomme immer Fehlermeldung. Ich habe mal die Bilder angehangen. Im Innengerät habe ich nach Anleitung Modbus freigeschalten auf “readonly” unde der Port 502 steht in der Anleitung. Bei weiteren Recherchen habe ich herausgefunden, das die Modbus Unit ID auf 1 stehes soll Ich habe es mit 0 und 1 probiert, aber immer den gleichen Fahler erhalten. Die VVM ist per WLAN im Netz und ich kann erfolgreich einen Ping durchführen. Also erreichbar ist das Innengerät.

Hätte da einer einen Lösungsvorschlag?

Danke sehr und Gruß

Rainer

Fehler bei Schreibanforderung an Pumpe

Und beim zweiten Bild fehlt die url

Ich denke da liegt dein Problem

Mit Integration meinst du die Nibe Integration ?

Ist die WP denn fürs Netz freigegeben ?

Hallo Thomas,

das zweite Bild habe ich nur für die Fehlermeldung gemacht. Wenn die Fehlermeldung erscheint, wir die Url gelöscht. Im ersten Bild ist die richtige Url zu sehen.

Ja genau, die NiBe Integration

Im Netz ist die VVM erreichbar. Ich habe die originale App “MyUplink” installiert, und damit ist die WP im Heimnetz erreichbar. Auch über www in meinem NiBe Konto errreichbar.

Gruß Rainer

Das ist doch die interne Nibe Integration von Ha ?

Der Fehler sagt ja das auf Nibe nicht geschrieben werden kann, und du hast angegeben im readonly Modus zu sein.

Also musst du bei der Nibe den Schreibzugriff freigeben, ich habe selber keine Nibe aber es müsste hierüber gehen .

  1. IP-Adressbeschränkung in der NIBE deaktivieren

Die S-Serie blockiert standardmäßig Schreibbefehle von IP-Adressen, die nicht explizit autorisiert sind.

  1. Gehe am Display der Wärmepumpe in das Menü 7.5.9 (Modbus TCP/IP).
  2. Stelle sicher, dass Modbus TCP/IP auf „Ein“ steht.
  3. Wichtig: Deaktiviere dort die Option „IP-Adressbeschränkung“ (bzw. IP Address Restriction). Wenn diese aktiv ist, nimmt die NIBE zwar Leseanfragen von Home Assistant an, blockiert aber jeden Schreibbefehl (Write-Error).

Hallo,

das war’s !!

ich hab die WP drin. Es war tatsächlich der “read only” Fehler. Das mit den IP Adressen hatte ich alles schon geprüft gehabt. Nun habe ich so etwa 800 Entitäten und werde mich da durchkämpfen.

Vielen Dank für deine Hilfe!!!

Gruß Rainer

Denk aber daran, dass die Anzahl von Requests/s auf den Modbus bei der VVM-S320 beschränkt ist. Ich empfehle, diese Integration wieder rauszunehmen und nur die tatsächlich benötigten Modbus Register direkt als Modbus Entitäten zu definieren. Für den normalen Betrieb reichen dir 30-40 Stück.

Diese “Integration” ist nicht sonderlich hilfreich, da sie einfach alles rauszieht und auch die mangelhafte Dokumentation von Nibe nicht wirklich "heilt.

Die Register haben einfach nur Namen…über deren Funktion kann man dann spekulieren. Da scheinen aber einige dabei zu sein, die tiefer in die Steuerungslogik eingreifen, als mir zumindest lieb war.

Good luck

Frank

Guten Morgen zaphood,

Da ke für die Hinweise. aber wie meist du das? Wenn ich die Nibe.Integrtion raus nehme dann habe ich doch gar keine Entitäten. Wie soll ich dann auf das Modbus Register zugreifen? Kannst du mir das kurz erläutern? Ich stehe mit HA quasi am Anfang. Und ja, die ca 800 Entitäten haben mich schon ein wenig überfordert.

Gruß Rainer

Hallo Rainer,

ok, dann ein paar Basics :wink:

Die Nibe nutzt das Protokoll MODBUS TCP. Aus diversen Gründen (die hier erst mal egal sind) ist der Bus je nach Gerät nur in der Lage, einige wenige bis einige dutzende Parameter (Werte) pro Sekunde abzufragen und zu senden. Ich meine, bei der Nibe sind es 30/s (muss ich ins Handbuch schauen). Die Werte heissen da “Register” und HA macht da “Entitäten” draus. Jedes Register wird durch diverse Attribute definiert die man aus der Doku des Herstellers entnehmen muss.

Die Integration fragt einfach mal ALLE 800 Register ab… dann werden nach Erreichen des Limits Werte einfach nicht mehr gesendet, und du fragst dich, warum da immer wieder Entitäten ohne oder mit alten Werten zu sehen sind. Zu viele Abfragen.

Daher beschränkt man sich auf die, die man echt braucht und fragt auch in gezielten Intervallen ab, nicht alles pauschal alle paar Sekunden.

Homeassistant kann direkt mit Modbus arbeiten, muss man halt ein bisschen “zu Fuß” konfigurieren, das bekommen wir aber zusammen hin. Ich habe von Nibe die Modbus Doku bekommen, sag Bescheid wenn du die haben magst. Erwarte aber nicht zu viel, die listet nur Register mit Namen, nullkommagarkeine Erklärung. Das ist die schlechteste Modbus Doku die ich je gesehen habe, das machen sogar die Chinesen besser. Egal, da ich mir die Mühe mal für meine eigene VVM-S320 gemacht habe, das zu zerpflücken, musst Du das ja nicht mehr tun :wink:

Ich gehe davon aus, dass du noch keine Modbus.yaml angelegt und auch keine Modbus Geräte innerhalb der configuration.yaml angelegt hast? Dann füge bitte als Erstes folgenden Eintrag irgendwo am Anfang zur Configuration.yaml hinzu:

modbus: !include modbus.yaml

Jetzt legst du mit dem File Editor eine neue Datei namens “modbus.yaml” an.
In diese neue Datei kopierst du das hier rein (WICHTIG: Unter HOST muss die IP deiner Nibe rein!!):

  - name: modbus_tcp_nibe_s2125
    type: tcp
    host: IP-ADRESSE-DEINER-NIBE
    port: 502
    delay: 0
    message_wait_milliseconds: 100
    timeout: 5

    sensors:
      # -----------------------------------------------------------------------
      # VVM S320 – Temperaturen
      # -----------------------------------------------------------------------
      - name: "Nibe Außenlufttemperatur (BT1)"
        unique_id: nibe_aktuelle_aussenlufttemperatur_bt1
        slave: 1
        address: 1
        input_type: input
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 15

      - name: "Nibe Vorlauf (BT2)"
        unique_id: nibe_vorlauf_bt2
        slave: 1
        address: 5
        input_type: input
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 15

      - name: "Nibe Rücklauf (BT3)"
        unique_id: nibe_ruecklauf_bt3
        slave: 1
        address: 7
        input_type: input
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 15

      - name: "Nibe Zusatzheizung Temperatur (BT63)"
        unique_id: nibe_zusatzheizung_temperatur_bt63
        slave: 1
        address: 72
        input_type: input
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 30

      # -----------------------------------------------------------------------
      # VVM S320 – Brauchwasser
      # -----------------------------------------------------------------------
      - name: "Nibe Brauchwasser oben (BT7)"
        unique_id: nibe_brauchwasser_oben_bt7
        slave: 1
        address: 8
        input_type: input
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 15

      - name: "Nibe Brauchwasserbereitung (BT6)"
        unique_id: nibe_brauchwasserbereitung_bt6
        slave: 1
        address: 9
        input_type: input
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 15

      # -----------------------------------------------------------------------
      # VVM S320 – Hydraulik & Pumpenstatus
      # -----------------------------------------------------------------------
      - name: "Nibe Volumenstrommesser (BF1)"
        unique_id: nibe_volumenstrommesser_bf1
        slave: 1
        address: 40
        input_type: input
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "l/min"
        state_class: measurement
        scan_interval: 15

      - name: "Nibe Drehzahl Heizungsumwälzpumpe (GP1)"
        unique_id: nibe_drehzahl_heizungsumwaelzpumpe_gp1
        slave: 1
        address: 1636
        input_type: input
        data_type: uint16
        unit_of_measurement: "%"
        state_class: measurement
        scan_interval: 15

      # 0=Heizung, 1=Brauchwasser
      - name: "Nibe Umschaltventil Brauchwasser (QN10)"
        unique_id: nibe_umschaltventil_brauchwasser_qn10
        slave: 1
        address: 2196
        input_type: input
        data_type: uint16
        scan_interval: 15

      # -----------------------------------------------------------------------
      # VVM S320 – Phasenströme (u32, Faktor 10 → scale: 0.1)
      # -----------------------------------------------------------------------
      - name: "Nibe Phasenstrom L1 (BE1)"
        unique_id: nibe_phasenstrom_l1_be1
        slave: 1
        address: 50
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "A"
        device_class: current
        state_class: measurement
        scan_interval: 15

      - name: "Nibe Phasenstrom L2 (BE2)"
        unique_id: nibe_phasenstrom_l2_be2
        slave: 1
        address: 48
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "A"
        device_class: current
        state_class: measurement
        scan_interval: 15

      - name: "Nibe Phasenstrom L3 (BE3)"
        unique_id: nibe_phasenstrom_l3_be3
        slave: 1
        address: 46
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "A"
        device_class: current
        state_class: measurement
        scan_interval: 15

      # -----------------------------------------------------------------------
      # S2125 (EB101) – Verdichter & Ventilator
      # -----------------------------------------------------------------------
      # s16, Faktor 10 → scale: 0.1
      - name: "Nibe Aktuelle Verdichterfrequenz (EB101)"
        unique_id: nibe_aktuelle_verdichterfrequenz_eb101
        slave: 1
        address: 1803
        input_type: input
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "Hz"
        state_class: measurement
        scan_interval: 15

      - name: "Nibe Ventilatordrehzahl (EB101)"
        unique_id: nibe_ventilatordrehzahl_aussenluftwaermepumpe_eb101
        slave: 1
        address: 401
        input_type: input
        data_type: uint16
        unit_of_measurement: "rpm"
        state_class: measurement
        scan_interval: 15

      # u16, Faktor 10, kW → scale: 0.1
      - name: "Nibe Erzeugte Wärmeleistung (EB101)"
        unique_id: nibe_aktuell_erzeugte_waermeleistung_eb101
        slave: 1
        address: 406
        input_type: input
        data_type: uint16
        scale: 0.1
        precision: 1
        unit_of_measurement: "kW"
        device_class: power
        state_class: measurement
        scan_interval: 30

      # 0=aus, 1=aktiv, 2=passiv
      - name: "Nibe Enteisung (EB101)"
        unique_id: nibe_enteisung_aussenluftwaermepumpe_eb101
        slave: 1
        address: 1805
        input_type: input
        data_type: uint16
        scan_interval: 15

      # -----------------------------------------------------------------------
      # S2125 (EB101) – Statistik
      # -----------------------------------------------------------------------
      - name: "Nibe Verdichter Anzahl Starts (EB101-EP14)"
        unique_id: nibe_verdichter_anzahl_starts_eb101_ep14
        slave: 1
        address: 1489
        input_type: input
        data_type: uint32
        swap: word
        state_class: total_increasing
        scan_interval: 300

      # s32, Faktor 10 → scale: 0.1
      - name: "Nibe Verdichter Gesamtbetriebszeit (EB101-EP14)"
        unique_id: nibe_verdichter_gesamtbetriebszeit_eb101_ep14
        slave: 1
        address: 1491
        input_type: input
        data_type: int32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "h"
        state_class: total_increasing
        scan_interval: 300

      # -----------------------------------------------------------------------
      # S2125 (EB101) – Alarm
      # -----------------------------------------------------------------------
      - name: "Nibe Alarmnummer Außenluft-WP (EB101)"
        unique_id: nibe_alarmnummer_aussenluftwaermepumpe_eb101
        slave: 1
        address: 400
        input_type: input
        data_type: uint16
        scan_interval: 30

      # -----------------------------------------------------------------------
      # Allgemein – Regelung & Betriebsstatus
      # -----------------------------------------------------------------------
      - name: "Nibe Berechneter Vorlauf Klimatisierungssystem 1"
        unique_id: nibe_berechneter_vorlauf_klimatisierungssystem_1
        slave: 1
        address: 1017
        input_type: input
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 15

      - name: "Nibe Berechneter Vorlauf Kühlung"
        unique_id: nibe_berechneter_vorlauf_kuehlung
        slave: 1
        address: 1567
        input_type: input
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 15

      # 10=aus, 20=Brauchwasser, 30=Heizung, 40=Pool, 60=Kühlung
      - name: "Nibe Betriebspriorität"
        unique_id: nibe_betriebsprioritaet
        slave: 1
        address: 1028
        input_type: input
        data_type: uint16
        scan_interval: 15

      - name: "Nibe Gesamtbetriebszeit Zusatzheizung"
        unique_id: nibe_gesamtbetriebszeit_zusatzheizung
        slave: 1
        address: 1025
        input_type: input
        data_type: int32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "h"
        state_class: total_increasing
        scan_interval: 300

      # -----------------------------------------------------------------------
      # Allgemein – Alarme
      # -----------------------------------------------------------------------
      # 0=kein Alarm, 1=aktiver Alarm
      - name: "Nibe Aktiver Alarm"
        unique_id: nibe_aktiver_alarm
        slave: 1
        address: 2195
        input_type: input
        data_type: uint16
        scan_interval: 15

      - name: "Nibe Alarmnummer Innengerät"
        unique_id: nibe_alarmnummer_innengeraet
        slave: 1
        address: 1975
        input_type: input
        data_type: int16
        scan_interval: 30

      # -----------------------------------------------------------------------
      # Allgemein – Leistungsaufnahme aktuell
      # u32, Faktor 10, W → scale: 0.1  (Verdichter + interne Zusatzheizung)
      # -----------------------------------------------------------------------
      - name: "Nibe Aktuelle elektrische Leistungsaufnahme"
        unique_id: nibe_aktuelle_elektrische_leistungsaufnahme_verdichter_und_zusatzheizung
        slave: 1
        address: 2166
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        scan_interval: 15

      # -----------------------------------------------------------------------
      # EME20 / PV-Überschuss
      # -----------------------------------------------------------------------
      # Aktuelle PV-Einspeisung: u32, Faktor 1, W
      - name: "Nibe EME20 Aktuelle PV-Leistung"
        unique_id: nibe_eme20_aktuelle_pv_leistung
        slave: 1
        address: 2176
        input_type: input
        data_type: uint32
        swap: word
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        scan_interval: 15

      # u32, Faktor 100, kW (CSV-Export) – beim ersten Einsatz Rohwert prüfen
      - name: "Nibe EME20 Mittlere PV-Gesamtleistung"
        unique_id: nibe_eme20_mittlere_pv_gesamtleistung
        slave: 1
        address: 2178
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.01
        precision: 2
        unit_of_measurement: "kW"
        device_class: power
        state_class: measurement
        scan_interval: 60

      # s32, Faktor 10, kWh → scale: 0.1
      - name: "Nibe EME20 PV-Gesamtenergie"
        unique_id: nibe_eme20_pv_gesamtenergie
        slave: 1
        address: 2180
        input_type: input
        data_type: int32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        scan_interval: 300

      # 1=Warmwasser, 2=Heizung
      - name: "Nibe EME20 Solarenergie verwendet für"
        unique_id: nibe_eme20_solarenergie_verwendet_fuer
        slave: 1
        address: 2726
        input_type: input
        data_type: uint16
        scan_interval: 15

      - name: "Nibe Betriebsmodus PV-Module"
        unique_id: nibe_betriebsmodus_pv_module
        slave: 1
        address: 579
        input_type: input
        data_type: uint16
        scan_interval: 30

      # -----------------------------------------------------------------------
      # Energie kumuliert
      # -----------------------------------------------------------------------
      - name: "Nibe Energie Brauchwasser inkl. Zusatzheizung"
        unique_id: nibe_energie_brauchwasser_inkl_interner_zusatzheizung
        slave: 1
        address: 1575
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        scan_interval: 300

      - name: "Nibe Energie Heizung inkl. Zusatzheizung"
        unique_id: nibe_energie_heizung_inkl_interner_zusatzheizung
        slave: 1
        address: 1577
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        scan_interval: 300

      - name: "Nibe Energie Brauchwasser nur Verdichter"
        unique_id: nibe_energie_brauchwasser_nur_verdichter
        slave: 1
        address: 1583
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        scan_interval: 300

      - name: "Nibe Energie Heizung nur Verdichter"
        unique_id: nibe_energie_heizung_nur_verdichter
        slave: 1
        address: 1585
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        scan_interval: 300

      - name: "Nibe Gesamtproduktion Wärme"
        unique_id: nibe_gesamtproduktion_waerme
        slave: 1
        address: 3821
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        scan_interval: 300

      - name: "Nibe Gesamtverbrauch elektrisch"
        unique_id: nibe_gesamtverbrauch_elektrisch
        slave: 1
        address: 3823
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        scan_interval: 300

      # -----------------------------------------------------------------------
      # Energieprotokoll letzte Stunde (gleitend, state_class: measurement)
      # u32, Faktor 100, kWh → scale: 0.01
      # -----------------------------------------------------------------------
      - name: "Nibe Wärme Heizung letzte Stunde"
        unique_id: nibe_energieprotokoll_erzeugte_waerme_heizung_letzte_stunde
        slave: 1
        address: 2283
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.01
        precision: 2
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: measurement
        scan_interval: 300

      - name: "Nibe Wärme Brauchwasser letzte Stunde"
        unique_id: nibe_energieprotokoll_erzeugte_waerme_brauchwasser_letzte_stunde
        slave: 1
        address: 2285
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.01
        precision: 2
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: measurement
        scan_interval: 300

      - name: "Nibe Strombezug Heizung letzte Stunde"
        unique_id: nibe_energieprotokoll_elektrischer_bezug_heizung_letzte_stunde
        slave: 1
        address: 2291
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.01
        precision: 2
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: measurement
        scan_interval: 300

      - name: "Nibe Strombezug Brauchwasser letzte Stunde"
        unique_id: nibe_energieprotokoll_elektrischer_bezug_brauchwasser_letzte_stunde
        slave: 1
        address: 2293
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.01
        precision: 2
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: measurement
        scan_interval: 300

      - name: "Nibe Zusatzheizung Heizung letzte Stunde"
        unique_id: nibe_energieprotokoll_zusatzheizung_heizung_letzte_stunde
        slave: 1
        address: 2299
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.01
        precision: 2
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: measurement
        scan_interval: 300

      - name: "Nibe Zusatzheizung Brauchwasser letzte Stunde"
        unique_id: nibe_energieprotokoll_zusatzheizung_brauchwasser_letzte_stunde
        slave: 1
        address: 2301
        input_type: input
        data_type: uint32
        swap: word
        scale: 0.01
        precision: 2
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: measurement
        scan_interval: 300

      # =======================================================================
      # HOLDING REGISTER – Einstellungen (R/W)
      # =======================================================================

      # -----------------------------------------------------------------------
      # Regelung – Gradminuten & GM-Schwellwerte
      # -----------------------------------------------------------------------
      # s32, Faktor 10 → scale: 0.1
      - name: "Nibe Gradminuten"
        unique_id: nibe_gradminuten
        slave: 1
        address: 11
        input_type: holding
        data_type: int32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "GM"
        state_class: measurement
        scan_interval: 15

      - name: "Nibe Kühlgradminuten"
        unique_id: nibe_kuehlgradminuten
        slave: 1
        address: 20
        input_type: holding
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "GM"
        state_class: measurement
        scan_interval: 60

      # s16, Faktor 1, GM (ab wann startet Verdichter)
      - name: "Nibe GM Schwellwert Verdichterstart"
        unique_id: nibe_gm_schwellwert_verdichterstart
        slave: 1
        address: 97
        input_type: holding
        data_type: int16
        unit_of_measurement: "GM"
        state_class: measurement
        scan_interval: 3600

      # s16, Faktor 1, GM (ab wann startet Zusatzheizung)
      - name: "Nibe GM Schwellwert Zusatzheizungsstart"
        unique_id: nibe_gm_start_zusatzheizung
        slave: 1
        address: 679
        input_type: holding
        data_type: int16
        unit_of_measurement: "GM"
        state_class: measurement
        scan_interval: 3600

      # -----------------------------------------------------------------------
      # Heizkurve
      # -----------------------------------------------------------------------
      - name: "Nibe Heizkurve Klimatisierungssystem 1"
        unique_id: nibe_heizkurve_klimatisierungssystem_1
        slave: 1
        address: 26
        input_type: holding
        data_type: int16
        scan_interval: 3600

      - name: "Nibe Verschiebung Heizkurve Klimatisierungssystem 1"
        unique_id: nibe_verschiebung_heizkurve_klimatisierungssystem_1
        slave: 1
        address: 30
        input_type: holding
        data_type: int16
        scan_interval: 3600

      # -----------------------------------------------------------------------
      # Brauchwasser Einstellungen
      # -----------------------------------------------------------------------
      # 0=klein, 1=mittel, 2=groß, 3=nicht verwendet, 4=Smart Control
      - name: "Nibe Brauchwasserstellung"
        unique_id: nibe_brauchwasserstellung
        slave: 1
        address: 56
        input_type: holding
        data_type: int16
        scan_interval: 3600

      - name: "Nibe Starttemperatur Brauchwasser Normal"
        unique_id: nibe_starttemperatur_brauchwasser_normal
        slave: 1
        address: 59
        input_type: holding
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 3600

      - name: "Nibe Stopptemperatur Brauchwasser Normal"
        unique_id: nibe_stopptemperatur_brauchwasser_normal
        slave: 1
        address: 63
        input_type: holding
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 3600

      # -----------------------------------------------------------------------
      # Betriebsmodus & Sonstiges
      # -----------------------------------------------------------------------
      # 0=Auto, 1=Manuell, 2=nur Zusatzheizung
      - name: "Nibe Betriebsmodus"
        unique_id: nibe_betriebsmodus
        slave: 1
        address: 237
        input_type: holding
        data_type: uint16
        scan_interval: 3600

      # Alarm Reset: Wert 1 per modbus.write_register zum Quittieren schreiben
      - name: "Nibe Alarm Reset Status"
        unique_id: nibe_alarm_reset
        slave: 1
        address: 22
        input_type: holding
        data_type: uint16
        scan_interval: 3600

      # Urlaubsfunktion: 0=aktiv, -1=inaktiv (FW-abhängig)
      - name: "Nibe Urlaubsfunktion Status"
        unique_id: nibe_urlaubsfunktion_status
        slave: 1
        address: 19
        input_type: holding
        data_type: int16
        scan_interval: 3600

   # Temperaturgrenzen alle drei BW-Modi (Holding, R/W via Service)
      # s16, Faktor 10 → scale: 0.1
      # -----------------------------------------------------------------------
      - name: "Nibe Starttemperatur BW Hoch"
        unique_id: nibe_starttemperatur_bw_hoch
        slave: 1
        address: 58
        input_type: holding
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 3600
 
      - name: "Nibe Starttemperatur BW Niedrig"
        unique_id: nibe_starttemperatur_bw_niedrig
        slave: 1
        address: 60
        input_type: holding
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 3600
 
      - name: "Nibe Stopptemperatur BW Hoch"
        unique_id: nibe_stopptemperatur_bw_hoch
        slave: 1
        address: 62
        input_type: holding
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 3600
 
      - name: "Nibe Stopptemperatur BW Niedrig"
        unique_id: nibe_stopptemperatur_bw_niedrig
        slave: 1
        address: 64
        input_type: holding
        data_type: int16
        scale: 0.1
        precision: 1
        unit_of_measurement: "°C"
        device_class: temperature
        state_class: measurement
        scan_interval: 3600
 
      # -----------------------------------------------------------------------
      # Aktueller BW-Modus (Rückmeldung, read-only)
      # Reg 137: Aktiver Modus wie ihn die Steuerung intern verwendet
      # s8, Faktor 1: 0=niedrig, 1=normal, 2=hoch, 4=Smart Control
      # -----------------------------------------------------------------------
      - name: "Nibe Aktiver Brauchwassermodus"
        unique_id: nibe_aktiver_brauchwassermodus
        slave: 1
        address: 137
        input_type: input
        data_type: int16
        scan_interval: 30
 
      # Reg 1038: Aktuelle BW-Stellung ohne SPA/SC (s8)
      - name: "Nibe Aktuelle Brauchwasserstellung"
        unique_id: nibe_aktuelle_brauchwasserstellung
        slave: 1
        address: 1038
        input_type: input
        data_type: int16
        scan_interval: 30
 
      # -----------------------------------------------------------------------
      # Mehr Brauchwasser – Status (read-only)
      # u8: 0=inaktiv, 1=aktiv
      # -----------------------------------------------------------------------
      - name: "Nibe Mehr Brauchwasser Status"
        unique_id: nibe_mehr_brauchwasser_status
        slave: 1
        address: 1078
        input_type: input
        data_type: uint16
        scan_interval: 15
 
      # -----------------------------------------------------------------------
      # Interne Zusatzheizung
      # -----------------------------------------------------------------------
      # Leistung interne Zusatzheizung (read-only)
      # s16, Faktor 100, kW → scale: 0.01
      - name: "Nibe Leistung interne Zusatzheizung"
        unique_id: nibe_leistung_interne_zusatzheizung
        slave: 1
        address: 1027
        input_type: input
        data_type: int16
        scale: 0.01
        precision: 2
        unit_of_measurement: "kW"
        device_class: power
        state_class: measurement
        scan_interval: 15
 
      # Max. interne Zusatzheizung (Holding, R/W)
      # s16, Faktor 100, kW → scale: 0.01; Min=0, Max=45 kW, Default=9 kW
      - name: "Nibe Max interne Zusatzheizung"
        unique_id: nibe_max_interne_zusatzheizung
        slave: 1
        address: 102
        input_type: holding
        data_type: int16
        scale: 0.01
        precision: 2
        unit_of_measurement: "kW"
        device_class: power
        state_class: measurement
        scan_interval: 3600
 
      # Art der BW-Bereitung (Holding, R/W)
      # u8: 0=Wärmepumpe, 1=Heizstab, 2=Wärmepumpe+Heizstab (Default=2)
      # ACHTUNG: Werte sind eine Interpretation – beim ersten Einsatz verifizieren
      - name: "Nibe Art der BW-Bereitung"
        unique_id: nibe_art_der_bw_bereitung
        slave: 1
        address: 6064
        input_type: holding
        data_type: uint16
        scan_interval: 60
 
      # Betriebszeit Zusatzheizung für Brauchwasser (read-only)
      # s32, Faktor 10, h
      - name: "Nibe Betriebszeit Zusatzheizung BW"
        unique_id: nibe_betriebszeit_zusatzheizung_bw
        slave: 1
        address: 1069
        input_type: input
        data_type: int32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "h"
        state_class: total_increasing
        scan_interval: 300
 
# =============================================================================
# SWITCHES (neuer Block unter dem Hub, neben sensors:)
# =============================================================================
    switches:
 
      # Mehr Brauchwasser aktivieren / deaktivieren
      # Reg 697: s8, Holding – 0=aus, 1=ein
      - name: "Nibe Mehr Brauchwasser"
        unique_id: nibe_mehr_brauchwasser
        slave: 1
        address: 697
        write_type: holding
        command_on: 1
        command_off: 0
        scan_interval: 15
        verify:
          input_type: holding
          address: 697
          state_on: 1
          state_off: 0
 
      # Brauchwasserkomfort (z.B. für externe Komfortspeicher)
      # Reg 694: u8, Holding – 0=aus, 1=ein
      - name: "Nibe Brauchwasserkomfort"
        unique_id: nibe_brauchwasserkomfort
        slave: 1
        address: 694
        write_type: holding
        command_on: 1
        command_off: 0
        scan_interval: 60
        verify:
          input_type: holding
          address: 694
          state_on: 1
          state_off: 0

Danach neu starten und du hast nur noch diese Parameter in HA (die Nibe integration deaktivieren oder entfernen bitte! Modbus kann nur mit einem Server reden, Modbus-Integration und Nibe-Integration konkurrieren dann).

Alle Parameter die du nicht brauchst, kannst du mit der Raute auskommentieren (jeweils den ganzen Block von “-name” bis '“scan_intervall”). Achte auf die Einrückungen, die sind bei yaml wichtig. Der File editor zeigt rechts oben ein rotes Symbol, wenn ihm grobe Fehler bei der Syntax auffallen.

Das “scan_intervall” bestimmt, wie oft ein Parameter gelesen wird, damit kann man auch rumspielen.

Das ist eigentlich schon alles. Good Luck und have fun :slight_smile:
Frank

Hallo Frank,

vielen lieben Dank für die Hilfe. Das ist echt toll.

Nun hab ich erstmal was zu tun:-)

Das Register hatte ich mir auf den USB Stick gezogen und angeschaut. Und eine Beschreibung habe ich im Netz gefunden, und da steht echt nicht viel drin. Bisher hab ich mich so durch gekämpft. Nun fange ich mal von null nochmal an. Es kann also bis zur (hoffentlich ) Erfolgsmeldung etwas dauern.

Schönes Wochenende

Gruß Rainer

Hallo Frank,

ich habe soweit alles geschafft. Mit deiner Hilfe ging’s ganz gut. Nun muss ich mal sortieren wie wich das am Besten in einem Dashboard darstellen kann.

Eines noch: Der Eintrag “Verschiebung der Heizkurve” ist nur zum Darstellen des aktuellen Wertes, richtig? Den Wert verändern kann ich da von HA aus nicht? Das wäre je die Registernummer 30.

Auf jeden Fall macht das Spass:-)

Gruß Rainer

Hi Rainer,
prima, freut mich :slight_smile:

Verschieben der Heizkurve geht schon, ist aber nicht ganz trivial. Da muss ein numerischer Wert eingetragen werden, dazu muss man eine Liste bauen. Da ich das nicht nutze, hab ich das vergessen wie das ging.. muss ich mal wieder schauen, wie ich das gemacht hatte.

Melde mich, wenn ich Zeit gefunden habe…

Cu
Frank