Teil 1: Meine Wärmepumpe (NIBE SMO S40): Von MyUplink zu lokalen Modbus-Livedaten

Teil 1: Meine Wärmepumpe (NIBE SMO S40): Von MyUplink zu lokalen Modbus-Livedaten – thinkkreativ Blogartikel

 

Blogserie: Mein Smart Home mit Home Assistant – Teil 1

Einleitung: Warum ich meine Wärmepumpe zweigleisig erfasse

In meinem Smart Home ist die Wärmepumpe Wärmepumpe (NIBE SMO S40) der wichtigste Verbraucher – und gleichzeitig der größte Hebel für Effizienz. Wenn ich verstehen will, wie gut mein Haus wirklich arbeitet, brauche ich vollständige Transparenz über:

  • den Stromverbrauch der WP,
  • die erzeugte Wärmemenge,
  • und das Verhalten über den Tag, Woche und Monat.

Deshalb nutze ich zwei Datenquellen parallel:

  1. Home Assistant – MyUplink Integration für Energiezähler (kWh)
  2. Modbus/TCP (Wikipedia: Modbus) für Livedaten (kW/W, Temperaturen, DM-Werte)

Erst die Kombination aus beiden Datentöpfen ergibt ein vollständiges Bild – und ermöglicht echte Optimierung.


1. MyUplink – mein Fundament für Energiezähler (Tot.Cons & Tot.Prod)

MyUplink ist die Cloud-Schnittstelle von NIBE: NIBE Europäische Website – und auch wenn sie in Echtzeit limitiert ist, liefert sie zwei extrem wertvolle Messwerte:

  • Tot.Cons – der gesamte elektrische Verbrauch der Wärmepumpe (kWh)
  • Tot.Prod – die insgesamt erzeugte Wärmemenge (kWh)

Da sich diese Werte kontinuierlich erhöhen, eignen sie sich hervorragend für Utility Meter in Home Assistant:

Mehr zur Funktion „Utility Meter“: Home Assistant Dokumentation – Utility Meter

1.1 Utility Meter für Tages-, Wochen-, Monats- und Jahreswerte

utility_meter:
  wp_energy_day:
    source: sensor.nibe_total_consumption
    cycle: daily

  wp_energy_week:
    source: sensor.nibe_total_consumption
    cycle: weekly

  wp_energy_month:
    source: sensor.nibe_total_consumption
    cycle: monthly

  wp_energy_year:
    source: sensor.nibe_total_consumption
    cycle: yearly

  wp_heat_day:
    source: sensor.nibe_total_heat
    cycle: daily

Damit weiß ich z. B.:

  • wie viel Strom die WP heute verbraucht,
  • wie viel Wärme sie heute erzeugt,
  • wie groß der Verbrauch im Monat ist,
  • und vieles mehr.

2. COP – wie effizient die Wärmepumpe wirklich arbeitet

Der COP (Coefficient of Performance) ist die wichtigste Kennzahl einer Wärmepumpe. Er beschreibt, wie viel Wärme ich aus 1 kWh Strom erhalte:

COP = Tot.Prod / Tot.Cons

Da ich Tageszähler nutze, kann ich den COP für verschiedene Zeitintervalle sehr sauber berechnen.

2.1 COP heute / COP Monat

sensor:
  - platform: template
    sensors:
      wp_cop_today:
        friendly_name: "COP heute"
        value_template: >
          {% set prod = states('sensor.wp_heat_day') | float %}
          {% set cons = states('sensor.wp_energy_day') | float %}
          {% if cons > 0 %}
            {{ (prod / cons) | round(2) }}
          {% else %}
            0
          {% endif %}

So sehe ich täglich, wie effizient meine Wärmepumpe wirklich arbeitet.


3. Modbus – meine zweite Datenquelle für Livedaten

Die NIBE SMO S40 bietet über das NIBE-Sortiment eine vollständige Modbus/TCP-Schnittstelle. Damit lassen sich nahezu alle relevanten Betriebswerte in Echtzeit auslesen.

Dazu gehören:

  • Leistung (kW)
  • Vorlauf- und Rücklauftemperaturen
  • Warmwasser oben/unten
  • Degree Minutes (DM – Erklärung)
  • Abtauzyklen
  • Betriebsart (Heizen / Warmwasser / Standby)

3.1 Umrechnung der Modbus-Leistung in Watt

sensor:
  - platform: template
    sensors:
      wp_power_w:
        friendly_name: "WP Leistung"
        unit_of_measurement: "W"
        value_template: >
          {{ (states('sensor.modbus_wp_power_kw') | float * 1000) | round(0) }}

So erkenne ich auf die Sekunde genau:

  • wann die WP startet,
  • wann sie Warmwasser lädt,
  • wann sie nur „hält“,
  • wie viel Energie Abtauvorgänge verbrauchen.

3.2 Weitere Modbus-basierte Livedaten

sensor:
  - platform: template
    sensors:
      wp_vorlauf:
        friendly_name: "WP Vorlauf"
        unit_of_measurement: "°C"
        value_template: "{{ states('sensor.modbus_vorlauf') | float }}"

      wp_ruecklauf:
        friendly_name: "WP Rücklauf"
        unit_of_measurement: "°C"
        value_template: "{{ states('sensor.modbus_ruecklauf') | float }}"

      wp_delta_t:
        friendly_name: "ΔT Heizkreis"
        unit_of_measurement: "K"
        value_template: >
          {{ (states('sensor.wp_vorlauf') | float) - (states('sensor.wp_ruecklauf') | float) }}

      wp_ww_oben:
        friendly_name: "Warmwasser oben"
        unit_of_measurement: "°C"
        value_template: "{{ states('sensor.modbus_ww_oben') | float }}"

      wp_ww_unten:
        friendly_name: "Warmwasser unten"
        unit_of_measurement: "°C"
        value_template: "{{ states('sensor.modbus_ww_unten') | float }}"

4. Warum ich MyUplink und Modbus kombiniere

Wert Quelle Anwendung
Tot.Cons / Tot.Prod MyUplink kWh-Zähler, COP, Monatswerte
WP-Leistung (W) Modbus Echtzeit-Stromverbrauch
Warmwasser oben/unten Modbus Warmwasserkennung
Degree Minutes Modbus Heizbedarf / Startalgorithmen

MyUplink liefert die Energiemengen.
Modbus liefert die Leistungskurven.
Beides zusammen ergibt ein vollständiges Bild.


5. Warmwasser – mein größtes Optimierungspotenzial

Warmwasser ist bei vielen Luft/Wasser-Wärmepumpen der teuerste Teil des Betriebs. Mit Livedaten aus Modbus kann ich sehr genau erkennen:

  • wie voll der Speicher ist,
  • wann Warmwasser erzeugt wird,
  • wann PV ideal passt,
  • und wann es sinnvoll ist, die Komfortstufe zu erhöhen.

5.1 Warmwasser-Status aus Modbus ableiten

sensor:
  - platform: template
    sensors:
      wp_ww_status:
        friendly_name: "WW-Status"
        value_template: >
          {% set unten = states('sensor.wp_ww_unten') | float %}
          {% if unten < 40 %}
            leer
          {% elif unten < 45 %}
            mittel
          {% else %}
            voll
          {% endif %}

5.2 Warmwasser mit PV laden – PV-Boost

alias: "WW PV-Boost"
trigger:
  - platform: numeric_state
    entity_id: sensor.pv_power_w
    above: 1500
condition:
  - condition: state
    entity_id: sensor.wp_ww_status
    state: "mittel"
action:
  - service: select.select_option
    data:
      entity_id: select.nibe_hot_water_comfort_mode
      option: "Medium"

5.3 Rückschaltung bei wenig PV

alias: "WW PV-Boost Ende"
trigger:
  - platform: numeric_state
    entity_id: sensor.pv_power_w
    below: 300
    for:
      minutes: 10
action:
  - service: select.select_option
    data:
      entity_id: select.nibe_hot_water_comfort_mode
      option: "Small"

5.4 Komfortmodus bei Ankunft

alias: "WW Komfort bei Ankunft"
trigger:
  - platform: state
    entity_id: person.kathi
    to: "home"
condition:
  - condition: numeric_state
    entity_id: sensor.wp_ww_unten
    below: 40
  - condition: time
    after: "16:00:00"
    before: "21:30:00"
action:
  - service: select.select_option
    data:
      entity_id: select.nibe_hot_water_comfort_mode
      option: "Medium"

Fazit

Mit der Kombination aus MyUplink und Modbus habe ich endlich volle Transparenz über die Wärmepumpe:

  • Ich sehe, wie effizient sie wirklich ist (COP).
  • Ich habe exakte Energiezähler für Tag/Woche/Monat/Jahr.
  • Ich habe Livedaten für realistische Diagramme und Automationen.
  • Ich steuere Warmwasser intelligent über PV und Komfortverhalten.

Im nächsten Teil geht es darum, wie ich meine PV-Anlage und den Wechselrichter lokal angebunden habe – inklusive der Speicherung in meiner ThinkKreativ-Datenbank und der Berechnung des echten Hausstromverbrauchs.