Home Assistant LED-Statusanzeige selber bauen: ESP32 mit ESPHome steuern
Manchmal wäre es praktisch, wenn das Smart Home einfach mit einer kleinen Leuchte auf sich aufmerksam machen könnte. Die Waschmaschine ist fertig, ein Fenster steht noch offen oder die Luftfeuchtigkeit im Badezimmer ist zu hoch. Natürlich lassen sich solche Informationen auf einem Home-Assistant-Dashboard anzeigen. Aber wer schaut schon ständig auf sein Smartphone?
Genau hier kommt unsere selbst gebaute LED-Statusanzeige ins Spiel. Mit einem ESP32, einem kleinen WS2812B-LED-Streifen und ESPHome bauen wir eine schmale RGB-Leuchte, die verschiedene Zustände aus Home Assistant farbig anzeigt.
Das Projekt eignet sich auch für Einsteiger, die bereits erste Erfahrungen mit ESPHome gesammelt haben. Die Elektronik ist überschaubar und lässt sich später um weitere Funktionen erweitern.
Was kann die LED-Statusanzeige anzeigen?
Für den ersten Aufbau verwenden wir vier Farben. Jede Farbe hat eine feste Bedeutung. Dadurch genügt ein kurzer Blick auf die LED-Leiste, um den aktuellen Zustand zu erkennen.
| LED-Farbe | Bedeutung |
|---|---|
| Grün | Alle überwachten Zustände sind normal |
| Rot | Eine überwachte Tür oder ein Fenster ist offen |
| Blau | Die Waschmaschine läuft |
| Gelb | Die Luftfeuchtigkeit ist zu hoch |
In diesem Beispiel leuchtet immer die Farbe des wichtigsten aktiven Zustands. Eine offene Tür hat die höchste Priorität. Danach folgen die laufende Waschmaschine und die erhöhte Luftfeuchtigkeit.
Später könnten wir auch mehrere LED-Bereiche verwenden. Beispielsweise drei LEDs für den Türstatus, drei für die Waschmaschine und weitere LEDs für Temperatur oder Luftfeuchtigkeit. Für den Einstieg ist eine einfarbige Anzeige allerdings einfacher.
Welche Bauteile benötigen wir?
Die Einkaufsliste ist erfreulich kurz. Wer bereits mit ESP32-Projekten gearbeitet hat, besitzt möglicherweise sogar einen Großteil der benötigten Komponenten.
1. ESP32 Entwicklungsboard
Als Steuerung verwenden wir ein gewöhnliches ESP32-DevKit mit WLAN. Ein ESP32-WROOM-32-Board reicht für unsere Statusanzeige vollkommen aus. ESPHome übernimmt später die Ansteuerung der LEDs und die Verbindung zu Home Assistant.
ESP32 Entwicklungsboards bei Amazon ansehen*
2. WS2812B RGB-LED-Streifen
Für unsere Anzeige benötigen wir einen LED-Streifen mit einzeln ansteuerbaren RGB-LEDs. Besonders beliebt sind WS2812B-Streifen. Jede LED enthält ihren eigenen Steuerchip und kann unabhängig von den anderen LEDs eine Farbe darstellen.
Ich würde für dieses Projekt zunächst einen kurzen Abschnitt mit 12 LEDs verwenden. Dafür reicht häufig schon ein kleines Stück eines handelsüblichen LED-Streifens. Achte darauf, dass du tatsächlich einen adressierbaren 5-V-WS2812B-Streifen kaufst. Gewöhnliche RGB-Streifen mit vier Anschlüssen sind für diese Schaltung ungeeignet.
WS2812B-LED-Streifen bei Amazon ansehen*
3. Passendes 5-V-Netzteil
Die LEDs benötigen eine stabile 5-V-Spannungsversorgung. Bei voller weißer Helligkeit können 12 WS2812B-LEDs theoretisch ungefähr 720 mA aufnehmen. Dazu kommt der Strombedarf des ESP32.
Ein hochwertiges 5-V-Netzteil mit mindestens 2 A ist für unseren kleinen Aufbau eine gute Wahl. Die tatsächliche Leistungsaufnahme fällt bei den verwendeten Statusfarben und reduzierter Helligkeit deutlich geringer aus.
5-V-Netzteile bei Amazon ansehen*
4. Pegelwandler und kleine Elektronikbauteile
Der ESP32 arbeitet mit 3,3-V-Logik, während ein mit 5 V betriebener WS2812B-Streifen ein entsprechend höheres Datensignal erwartet. Für einen zuverlässigen Aufbau verwenden wir deshalb einen geeigneten Pegelwandler mit einem 74AHCT125 oder 74HCT245.
Zusätzlich benötigen wir einen Widerstand mit etwa 330 bis 470 Ohm für die Datenleitung, einen Elektrolytkondensator mit 1000 µF und mindestens 6,3 V Spannungsfestigkeit sowie einige Anschlusskabel.
Passende Pegelwandler bei Amazon ansehen*
Elektronikbauteile und Breadboard-Sets bei Amazon ansehen*
5. LED-Aluminiumprofil mit Diffusor
Für die endgültige Montage würde ich den LED-Streifen in ein kleines LED-Profil einsetzen. Eine milchige Abdeckung verteilt das Licht gleichmäßiger und verhindert, dass man direkt auf die einzelnen LEDs blickt.
Gerade auf einem Schreibtisch oder unter einem Regal sieht die Anzeige damit deutlich aufgeräumter aus. Das Profil ist für den ersten Funktionstest allerdings noch nicht erforderlich.
LED-Profile mit Diffusor bei Amazon ansehen*
Was kostet die selbst gebaute Statusanzeige?
| Bauteil | Ungefährer Preis |
|---|---|
| ESP32 DevKit | 5–9 Euro |
| WS2812B-LED-Abschnitt | 3–7 Euro |
| 5-V-Netzteil | 5–8 Euro |
| Pegelwandler und Kleinteile | 3–7 Euro |
| LED-Profil | 4–8 Euro |
Mit bereits vorhandenen Bauteilen lässt sich das Projekt für ungefähr 15 bis 30 Euro umsetzen. Wenn alles neu gekauft werden muss, können es auch 35 Euro oder mehr werden. Vor allem Elektroniksortimente und LED-Profile werden häufig in größeren Packungen verkauft.
Falls du gerade erst in die Welt der Mikrocontroller einsteigst, lohnt sich auch ein Blick auf meine ESP32- und ESPHome-Projekte.
WS2812B-LED-Streifen mit dem ESP32 verbinden
Für den ersten Aufbau verwenden wir ein Breadboard. So können wir die Schaltung ohne großen Aufwand testen, bevor wir alles in einem Gehäuse unterbringen.
Der WS2812B-Streifen benötigt drei Verbindungen: 5 V, GND und eine Datenleitung. Wichtig ist die richtige Richtung des Datensignals. Auf vielen LED-Streifen befindet sich dafür ein kleiner Pfeil. Wir schließen die Datenleitung an der mit DIN gekennzeichneten Seite an.
Anschlussübersicht
| Anschluss | Verbindung |
|---|---|
| WS2812B 5V | 5-V-Netzteil Plus |
| WS2812B GND | Netzteil Minus und ESP32 GND |
| ESP32 GPIO16 | Eingang des 74AHCT125 |
| Pegelwandler Ausgang | Über 330–470 Ohm an WS2812B DIN |
| 74AHCT125 VCC | 5 V |
| 74AHCT125 GND | Gemeinsame Masse |
Beim 74AHCT125 im üblichen DIP-14-Gehäuse kann Kanal 1 verwendet werden: Pin 14 erhält 5 V, Pin 7 GND, Pin 2 das Datensignal vom ESP32 und Pin 3 führt zum LED-Streifen. Pin 1 wird mit GND verbunden, um den Ausgang zu aktivieren. Nicht verwendete Eingänge und Freigabeanschlüsse müssen auf definierte Pegel gelegt werden. Ein 100-nF-Keramikkondensator nahe der Versorgung des Bausteins ist sinnvoll.
Den 1000-µF-Kondensator setzen wir polungsrichtig zwischen 5 V und GND am Anfang des LED-Streifens. Der Widerstand gehört in Reihe zur Datenleitung, möglichst nahe am ersten LED-Pixel.
Wichtig: Der LED-Streifen wird direkt über die geeignete 5-V-Versorgung gespeist. Seine Last darf nicht einfach über den 3,3-V-Anschluss des ESP32 laufen. ESP32 und LED-Streifen benötigen eine gemeinsame Masse. Wenn du getrennte Versorgungen verwendest, müssen die Masseleitungen miteinander verbunden sein. Schließe die Elektronik nur im spannungsfreien Zustand an.
Für den ESP32 selbst verwenden wir ein passendes USB-Kabel und eine geeignete 5-V-USB-Versorgung. Bei einem gemeinsamen Netzteil muss die Einspeisung zum Board passen. Ein kleines Verteiler- oder Anschlussmodul kann dabei hilfreich sein.
ESPHome für die LED-Statusanzeige einrichten
Jetzt kümmern wir uns um die Software. In ESPHome legen wir ein neues Gerät an und wählen unser ESP32-Board aus. Das Gerät bekommt den Namen led-statusanzeige.
Für die WS2812B-LEDs verwenden wir die ESPHome-Komponente esp32_rmt_led_strip. Sie unterstützt die einzeln adressierbaren LEDs direkt und benötigt keine zusätzliche Arduino-Bibliothek.
ESPHome-YAML für 12 WS2812B-LEDs
esphome:
name: led-statusanzeige
friendly_name: LED Statusanzeige
esp32:
board: esp32dev
framework:
type: esp-idf
logger:
api:
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
light:
- platform: esp32_rmt_led_strip
id: status_led
name: "Status LED"
pin: GPIO16
chipset: WS2812
channel_colors: GRB
num_leds: 12
rgb_order: GRB
default_transition_length: 0s
restore_mode: ALWAYS_OFF
Die Konfiguration ist für ein klassisches ESP32-DevKit mit 12 WS2812B-LEDs gedacht. Falls du eine andere Anzahl verwendest, passt du den Wert num_leds entsprechend an. Die WLAN-Zugangsdaten liegen wie üblich in der ESPHome-Datei secrets.yaml.
Hinweis: Falls deine ESPHome-Version die zusätzliche Option rgb_order nicht akzeptiert, entferne diese Zeile. Die Farbreihenfolge wird beim verwendeten RMT-Treiber bereits über channel_colors festgelegt.
Nach dem Flashen sollte Home Assistant das Gerät über die ESPHome-Integration erkennen. Die LED-Leiste erscheint als steuerbares Licht. Du kannst sie nun ganz normal einschalten und verschiedene Farben auswählen.
Ich würde zuerst Rot, Grün und Blau einzeln testen. Wenn die Farben falsch dargestellt werden, überprüfe die Farbreihenfolge des LED-Streifens.
Home Assistant steuert die Farben automatisch
Nachdem die LEDs funktionieren, kommt der eigentlich interessante Teil. Home Assistant soll selbst entscheiden, welche Farbe die Statusleuchte anzeigt.
Wir verwenden dafür eine Automation. Sie prüft die Zustände unserer Sensoren und wählt anschließend die passende LED-Farbe aus.
Für das Beispiel gehen wir von folgenden Entitäten aus:
binary_sensor.haustuer_kontaktfür den Türkontaktbinary_sensor.waschmaschine_laeuftfür den Waschmaschinenstatussensor.badezimmer_luftfeuchtigkeitfür die Luftfeuchtigkeitlight.led_statusanzeige_status_ledfür unsere neue LED-Leiste
Die Namen sind Beispiele. Du musst sie durch die tatsächlichen Entitäts-IDs deiner Home-Assistant-Installation ersetzen. Der Waschmaschinenstatus muss als binärer Sensor bereits vorhanden sein. Alternativ kannst du ihn anhand der Leistungsaufnahme einer geeigneten Messsteckdose ermitteln.
Automation für die LED-Statusanzeige
alias: LED Statusanzeige aktualisieren
description: Zeigt wichtige Smart-Home-Zustände farbig an
triggers:
- trigger: state
entity_id:
- binary_sensor.haustuer_kontakt
- binary_sensor.waschmaschine_laeuft
- sensor.badezimmer_luftfeuchtigkeit
- trigger: homeassistant
event: start
- trigger: state
entity_id: light.led_statusanzeige_status_led
to: "unavailable"
- trigger: state
entity_id: light.led_statusanzeige_status_led
from: "unavailable"
actions:
- choose:
- conditions:
- condition: state
entity_id: binary_sensor.haustuer_kontakt
state: "on"
sequence:
- action: light.turn_on
target:
entity_id: light.led_statusanzeige_status_led
data:
rgb_color: [255, 0, 0]
brightness_pct: 25
- conditions:
- condition: state
entity_id: binary_sensor.waschmaschine_laeuft
state: "on"
sequence:
- action: light.turn_on
target:
entity_id: light.led_statusanzeige_status_led
data:
rgb_color: [0, 0, 255]
brightness_pct: 25
- conditions:
- condition: numeric_state
entity_id: sensor.badezimmer_luftfeuchtigkeit
above: 65
sequence:
- action: light.turn_on
target:
entity_id: light.led_statusanzeige_status_led
data:
rgb_color: [255, 180, 0]
brightness_pct: 25
default:
- if:
- condition: template
value_template: >
{{ states('binary_sensor.haustuer_kontakt')
in ['unknown', 'unavailable']
or states('binary_sensor.waschmaschine_laeuft')
in ['unknown', 'unavailable']
or not is_number(
states('sensor.badezimmer_luftfeuchtigkeit')
) }}
then:
- action: light.turn_off
target:
entity_id: light.led_statusanzeige_status_led
else:
- action: light.turn_on
target:
entity_id: light.led_statusanzeige_status_led
data:
rgb_color: [0, 255, 0]
brightness_pct: 15
mode: restart
Diese Automation kannst du im YAML-Editor einer neuen Home-Assistant-Automation einfügen. Die einzelnen Entitäts-IDs müssen vorher angepasst werden.
Die Statusanzeige arbeitet mit einer festen Priorität. Ist die Tür offen, leuchtet die LED-Leiste rot. Läuft gleichzeitig die Waschmaschine, bleibt die Anzeige trotzdem rot. Erst wenn die Tür geschlossen wird, erscheint der nächstwichtige Zustand.
Wenn keiner der drei Zustände aktiv ist und alle Sensorwerte verfügbar sind, leuchtet die Leiste grün. Fehlen Sensorwerte, wird die Leiste abgeschaltet, solange kein anderer aktiver Zustand vorliegt. Dadurch wird zumindest vermieden, dass Grün angezeigt wird, obwohl wichtige Informationen fehlen.
Nach dem Einschalten der Statusanzeige oder einem Neustart solltest du kontrollieren, ob der aktuelle Zustand korrekt dargestellt wird. Die Automation kann bei Bedarf um weitere Auslöser ergänzt werden.
LED-Statusanzeige mit weiteren Sensoren kombinieren
Das eigentliche Potenzial zeigt sich, wenn bereits mehrere ESPHome-Sensoren im Haus vorhanden sind. Dann wird aus der einfachen Statusleuchte schnell ein kleines Informationssystem.
Du kannst beispielsweise einen selbst gebauten Türkontakt verwenden. Wie das funktioniert, zeige ich in meiner Anleitung zum ESP32 mit ESPHome, wo du auch weitere passende Projekte findest.
Eine weitere Möglichkeit ist die Kombination mit einem Präsenzsensor. Mein Projekt ESP32 mmWave-Präsenzsensor mit LD2410 zeigt, wie sich Personen selbst bei geringen Bewegungen erkennen lassen. Die LED-Anzeige könnte dann beispielsweise signalisieren, ob sich jemand im Arbeitszimmer befindet.
Auch für die Raumluft bietet sich eine Kombination an. Mit einem ESP32-Luftqualitätssensor lassen sich Messwerte erfassen und anschließend farbig darstellen. Gelb könnte für erhöhte Luftfeuchtigkeit stehen, Rot für besonders schlechte Luftwerte.
LED-Leiste in mehrere Bereiche aufteilen
Wer die Statusanzeige später erweitern möchte, kann die LEDs in mehrere Bereiche aufteilen. Bei zwölf LEDs könnten beispielsweise jeweils vier LEDs einen eigenen Status anzeigen.
- LED 1 bis 4: Türen und Fenster
- LED 5 bis 8: Waschmaschine und Haushaltsgeräte
- LED 9 bis 12: Raumklima
Mit ESPHome lassen sich adressierbare LED-Streifen entsprechend unterteilen. Dafür eignet sich die Funktion partition. Jeder Bereich kann anschließend als eigene Lichtentität in Home Assistant erscheinen.
Für einen ersten Nachbau würde ich bei der einfachen Statusanzeige mit einer gemeinsamen Farbe bleiben. Wenn die funktioniert, ist die Aufteilung in mehrere Bereiche ein schönes Folgeprojekt.
Gehäuse und Montage der LED-Statusanzeige
Für die endgültige Montage würde ich ein kleines Aluminiumprofil mit milchiger Abdeckung verwenden. Das verteilt das Licht angenehm und verhindert, dass einzelne LEDs unangenehm blenden.
Die Statusanzeige lässt sich beispielsweise unter einem Monitor, an einem Regal oder seitlich am Schreibtisch befestigen. Ich würde einen Platz wählen, an dem sie im normalen Blickfeld liegt, ohne dauerhaft abzulenken.
Der ESP32 und die übrige Elektronik gehören in ein geschlossenes, geeignetes Kunststoffgehäuse. Achte auf saubere Anschlussleitungen und ausreichend Platz für die Elektronik. Provisorische Steckverbindungen auf dem Breadboard sind für einen langfristigen Betrieb weniger geeignet.
Häufige Fehler bei WS2812B und ESPHome
Die LEDs leuchten überhaupt nicht
Prüfe zunächst die 5-V-Spannungsversorgung und die gemeinsame Masseverbindung. Kontrolliere anschließend, ob das Datensignal wirklich an DIN angeschlossen ist. Auch der Pegelwandler muss korrekt versorgt und freigegeben sein.
Die Farben stimmen nicht
Bei adressierbaren RGB-LEDs kann sich die Reihenfolge der Farbkanäle unterscheiden. In der ESPHome-Konfiguration lässt sich die Einstellung channel_colors entsprechend anpassen.
Die LEDs flackern
Flackernde LEDs können auf Probleme mit der Stromversorgung, der Datenleitung oder dem Pegelwandler hinweisen. Verwende möglichst kurze Signalleitungen, eine stabile 5-V-Versorgung und prüfe den Serienwiderstand sowie den Pufferkondensator.
Die Statusanzeige zeigt die falsche Farbe
Kontrolliere zunächst die Entitäts-IDs in der Home-Assistant-Automation. Anschließend solltest du die Zustände der verwendeten Sensoren unter Entwicklerwerkzeuge prüfen. Besonders bei selbst erstellten Waschmaschinen-Sensoren lohnt es sich, die Schwellwerte genauer anzusehen.
Fazit: Kleine LED-Leiste mit großem Nutzen
Eine selbst gebaute LED-Statusanzeige ist ein schönes ESP32-Projekt für alle, die Home Assistant bereits im Alltag verwenden. Mit wenigen Bauteilen entsteht eine kleine Leuchte, die wichtige Informationen direkt sichtbar macht.
Mir gefällt besonders, dass sich das Projekt nach und nach erweitern lässt. Anfangs reichen eine offene Tür und der Waschmaschinenstatus. Später können weitere Sensoren hinzukommen oder die einzelnen LEDs unterschiedliche Aufgaben übernehmen.
Wer noch mehr praktische ESP32-Projekte ausprobieren möchte, findet auf smarthome-tricks.de unter anderem die selbst gebaute ESP32-Infrarotfernbedienung und die Übersicht weiterer ESPHome-Projekte.
*Dieser Artikel enthält Affiliate-Links. Wenn du über einen solchen Link einkaufst, erhalte ich gegebenenfalls eine kleine Provision. Für dich entstehen dadurch keine zusätzlichen Kosten. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.

