Gerätezustände über Stromverbrauch erkennen – am Beispiel der Sauna
Manche Geräte in Home Assistant zu überwachen ist einfach, weil sie eine eigene API oder einen eigenen Temperatursensor mitbringen. Andere Geräte sind einfach „dumm“ – sie bekommen Strom oder nicht, und mehr Information geben sie von sich aus nicht preis. Meine Sauna gehört in diese zweite Kategorie. Trotzdem wollte ich den Gerätezustand über Stromverbrauch zuverlässig erkennen, um mitzubekommen, wann die Zieltemperatur erreicht ist, und dann eine Push-Benachrichtigung aufs Handy zu bekommen. Die Lösung: Stromverbrauch statt Temperatur.
In diesem Artikel gehe ich deutlich tiefer als üblich, weil das Prinzip so vielseitig einsetzbar ist: Ich zeige nicht nur die fertige Automation, sondern auch den kompletten Weg dorthin – inklusive der Sackgassen, der Messreihen, mit denen ich den richtigen Schwellenwert gefunden habe, und der typischen Stolperfallen, die einem beim Nachbauen begegnen.
Ausgangslage: eine Sauna ohne jede Rückmeldung
Meine Innensauna hat einen 9-kW-Ofen mit einem rein mechanischen Thermostat. Es gibt keinen WLAN-Chip, keine App, keine Möglichkeit, den Ofen direkt abzufragen. Aus Sicht von Home Assistant ist das Gerät ein reiner Verbraucher: Strom fließt, oder er fließt nicht. Alles, was ich über den inneren Zustand des Ofens wissen will – „heizt gerade auf“, „hat die Zieltemperatur erreicht“, „hält nur noch“ –, muss ich mir aus diesem einen Signal ableiten.
Das Ziel war konkret: Sobald die Sauna ihre eingestellte Zieltemperatur von 90 °C erreicht, soll mein iPhone eine Push-Benachrichtigung bekommen, damit ich nicht ständig selbst nachsehen oder raten muss, wann es losgehen kann.
Der erste Versuch: ein Temperatursensor
Naheliegend war zunächst ein klassischer Temperatursensor (DS18B20) direkt am Saunaofen bzw. im Innenraum. Das funktioniert grundsätzlich, hat aber einen entscheidenden Nachteil: Temperatursensoren reagieren träge. Bis die tatsächliche Lufttemperatur im Saunaraum den gemessenen Wert wirklich widerspiegelt, vergeht Zeit – gerade bei einem 9-kW-Ofen, der die Temperatur sehr schnell hochtreibt. Die Benachrichtigung „Zieltemperatur erreicht“ kam dadurch entweder zu spät oder schwankte durch Messungenauigkeiten unzuverlässig um den Schwellenwert.
Konkret zeigten sich bei mir drei wiederkehrende Probleme:
- Trägheit der Luftmasse: Der Sensor hing zwangsläufig nicht exakt an der Stelle, an der auch das mechanische Thermostat im Ofen misst. Je nach Platzierung ergaben sich Abweichungen von mehreren Grad und mehreren Minuten.
- Verkabelungs- und Platzierungsprobleme: Ein Kabel im Saunainnenraum ist wegen der Hitze und Feuchtigkeit kein Dauerzustand, den man sich wünscht – Anschlüsse altern hier deutlich schneller als anderswo im Haus.
- Schwellenwert-Zittern (Flackern): Lag die gemessene Temperatur nahe am Schwellenwert, sprang der Sensorstatus in kurzen Abständen zwischen „unter“ und „über“ Zielwert hin und her, was ohne zusätzliche Hysterese zu mehrfachen Benachrichtigungen geführt hätte.
Nach einigen eigenen Messreihen habe ich mich entschieden, den Temperatursensor komplett wegzulassen und stattdessen auf ein Signal zu setzen, das viel direkter und unmittelbarer ist: den Leistungsverlauf des Ofens selbst.
Diesen Ansatz, den Gerätezustand über Stromverbrauch statt über einen zusätzlichen Sensor zu erkennen, habe ich übrigens bereits in meinem Pillar-Artikel zum PV-Lastmanagement gestreift – dort ging es um die Steuerung von Verbrauchern anhand von PV-Überschuss, hier geht es nun um die Erkennung ihres Betriebszustands.
Die Idee: Leistungsverlauf statt Temperatur
Ein Saunaofen mit Thermostat verhält sich elektrisch sehr charakteristisch:
- Aufheizphase: Der Ofen zieht durchgehend nahezu seine volle Nennleistung (bei mir also nahe 9 kW), weil das Thermostat noch nicht abregelt.
- Zieltemperatur erreicht: Sobald die eingestellte Temperatur (bei mir 90 °C) erreicht ist, beginnt das interne Thermostat zu takten – die Leistung fällt deutlich ab bzw. schwankt zwischen niedriger Last und kurzen Nachheiz-Impulsen.
Dieser Leistungsabfall ist ein viel schärferes, schnelleres Signal als jede Temperaturmessung – er tritt praktisch verzögerungsfrei ein, sobald der Ofen selbst erkennt, dass er am Ziel ist. Das mechanische Thermostat im Ofen ist im Grunde ein deutlich besserer und näher am Heizelement sitzender Temperaturfühler, als ich ihn selbst je nachbauen könnte – ich muss sein Verhalten nur „von außen“ über den Stromfluss ablesen.
Warum der Leistungsverlauf so ein sauberes Signal ist
Anders als bei der Lufttemperatur gibt es beim Leistungsverlauf keine thermische Trägheit zu kompensieren. Der Ofen schaltet elektrisch – entweder das Heizelement liegt an Spannung an, oder nicht. Der Übergang von „volle Last“ zu „getaktet“ ist dadurch binär und tritt exakt in dem Moment ein, in dem das mechanische Thermostat auslöst. Die einzige „Trägheit“, die bleibt, ist die Reaktionszeit des eigenen Messsystems – bei mir also die Aktualisierungsrate des Tibber Pulse.
Die Umsetzung in Home Assistant
Da die Sauna direkt über den Hausanschluss läuft, lese ich die Leistung nicht über einen separaten Zwischenstecker aus, sondern über meinen Tibber Pulse am Hauptzähler (sensor.tibber_pulse_xxx_leistung). Das hat einen praktischen Vorteil: Ich brauche keine zusätzliche Hardware direkt am Ofen, die der Hitze und Feuchtigkeit im Saunavorraum ausgesetzt wäre. Der Nachteil ist, dass der Tibber Pulse die gesamte Hausleistung misst – ich sehe also nicht nur die Sauna, sondern auch alles andere, was gerade im Haus läuft.
Wer keinen Tibber Pulse besitzt, kann je nach Stromzähler alternativ auch einen passenden IR-Lesekopf verwenden und dessen Messwerte in Home Assistant einbinden. Für die Automation ist am Ende nur entscheidend, dass ein ausreichend häufig aktualisierter Leistungswert zur Verfügung steht.
Alternative für kompatible Stromzähler: IR-Lesekopf bei Amazon ansehen*
Deshalb beziehe ich zusätzlich die Akkuleistung (sensor.goodwe_battery_power) mit ein, damit ein zeitgleicher Akku-Lade- oder Entladevorgang die Auswertung nicht verfälscht. Ohne diese Korrektur könnte zum Beispiel ein gerade ladender Hausakku den Gesamtverbrauch am Zähler so weit nach oben verschieben, dass die Automation den Leistungsabfall des Saunaofens fälschlich gar nicht erst erkennt, obwohl er längst getaktet hat.
Zwei Automationen statt einer
Damit die Erkennung robust läuft, arbeite ich bewusst mit zwei getrennten Automationen statt einer einzigen komplexen Regel:
- Eine Start-Erkennung, die feststellt, wenn die Sauna überhaupt eingeschaltet wurde (Leistung springt über einen Schwellenwert) und dafür den Helfer
input_boolean.sauna_aufheizphase_aktivsetzt. - Die eigentliche Ziel-Erkennung, die nur dann aktiv ist, wenn dieser Helfer „an“ ist, und die auf den charakteristischen Leistungsabfall wartet.
Dieses zweistufige Vorgehen verhindert zwei typische Fehlerquellen: Erstens feuert die Ziel-Erkennung nicht versehentlich, wenn die Sauna ohnehin gerade aus ist (dann liegt die Leistung ja auch „unter“ dem Schwellenwert, nur eben aus dem falschen Grund). Zweitens lässt sich der Zustand „Aufheizphase aktiv“ auch für andere Zwecke wiederverwenden, etwa für ein Dashboard-Badge oder eine Status-Ansage.
Automation 1: Start der Aufheizphase erkennen
# Automation "Sauna Aufheizphase gestartet"
alias: Sauna Aufheizphase gestartet
trigger:
- platform: numeric_state
entity_id: sensor.tibber_pulse_xxx_leistung
above: 7000 # deutlich über normalem Haushaltsverbrauch
for: "00:00:30" # kurze Entprellung gegen Einschaltspitzen
condition:
- condition: state
entity_id: input_boolean.sauna_aufheizphase_aktiv
state: "off"
action:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.sauna_aufheizphase_aktiv
mode: singleCode-Sprache: CSS (css)
Automation 2: Zieltemperatur über Leistungsabfall erkennen
# Automation "Sauna Zieltemperatur erreicht"
alias: Sauna Zieltemperatur erreicht
trigger:
- platform: numeric_state
entity_id: sensor.tibber_pulse_xxx_leistung
below: 2000 # deutlicher Abfall gegenüber ca. 9000 W Aufheizleistung
for: "00:02:00" # Puffer gegen kurze Lastspitzen anderer Verbraucher
condition:
- condition: state
entity_id: input_boolean.sauna_aufheizphase_aktiv
state: "on"
# Akku-Ladevorgänge nicht mit dem Saunasignal verwechseln
- condition: template
value_template: >
{{ states('sensor.goodwe_battery_power') | float(0) < 1500 }}
action:
- service: notify.mobile_app_iphone_von_XXX
data:
message: "Sauna hat die Zieltemperatur erreicht."
- service: input_boolean.turn_off
target:
entity_id: input_boolean.sauna_aufheizphase_aktiv
mode: singleCode-Sprache: PHP (php)
Technisch beruhen beide Automationen auf demselben Home-Assistant-Baustein: dem Numeric-State-Trigger, der genau für solche Schwellenwert-Erkennungen gedacht ist.
Der Helper input_boolean.sauna_aufheizphase_aktiv sorgt hier gleich für zwei Dinge: Er verhindert, dass die Benachrichtigung mehrfach ausgelöst wird, sobald der Ofen im Haltebetrieb weiter kurz taktet, und er stellt sicher, dass die Automation nicht schon bei ganz normalen, kurzen Leistungsschwankungen während des ausgeschalteten Zustands anspringt.
Home Assistant selbst läuft bei mir auf einem Raspberry Pi 4. Darüber laufen neben dieser Sauna-Erkennung inzwischen auch meine PV-, Wärmepumpen- und weiteren Smart-Home-Automationen.
Meine Home-Assistant-Basis: Raspberry Pi 4 bei Amazon ansehen*
Wie ich die Schwellenwerte gefunden habe
Die konkreten Zahlen – 7000 W als Startschwelle, 2000 W als Abfallschwelle, zwei Minuten Haltezeit – sind kein Bauchgefühl, sondern das Ergebnis mehrerer beobachteter Aufheizzyklen. Mein Vorgehen dafür:
- Rohdaten sammeln: Ich habe den Sensor
sensor.tibber_pulse_xxx_leistungüber mehrere komplette Saunagänge im Verlauf (Home Assistant Historie bzw. Logbuch) beobachtet, ohne bereits eine Automation aktiv zu haben. - Charakteristische Plateaus identifizieren: In den Verläufen zeigte sich sehr deutlich ein langes, fast konstantes Plateau nahe der Nennleistung während der Aufheizphase, gefolgt von einem scharfen Abfall und anschließendem getaktetem „Sägezahn“-Muster im Haltebetrieb.
- Sicherheitsabstand einplanen: Der gewählte Schwellenwert von 2000 W liegt deutlich unter dem beobachteten Aufheiz-Plateau (rund 9000 W), aber auch deutlich über dem normalen Grundverbrauch des restlichen Haushalts, damit ganz normale Haushaltsgeräte (Kühlschrank, Standby-Verbraucher) das Signal nicht versehentlich auslösen.
- Haltezeit gegen Ausreißer: Die zwei Minuten
for-Bedingung filtern kurze, einmalige Einbrüche heraus, wie sie etwa durch kurzzeitiges Takten am Rand des Plateaus entstehen können.
Diese Vorgehensweise – erst beobachten, dann Schwellenwerte ableiten, statt sie zu raten – lässt sich eins zu eins auf jedes andere Gerät übertragen, das nach demselben Prinzip überwacht werden soll.
Warum Leistungsabfall und nicht ein fester Timer?
Ein einfacher Timer („nach 45 Minuten ist die Sauna warm“) wäre die naheliegendste Alternative gewesen – und deutlich simpler umzusetzen. Das Problem: Die tatsächliche Aufheizzeit hängt von zu vielen Faktoren ab, etwa der Außentemperatur, wie oft die Tür zwischendurch geöffnet wird oder wie kalt der Raum zu Beginn war. Ein Timer müsste also entweder großzügig bemessen sein (und würde die Meldung oft zu spät schicken) oder knapp bemessen sein (und würde manchmal zu früh melden, wenn der Ofen noch nicht fertig ist). Der Leistungsabfall dagegen misst das tatsächliche Verhalten des Ofens – unabhängig davon, wie lange das im Einzelfall gedauert hat.
In der Praxis habe ich bei mir Schwankungen von über 15 Minuten zwischen einzelnen Aufheizzyklen beobachtet – je nachdem, ob die Sauna zuvor schon einmal beheizt war (Restwärme in Holz und Steinen) oder komplett kalt gestartet ist. Ein fester Timer hätte in beiden Fällen entweder zu früh oder zu spät gemeldet.
Stolperfallen beim Nachbauen
Ein paar Punkte, die mir beim Feintuning Kopfzerbrechen bereitet haben und die man sich sparen kann:
- Zu kurze Haltezeit (
for): Ohne ausreichende Verzögerung löst die Automation schon bei kurzen Taktpausen während der eigentlichen Aufheizphase aus – lange bevor die Zieltemperatur wirklich erreicht ist. - Fehlende Rücksetzlogik: Wird der Helfer
input_boolean.sauna_aufheizphase_aktivnicht zuverlässig zurückgesetzt, etwa weil die Sauna manuell und nicht über die erkannte Leistungsschwelle beendet wurde, bleibt er unter Umständen dauerhaft „an“ hängen und blockiert die nächste Erkennung. Ein zusätzlicher Zeit-basierter Reset (z. B. automatisches Zurücksetzen nach vier Stunden) schafft hier Sicherheit. - Verwechslung mit anderen Großverbrauchern: Läuft parallel etwa die Wärmepumpe oder lädt das E-Auto, kann das Gesamtsignal am Hauptzähler verfälscht werden. Wer mehrere große Verbraucher im Haus hat, sollte prüfen, ob sich die Leistungsaufnahme dieser Geräte im relevanten Zeitraum überschneiden kann, und gegebenenfalls weitere Korrekturbedingungen ergänzen – so wie ich es mit der Akkuleistung gemacht habe.
- Sensor-Updateintervall: Der Tibber Pulse liefert zwar sehr häufige Updates, aber jedes Messsystem hat eine gewisse Latenz. Bei Geräten mit sehr kurzen Lastwechseln kann es sinnvoll sein, die Haltezeiten etwas großzügiger zu wählen, um Fehlauslösungen durch einzelne verzögerte Messwerte zu vermeiden.
Übertragbar auf andere „dumme“ Geräte
Das Prinzip ist nicht auf Saunaöfen beschränkt. Überall dort, wo ein Gerät keinen eigenen Statusausgang hat, sich sein Betriebszustand aber im Stromverbrauch klar abzeichnet, lässt sich dasselbe Muster anwenden:
- Waschmaschine/Trockner: deutlicher Leistungsabfall am Programmende statt fester Laufzeit-Annahme.
- Spülmaschine: ähnlich, Programmende über Leistungseinbruch nach der Trocknungsphase.
- Ladegeräte/Akkus: Leistungsabfall auf einen niedrigen Erhaltungsladungswert als Signal für „Ladevorgang abgeschlossen“.
Bei mir laufen Fernseher, Spülmaschine, Backofen, Kühlschrank und Kaffeemaschine in der Küche ohnehin schon über SwitchBot Plug Mini Steckdosen, die ich mittlerweile lokal per Bluetooth statt über die Cloud anbinde. Diese Steckdosen liefern ebenfalls eine Leistungsmessung pro Gerät – dort ist die Auswertung sogar noch einfacher als bei der Sauna, weil ich hier nicht erst den Rest des Hausverbrauchs herausrechnen muss, sondern direkt das Signal eines einzelnen Geräts vorliegen habe.
Von mir verwendet: SwitchBot Plug Mini mit Leistungsmessung bei Amazon ansehen*
Als Faustregel für die Übertragung auf ein neues Gerät hat sich bei mir dieses Vorgehen bewährt:
- Leistungsverlauf des Geräts über mehrere vollständige Zyklen beobachten und in der Home-Assistant-Historie ansehen.
- Charakteristische Phasen identifizieren: Einschaltspitze, stabiler Betrieb, Übergang, Ende/Standby.
- Schwellenwerte mit ausreichend Sicherheitsabstand zu den beobachteten Plateaus wählen – nicht am absoluten Minimum oder Maximum ansetzen.
- Eine kurze Haltezeit (
for) ergänzen, um kurzfristige Lastspitzen oder -einbrüche herauszufiltern. - Bei Geräten am Hauptzähler (statt an einer eigenen Steckdose) zusätzlich alle parallel laufenden Großverbraucher berücksichtigen, die das Signal verfälschen könnten.
Fazit
Nicht jedes Gerät muss einen eigenen Sensor bekommen, um seinen Zustand in Home Assistant sichtbar zu machen. Wenn ein Gerät direkt oder indirekt über einen Energiezähler erfasst wird, steckt in seinem Leistungsverlauf oft schon alle Information, die man braucht – schneller und zuverlässiger, als es ein zusätzlicher Temperatursensor je könnte. Den Gerätezustand über Stromverbrauch statt über einen zusätzlichen Sensor zu erkennen, hat bei meiner Sauna den ursprünglich verbauten Temperatursensor komplett überflüssig gemacht, und das zweistufige Automations-Setup mit Start- und Ziel-Erkennung sorgt dafür, dass ich genau eine zuverlässige Benachrichtigung pro Saunagang bekomme – nicht mehr und nicht weniger.
* Mit * gekennzeichnete Links sind Affiliate-Links. Wenn du darüber etwas kaufst, erhalte ich möglicherweise eine Provision. Für dich entstehen dadurch keine zusätzlichen Kosten. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.