smarthome-tricks.de

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-FarbeBedeutung
GrünAlle überwachten Zustände sind normal
RotEine überwachte Tür oder ein Fenster ist offen
BlauDie Waschmaschine läuft
GelbDie 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?

BauteilUngefährer Preis
ESP32 DevKit5–9 Euro
WS2812B-LED-Abschnitt3–7 Euro
5-V-Netzteil5–8 Euro
Pegelwandler und Kleinteile3–7 Euro
LED-Profil4–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

AnschlussVerbindung
WS2812B 5V5-V-Netzteil Plus
WS2812B GNDNetzteil Minus und ESP32 GND
ESP32 GPIO16Eingang des 74AHCT125
Pegelwandler AusgangÜber 330–470 Ohm an WS2812B DIN
74AHCT125 VCC5 V
74AHCT125 GNDGemeinsame 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:

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.

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.

Die mobile Version verlassen