ESPHome ist eine Open-Source-Plattform, die es Benutzern ermöglicht, auf der Grundlage der Mikrocontroller ESP8266 und ESP32 auf einfache Weise benutzerdefinierte Firmware für Smart-Home-Geräte zu erstellen. Einer der Hauptvorteile der Verwendung von ESPHome mit Home Assistant ist die Möglichkeit, eine Vielzahl von Smart-Home-Geräten einfach in eine einzige Plattform zu integrieren und zu steuern. Darüber hinaus sind ESP’s weitaus günstiger als fertige Module.
Zusätzlich zu seinen Integrationsmöglichkeiten bietet ESPHome auch eine Reihe weiterer Vorteile für Benutzer, die ihre eigenen Smart-Home-Geräte bauen und steuern möchten. ESPHome ist zudem einfach zu bedienen, mit einer leicht verständlichen und intuitiven Konfigurationsdatei, die eine komplexe Programmierung überflüssig macht. Es ist außerdem hochgradig anpassbar, sodass Benutzer Firmware für eine Vielzahl von Smart-Home-Geräten erstellen können, von einfachen Sensoren bis hin zu komplexeren Geräten wie Thermostaten und Sicherheitssystemen.
Zubehör
Es gibt verschiedene Zubehörteile, die beim Einrichten und Verwenden von ESPHome nützlich sein können, um benutzerdefinierte Firmware für Smart-Home-Geräte zu erstellen. Einige der gängigsten Zubehörteile sind:
- Mikrocontroller: Der ESP8266 (auch NodeMCU) und ESP32 sind die am häufigsten verwendeten Mikrocontroller.
- USB-to-Serial Adapter: Dieser dient zum Anschließen des Mikrocontrollers an einen Computer und zum Hochladen von Firmware und zum Vornehmen von Konfigurationsänderungen.
- Jumper Kabel: Diese werden verwendet, um den Mikrocontroller mit anderen Komponenten und Sensoren zu verbinden.
- Sensoren: Je nach Projekt benötigen wir verschiedene Sensoren und Aktoren, wie z. B. Temperatursensoren, Bewegungsmelder oder Glühbirnen.
- Breadboard: Ein Breadboard ist ein Prototyping-Board, mit dem wir elektronische Komponenten einfach anschließen und testen können. Es ist besonders nützlich für das Prototyping und Testen neuer Projekte.
- Stromversorgung: Je nach Projekt benötigen wir möglicherweise eine Stromversorgung, um den Mikrocontroller und andere Komponenten mit Strom zu versorgen. Dies kann ein USB-Netzteil, eine Batterie oder eine netzbetriebene Versorgung sein.
- Gehäuse: Wenn du planst, das ESPHome-Projekt außerhalb eines Labors oder einer Prototyping-Umgebung zu verwenden, solltest du die Verwendung eines Gehäuses in Betracht ziehen, um es vor Witterungseinflüssen zu schützen.
Insgesamt hängt das spezifische Zubehör, das für ein ESPHome-Projekt benötigt wird, vom jeweiligen Projekt und der Art der verwendeten Geräte ab. Dies sind jedoch einige der gängigsten Zubehörteile, die beim Einrichten und Verwenden von ESPHome nützlich sein können.
Außerdem sollten wir Home Assistant bereits eingerichtet haben.
Installation der ESPHome Tools in Home Assistant
Um ESPHome mit Home Assistant zu verwenden, müssen wir Folgendes tun. Installiere zunächst das ESPHome -Add-on im Home Assistant:
- Gehe in der Home Assistant Benutzeroberfläche zur Konfigurationsseite (das Zahnradsymbol unten links).
- Klicke auf der Konfigurationsseite im oberen Menü auf die Registerkarte Add-on Store.
- Gib im Suchfeld anschließend „ESPHome“ ein und drücke die Eingabetaste.
- Klicke in den Suchergebnissen auf das Add-on „ESPHome“.
- Klicke anschließend auf die Schaltfläche „Installieren“, um das Add-on zu installieren.
Richte den ESP8266- oder ESP32-Mikrocontroller ein:
- Verbinde deinen ESP8266 oder ESP32 zuerst mit einem USB-Kabel mit dem Raspberry Pi.
- Öffne das ESPHome-Add-On im Home Assistant und klicke auf die Schaltfläche „Start“, um das Add-On zu starten.
- Klicke in der ESPHome -Add-On-Oberfläche auf die Schaltfläche „New Device“, um infolge eine neue Konfiguration für den Mikrocontroller zu erstellen.
- Folge dem Wizard und wähle einen Geräte-Namen sowie den Board-Typ aus (diesen findest du über diese Liste, klicke auf den Namen und schaue dann unter Configuration → Board). Idealerweise schauen wir uns die erzeugte YAML Datei an, bevor wir das ganze installieren (klicke auf Edit).
esphome: name: nodemcu-test-led platform: ESP8266 board: nodemcuv2 # Enable logging logger: # Enable Home Assistant API api: encryption: key: "7CC9iyIv10VTzuCB8m3Y5br/5ILuXgWrsZaRSJwp7sA=" ota: password: "ade6f91721739a41c0d307b51ace6b23" wifi: ssid: !secret wifi_ssid password: !secret wifi_password domain: ".localdomain" manual_ip: static_ip: 192.168.1.12 gateway: 192.168.1.1 subnet: 255.255.255.0 # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Nodemcu-Test-Led" password: "Njv8zbKCYyqN" captive_portal: switch: - platform: gpio name: "Test LED" pin: D5
Ich habe hier ein paar Dinge geändert. Nicht alles davon ist nötig, aber kann bei Problemen helfen.
- Den API-Encryption-Key brauchen wir gleich, um den ESP mit Home Assistant zu koppeln.
- Name sowie Passwort des Wifi-Netzwerks wurden aus der HA Konfiguration übernommen und der Wert der Variablen ist im ESPHome Menü oben rechts unter „Secrets“ einzusehen. Diesen Wert kopieren wir später
- In meinem Netzwerk sind Geräte über
<hostname>.localdomain
erreichbar. Der Standardwert in Home Assistant ist aber<hostname>.local
, daher habe ich die Domainendung gesetzt. - Zusätzlich habe ich die lokale IP-Adresse des ESP’s eingetragen. Falls du diese nicht direkt weißt, kannst du zunächst ohne diesen Teil die Installation durchführen. Anschließend verbindet sich der ESP mit deinem Router und du kannst erneut installieren (diesmal mit der statischen IP).
- In meinem Test möchte ich einfach nur eine LED mit dem NodeMCU schalten. Diese habe ich an D5 und GND geklemmt. Der letzte Teil der Konfiguration ist dafür da. Hier kannst du eigene Einstellungen setzen.
Überprüfe die Datei und drücke auf Speichern und anschließend auf Installieren. Der Prozess dauert ein wenig, aber sollte erfolgreich durchlaufen.
ESP32 / ESP8266 in Home Assistant einbinden
Nun richten wir die Geräte in Home Assistant ein. In meinem Test möchte ich lediglich eine LED schalten (letzter Teil der Konfiguration). Der Prozess ist aber für alle Geräte der gleiche.
- Gehe in der Home Assistant Benutzeroberfläche zur Konfigurationsseite und klicke im oberen Menü auf die Registerkarte „Integrationen“.
- Hier siehst du normalerweise direkt einen neuen Eintrag:
- Andernfalls: Klicke auf der Seite „Integrationen“ auf die Schaltfläche „Integration hinzufügen“ und suche nach dem Namen des Geräts (z. B. „ESP8266“).
- Folge anschließend den Anweisungen, um das Gerät in Home Assistant einzurichten. Du wirst im nächsten Schritt nach dem Encyption Key gefragt. Füge den Key aus deiner YAML Datei ein.
- Darauf hin erscheint ein neuer Eintrag unter Integrations (
1 device and 1 entity
).
Das ist es! Du solltest jetzt deinen ESP8266 oder ESP32-Mikrocontroller über Home Assistant steuern können. Wenn wir auf Devices klicken, sehen wir die Schaltfläche zum Steuern unserer LED:
Unzählige ESPHome Anwendungen konfigurieren
Eine einfache LED Steuerung ist dir zu langweilig? Keine Sorge! Es gibt unzählige weitere Komponenten, die einfach per YAML Konfiguration eingebunden werden können. Hier findest du die unterstützten Komponenten.
- Temperatursensoren (DHT uvm.)
- Analoge Werte auslesen (ADC)
- Magnetsensoren (Tür und Fenstersensoren selber bauen)
- Abstandssensoren
- Sensoren zur Messung der Luftqualität
- Messungen des pH-Werts
- Gewichtssensoren (HX711)
- … und viele mehr
Es lassen sich also mit wenig Aufwand vollwertige „Außenposten“ für das Smart Home bauen und direkt integrieren. Bei Bedarf gehen wir auf einige der interessanteren Integrationen in Zukunft näher ein.
Überwachungskamera ESP32 Cam in Home Assistant einbinden
In der Vergangenheit haben wir bereits gesehen, wie man die ESP32 Cam für einen Livestream nutzt. Nun können wir den Stream einfach in unser Dashboard einbinden, allerdings hängt sich der ESP dann häufig auf, sobald mehr als ein Client auf den Stream zugreift. Zwar gibt es Multiclient Bibliotheken für den Livestream, allerdings ist die einfachere Methode das vorgefertigte ESP32 Camera Modul von ESPHome zu nutzen. Dieses ist sehr einfach konfiguriert.
Erstelle eine neue Konfiguration-YAML-Datei mit folgendem Inhalt:
esphome: name: esp32cam-test esp32: board: esp32cam framework: type: arduino # Enable logging logger: # Enable Home Assistant API api: encryption: key: "JwXARh1Fqa7VL3Auahqv9jjM8eiImnEXcrEEIV/irog=" ota: password: "f703b4f76e18d2173b9e089d62b068de" wifi: ssid: !secret wifi_ssid password: !secret wifi_password domain: ".localdomain" # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Esp32-Cam-Test Fallback Hotspot" password: "EqdnXteR1fSE" captive_portal: output: - platform: ledc pin: GPIO4 id: gpio_4 channel: 2 light: - platform: monochromatic output: gpio_4 name: Flash/PWM Light restore_mode: ALWAYS_OFF esp32_camera: external_clock: pin: GPIO0 frequency: 20MHz i2c_pins: sda: GPIO26 scl: GPIO27 data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35] vsync_pin: GPIO25 href_pin: GPIO23 pixel_clock_pin: GPIO22 power_down_pin: GPIO32 aec2: True aec_mode: AUTO name: "Camera Outside" resolution: 400X296 max_framerate: 6 fps idle_framerate: 0.5 fps jpeg_quality: 10 wb_mode: home agc_gain_ceiling: 8x vertical_flip: False horizontal_mirror: False
Damit der ESP32 im Flash Modus startet, musst du GPIO0 und GND verbinden und anschließend den Reset-Knopf drücken. Danach kannst du die Konfiguration installieren. Bevor du jedoch ein Bild siehst, musst du den ESP nach dem Flashvorgang noch einmal neu starten.
Übrigens: Falls du zusätzlich noch einen externen Stream möchtest (über die lokale IP / den Hostnamen des ESP’s aufrufbar), dann kannst du dir das folgende Modul ansehen und zusätzlich in deine Konfiguration mit aufnehmen: esp32_camera_web_server
Nachdem wir den ESP in Home Assistant eingebunden haben (siehe vorheriges Kapitel), können wir noch eine Kachel auf dem Dashboard hinzufügen. Dazu nutze ich folgenden Code:
show_state: true show_name: true camera_view: auto type: picture-entity entity: camera.camera_outside
Passe die Namen und Einstellungen entsprechend deinen Anforderungen an.
Batteriespannung am ESP8266 / ESP32 messen
Für den Fall, dass der ESP durch Batterien mit Strom versorgt wird (bspw. durch eine Solarzelle), so kann man diese Spannung messen. Dafür erweitern wir die YAML mit folgendem Code:
sensor: - platform: adc pin: VCC name: "VCC Voltage" id: battery_voltage
Wichtig ist, dass am A0 Pin dabei nichts angeschlossen ist.
Für den ESP32 sieht die Konfiguration (GPIO34) wie folgt aus:
sensor: - platform: adc name: "Battery voltage" id: battery_voltage pin: GPIO34 accuracy_decimals: 2 update_interval: 60s attenuation: 11dB filters: - multiply: 2.0 # The voltage divider requires us to multiply by 2
Zusätzlich können wir noch Automationen erstellen, indem wir den ESP8266 / ESP32 herunterfahren (Deep Sleep ohne Wakeup Source).
Fazit
Insgesamt ist ESPHome eine ausgezeichnete Wahl für alle, die ihre eigenen Smart-Home-Geräte bauen und steuern möchten, und die Integration mit Home Assistant macht es noch einfacher, ein Smart Home einzurichten und zu automatisieren. Durch den geringen Preis eignet sich der ESP hervorragend als Außenposten – sei es für die Wetterstation, ein Aquarium, für den Garten, usw. Gesammelt werden die Daten dann per Home Assistant – ohne Cloud, sicher zu Hause.
Ich bin von ESPHome durch seine Einfachheit sehr überzeugt und werde es sicher in vielen meiner zukünftigen Smart Home Projekte verwenden. Es bleibt spannend 😉
3 Kommentare
Hallo,
Ich verwende iobroker, kann man Esphome auch im Iobroker verwenden
Im iobroker gibt es einen Adapter für esphome.
Hallo,
gibt es vielleicht ein Beispiel mit deep Sleep und ESP Home mit einem D1 mini und DHT 11. das wäre recht interessant für mein Gewächshaus.
Danke