Ich habe mich in den letzten Wochen intensiver mit dem Thema PV-Erzeugung und Eigenverbrauch beschäftigt und dabei gemerkt, dass meine Erfassung des Wärmepumpen-Verbrauchs komplett falsch war. Über 50 kWh am Tag laut Home Assistant, obwohl mein Stromzähler an dem Tag kaum was gemessen hat. Das konnte so nicht stimmen. Der Grund war meine Modbus-Anbindung, die für die Energiewerte schlicht unbrauchbare Daten geliefert hat. Die Lösung war die myUplink-Integration, die seit HA 2024.2 direkt in Home Assistant Core steckt. Kein HACS, kein Register-Mapping, kein Suchen nach IP-Adressen.
Was myUplink eigentlich ist und wie es funktioniert
myUplink ist die offizielle Cloud von NIBE. Die Wärmepumpe meldet alle paar Minuten ihre aktuellen Werte dorthin, du siehst die gleichen Daten auch in der myUplink-App. Die Home Assistant Integration holt sich diese Daten dann über eine OAuth-Verbindung zurück in dein System.
Das klingt erst mal nach einem Umweg, ist aber tatsächlich wahnsinnig praktisch. Du bekommst alle Sensoren, die die Anlage hergibt, ohne eine einzige IP-Adresse anfassen zu müssen. Das Polling läuft alle 60 Sekunden, was für eine Heizungsanlage locker reicht. Echtzeit ist das nicht, aber das braucht man hier auch nicht wirklich.
Ein wichtiger Hinweis vorab: Die Integration funktioniert nicht nur mit NIBE. Alles, was an myUplink angebunden ist, also auch CTC, Jäspi oder ClimateMaster, lässt sich damit einbinden. Wenn deine Anlage in der myUplink-App erscheint, kannst du das hier direkt nachmachen.
Außerdem bekommst du Lese- und Schreibzugriff. Das bedeutet, du kannst nicht nur Werte auslesen, sondern auch Warmwasser-Boost aktivieren, Gradminuten setzen oder Smart Control schalten, direkt aus Home Assistant heraus.
App auf dev.myuplink.com registrieren
Bevor du die Integration in Home Assistant hinzufügen kannst, brauchst du eine eigene OAuth-App auf dev.myuplink.com. Kein extra Account nötig, du loggst dich einfach mit deinem normalen myUplink-Login ein.
Klick dort auf Applications und dann auf Create new application. Als Name trägst du einfach "Home Assistant" ein, die Beschreibung ist frei wählbar. Wichtig ist die Callback URL. Die trägst du exakt so ein:
https://my.home-assistant.io/redirect/oauthWenn du "My Home Assistant" nicht nutzt, lautet die URL stattdessen https://DEINE-HA-ADRESSE/auth/external/callback.
Nach dem Erstellen bekommst du eine Client ID und ein Client Secret angezeigt. Diese beiden Werte kopierst du dir raus, am besten direkt in einen Texteditor, damit du sie gleich parat hast. Achte darauf, keine Leerzeichen mitzukopieren. Das ist eine häufige Stolperfalle: der Login schlägt dann mit einer kryptischen Fehlermeldung fehl, obwohl die Zugangsdaten eigentlich stimmen.
Die Client ID und das Secret geben vollen Zugriff auf deine myUplink-Daten. Treat them like a password.
Integration in Home Assistant hinzufügen
Jetzt geht es in Home Assistant zu Einstellungen → Geräte & Dienste → Integration hinzufügen. Dort suchst du nach "myUplink". Das kleine Internet-Symbol verrät dir, dass die Daten über die Cloud laufen.
Du trägst Client ID und Client Secret ein, wirst zu myUplink weitergeleitet, loggst dich ein und klickst auf Authorize. Nach ein, zwei Minuten erscheint deine Anlage als Gerät mit allen verfügbaren Entities. Bei mir sind das 44 Stück. Je nach Modell kann es mehr oder weniger sein.
Falls Home Assistant dich nicht automatisch nach den Credentials fragt: Einstellungen → Geräte & Dienste → drei Punkte oben rechts → Anwendungs-Anmeldedaten → Anmeldedaten hinzufügen. Auth Domain ist "myUplink".
Noch ein Hinweis für den Fall, dass die Integration deine Anlage nicht findet: Manche Anlagen sind nur im Heizungsbauer-Account hinterlegt, nicht im eigenen. Die App zeigt dann nichts, und die Integration findet auch nichts. In dem Fall die Anlage einmal dem eigenen Account zuweisen lassen.
Die Sensoren im Überblick
myUplink legt nicht zwei, drei Sensoren an, sondern wirklich alles, was die Anlage hergibt. Die Namen sind dabei relativ kryptisch, weil es die internen NIBE-Bezeichnungen sind. BT1 ist der Außentemperaturfühler, BT7 ist Warmwasser oben, BT6 der Warmwasser-Ladefühler, BT71 der Rücklauf. Ein bisschen Einarbeitung braucht das schon.
Für ein einfaches Dashboard reichen meistens Außentemperatur, Warmwassertemperatur und Vorlauf. Für die Auswertung braucht man vor allem zwei Energie-Sensoren: sensor.DEINE_ANLAGE_tot_consumption für den Stromverbrauch und sensor.DEINE_ANLAGE_tot_production für die erzeugte Wärme. Beide sind Lebensdauer-Zähler mit total_increasing.
Dazu kommen Betriebsstunden für Verdichter und Heizstab, Status-Sensoren für Alarm und Konnektivität und die schreibbaren Steuer-Entities. Den genauen Prefix für deine Anlage findest du unter Entwicklerwerkzeuge → Zustände, einfach nach myuplink filtern.
Den echten COP berechnen
Der COP, also der Coefficient of Performance, gibt an, wie effizient die Wärmepumpe arbeitet. Bei mir macht die Anlage aktuell aus einer Kilowattstunde Strom rund 2,38 kWh Wärme, was einen Lebensdauer-COP von 2,38 ergibt. Das klingt nicht spektakulär, ist aber solide für eine Anlage, die auch viel Warmwasser zieht.
Den COP kannst du als Template-Sensor berechnen. Den folgenden Block trägst du in deine configuration.yaml ein, oder in eine eigene Paketdatei:
1template:
2 - sensor:
3 - name: "Wärmepumpe COP"
4 unique_id: wp_cop_lifetime
5 unit_of_measurement: "COP"
6 state_class: measurement
7 state: >
8 {% set inp = states('sensor.DEINE_ANLAGE_tot_consumption') | float(0) %}
9 {% set out = states('sensor.DEINE_ANLAGE_tot_production') | float(0) %}
10 {{ (out / inp) | round(2) if inp > 0 else 'unavailable' }}DEINE_ANLAGE ersetzt du mit dem Slug deiner Wärmepumpe aus den Entwicklerwerkzeugen. Der if inp > 0-Guard verhindert eine Division durch Null, solange noch keine Werte ankommen. Nach dem Einfügen Entwicklerwerkzeuge → YAML → Konfiguration prüfen → Neu starten, danach unter Zustände nach wp_cop suchen.
Verbrauch für Tag, Monat und Jahr erfassen
Die Tageszähler in der myUplink-App glitchen gelegentlich. Verlässlich ist der Lebensdauer-Zähler tot_consumption. Daraus leitet ein utility_meter saubere Perioden ab:
1utility_meter:
2 wp_strom_taeglich:
3 source: sensor.DEINE_ANLAGE_tot_consumption
4 cycle: daily
5 wp_strom_monatlich:
6 source: sensor.DEINE_ANLAGE_tot_consumption
7 cycle: monthly
8 wp_strom_jaehrlich:
9 source: sensor.DEINE_ANLAGE_tot_consumption
10 cycle: yearlyAlternativ kannst du den Utility Meter auch über die UI anlegen: Einstellungen → Geräte & Dienste → Helfer → Helfer erstellen → Verbrauchszähler.
Fürs Energie-Dashboard trägst du sensor.DEINE_ANLAGE_tot_consumption direkt als "Individuelles Gerät" ein unter Einstellungen → Energie. Nach dem Neustart tauchen die neuen Sensoren unter Entwicklerwerkzeuge → Zustände auf. Wenn du den Recorder im Include-Modus betreibst, musst du die neuen Sensoren dort noch ergänzen, sonst gibt es keine History.
Warmwasser-Boost bei PV-Überschuss
Das ist eigentlich der Grund, warum ich den Schreibzugriff so praktisch finde. Wenn die PV gerade mehr liefert als verbraucht wird und der Akku schon voll ist, kann die Wärmepumpe diesen Strom nehmen und damit Warmwasser vorheizen. So landet der Überschuss nicht im Netz, sondern im Speicher.
Die folgende Automation macht genau das. Die Schwellwerte für PV-Leistung und Batterieladung musst du an deine eigene Anlage anpassen:
1alias: "WP: Warmwasser-Boost bei PV-Überschuss"
2id: wp_ww_boost_pv
3trigger:
4 - trigger: numeric_state
5 entity_id: sensor.DEINE_PV_LEISTUNG
6 above: 4000
7 for: "00:10:00"
8condition:
9 - condition: numeric_state
10 entity_id: sensor.DEINE_BATTERIE_SOC
11 above: 90
12action:
13 - action: select.select_option
14 target:
15 entity_id: select.DEINE_ANLAGE_more_hot_water
16 data:
17 option: "3 hours"
18mode: singleDie möglichen Optionen für more_hot_water sind: Off, 3 hours, 6 hours, 12 hours, 24 hours und 48 hours. Nach dem Einfügen reicht Entwicklerwerkzeuge → YAML → Automationen neu laden, kein voller Neustart nötig.
myUplink vs. Modbus: wann macht was Sinn
Ich nutze mittlerweile beides parallel, aber für die meisten Anwendungsfälle reicht myUplink vollständig.
Der größte Vorteil der Cloud-Variante sind die Energiedaten. Über Modbus bekomme ich da bei meiner Anlage Werte, die überhaupt keinen Sinn ergeben. Über myUplink sind die Zahlen verlässlich und stimmen mit dem überein, was der Stromzähler zeigt.
Der größte Nachteil ist das Internet. Wenn Home Assistant offline ist, kommen keine Daten. Wer schon myUplink nutzt, hat seine Daten sowieso in der NIBE-Cloud, dann ist das kein großes Argument dagegen. Wer komplette lokale Kontrolle will und bereit ist, sich in das Register-Mapping einzuarbeiten, ist mit Modbus besser aufgehoben. Die Aktualisierung läuft dort quasi in Echtzeit, was für bestimmte Steuerungsszenarien relevant sein kann.
Meine Empfehlung: Starte mit myUplink. Die Einrichtung dauert wirklich keine 10 Minuten, du bekommst sofort alle Sensoren und kannst direkt loslegen. Falls du irgendwann merkst, dass 60 Sekunden Polling nicht reichen, kannst du Modbus immer noch dazupacken. Eine Anleitung dazu findest du in meinem Artikel zur NIBE Modbus Integration.
Nutzt du myUplink schon oder hast du deine Wärmepumpe per Modbus eingebunden? Schreib es gerne in die Kommentare, mich würde interessieren, wie das bei anderen so läuft.
