Home Assistant & NIBE SMO S40 – Intelligente Automatisierung für Heizung und Warmwasser
Datum: 3. November 2025 | Autor: thom7e
Mit der Kombination aus Home Assistant und der NIBE SMO S40 lässt sich eine Wärmepumpe erstaunlich präzise steuern. Das Ziel: möglichst viel kostenlosen PV-Strom direkt für Heizung und Warmwasser zu nutzen – und das ohne Komfortverlust. In diesem Artikel zeige ich, wie ich meine Wärmepumpensteuerung komplett automatisiert habe – inklusive YAML-Code, Sensorlogik und Integration in meine eigene API.
1️⃣ Architektur & Grundidee
Die SMO S40 übernimmt weiterhin die Regelung – Home Assistant greift nur unterstützend ein. Ich habe die Kommunikation so aufgebaut, dass die Wärmepumpe über myUplink in HA eingebunden ist, während alle PV-Werte von meinem eigenen REST-API-Endpoint stammen.
- PV-Daten via
https://thinkkreativ.de/wechselrichter/api/current/ - SMO-Sensordaten über die
myUplink-Integration - Steuerung über HA-Automationen (z. B.
number.smo_s40_degree_minutes)
2️⃣ Sensor-Setup in configuration.yaml
Die Sensoren sind das Fundament jeder Automatisierung. Ich lese sowohl PV-Leistung als auch Verbrauchs- und Miningdaten aus meiner API. Daraus lassen sich später Vergleiche und prozentuale Deckungen berechnen.
sensor:
- platform: rest
name: Solarüberschuss
resource: https://thinkkreativ.de/wechselrichter/api/current/
value_template: "{{ (value_json.powerdc1_w - value_json.feedinpower_w) | round(0) }}"
unit_of_measurement: "W"
scan_interval: 30
Erklärung: Hier wird aus der API-Antwort der aktuelle PV-Überschuss berechnet – also die Differenz aus erzeugter DC-Leistung und eingespeister Leistung ins Netz.
template:
- sensor:
- name: "PV Deckung Wärmepumpe"
unit_of_measurement: "%"
state: >
{% set wp = states('sensor.wp_verbrauch_w') | float(0) %}
{% set pv = states('sensor.hausverbrauch') | float(0) %}
{% if wp == 0 %}
0
{% else %}
{{ (pv / wp * 100) | round(0) }}
{% endif %}
Erklärung: Dieser Template-Sensor berechnet, wie viel Prozent des Wärmepumpenverbrauchs aktuell durch PV-Strom gedeckt werden. Damit lässt sich später im Dashboard oder in Automationen dynamisch reagieren.
3️⃣ Warmwasser-Automationen
WW Tag (Sonne + PV-Überschuss)
- id: 'ww_tag_pv_ueberschuss'
alias: WW Tag (Sonne + PV-Überschuss)
trigger:
- platform: time_pattern
minutes: "/5"
condition:
- condition: state
entity_id: sun.sun
state: above_horizon
- condition: numeric_state
entity_id: sensor.solarüberschuss
above: 800
action:
- service: select.select_option
target:
entity_id: select.smo_s40_hot_water_demand
data:
option: Medium
mode: single
Was passiert hier? Alle 5 Minuten prüft Home Assistant: scheint die Sonne und ist der PV-Überschuss > 800 W, wird das Warmwasser auf „Medium“ gestellt. So nutzt die Wärmepumpe tagsüber Solarstrom für die Warmwasserbereitung.
WW Nacht-Check
- id: 'ww_nacht_check'
alias: WW Nacht-Check (Warm halten)
trigger:
- platform: time
at: "23:00:00"
- platform: time
at: "06:00:00"
condition:
- condition: numeric_state
entity_id: sensor.smo_s40_hot_water_top_bt7
below: 42
action:
- service: select.select_option
target:
entity_id: select.smo_s40_hot_water_demand
data:
option: Medium
- delay: "00:45:00"
- service: select.select_option
target:
entity_id: select.smo_s40_hot_water_demand
data:
option: Low
mode: single
Was passiert hier? Nachts (23 Uhr und 6 Uhr) prüft die Automation, ob das obere Warmwasser-Fühler-Thermometer unter 42 °C fällt. Falls ja, wird für 45 Minuten auf „Medium“ geheizt und danach wieder auf „Low“ geschaltet. Damit bleibt das Wasser morgens warm, ohne unnötig durchzulaufen.
4️⃣ Heizungs-Automationen mit PV-Boost
- id: 'heizung_pv_boost'
alias: Heizung PV-Boost
trigger:
- platform: time_pattern
minutes: "/5"
condition:
- condition: numeric_state
entity_id: sensor.solarüberschuss
above: 1500
action:
- service: number.set_value
target:
entity_id: number.smo_s40_degree_minutes
data:
value: -40
mode: single
Erklärung:
Wenn mehr als 1,5 kW PV-Überschuss vorhanden sind, wird der Reglerwert
degree_minutes auf –40 gesetzt.
Das bedeutet: die Wärmepumpe darf etwas stärker heizen – nutzt dabei aber ausschließlich Solarstrom.
- id: 'heizung_pv_boost_ende'
alias: Heizung PV-Boost Ende
trigger:
- platform: time_pattern
minutes: "/5"
condition:
- condition: numeric_state
entity_id: sensor.solarüberschuss
below: 1500
action:
- service: number.set_value
target:
entity_id: number.smo_s40_degree_minutes
data:
value: -60
mode: single
Erklärung: Wenn die Sonne verschwindet oder der Überschuss sinkt, geht die Regelung automatisch zurück in den Normalwert (–60 DM). Dadurch bleibt die Raumtemperatur stabil, ohne Energie zu verschwenden.
5️⃣ Nachtabsenkung über die NIBE SMO S40
Ursprünglich wollte ich die Nachtabsenkung über Home Assistant regeln, aber das führte zu falschen Vorlauftemperaturen. Die saubere Lösung: direkt in der SMO S40 einstellen.
Das funktioniert perfekt: Die Wärmepumpe kennt ihre Heizkurve und senkt nachts automatisch die Vorlauftemperatur – ohne dass Home Assistant in die Regelung eingreift.
6️⃣ Fazit: Effizienz & Komfort vereint
- PV-Strom wird gezielt für Warmwasser und Heizung genutzt
- Automatische Anpassung an Wetter und Tageszeit
- Heizstab-Einsätze lassen sich leicht überwachen
- Nachtabsenkung läuft direkt in der Wärmepumpe
Home Assistant übernimmt die Intelligenz, die NIBE S40 die Physik – eine perfekte Symbiose für effizientes, automatisiertes Heizen.