ESPHome Geräte mit ioBroker konfigurieren und installieren.

Der Einstieg in eine neue Smarthome-Thematik ist meist durch online verfügbare Erklärungen, HowTos und Videos schnell möglich. Beim Thema ESPHome und ioBroker hat sich unserer Meinung nach der Einstieg deutlich schwieriger dargestellt, als erwartet. Tasmota und ESPHome bieten nach ersten Recherchen ungefähr ein gleiches Leistungsspektrum der Möglichkeiten. Ein günstiger Microcontroller auf ESP32 oder 8266, z.B. ESP32 oder Wemos D1, ermöglicht zahlreiche Varianten an Sensoren, Aktoren oder Displays zu nutzen.

Während Tasmota mit bereits kompilierten Firmwares (siehe z.B. diesen Artikel für einen Gaszähler mit Tasmota) installiert und über eine Weboberfläche genutzt werden kann, wird bei ESPHome auf Konfigurationen im YAML-Format gesetzt, wie wir sie aus dem Smarthome-System Homeassistant kennen. Dies wäre auch eine erste Empfehlung: Wer mit YAML und Homeassistant bereits Erfahrungen hat, dem wird der Einstieg in ESPHome einfach fallen uns sehr schnell gelingen.

Unser Anwendungsfall ist schnell beschrieben: Im Rahmen einer Balkonkraftwerk-Installation möchten wir ein kleines Display mit einem ESPHome aufstellen, das die aktuellen Werte wie z.B. Leistung der PV-Anlagen, produzierter Strom und auch andere Verbrauchswerte wie z.B. Heizung und Wasser darstellen soll.

Im ersten Schritt verzichten wir auf eine Lösung, die mit einem e-Paper-Display und dem deep-sleep des Devices arbeitet. Diese Lösung „erwacht“ z.B. nur 1x pro Stunde aus dem Tiefschlaf, holt sich die Werte, aktualisiert das e-Paper-Display und legt sich danach wieder „schlafen“. In diesem Fall reicht sogar ein leistungsstarker Akku für einen mehrmonatigen Betrieb hinter einem Bilderrahmen ohne zusätzlichem Stromanschluss.

Wir wollen auf ein OLED-Display (ST7735 in 1,77″ Größe) setzen, dessen ESP32 permanent an den Strom angeschlossen ist, das Display möchten wir aber durch Bewegungserkennung ein- und ausschalten.

Zurück zu ESPHome und ioBroker und der Anleitung, wie wir ESPHome mit ioBroker nutzen. Wie bekommen wir also die YAML-Konfiguration auf einen ESP32 oder einen Wemos D1? Hierzu muss man wissen, dass die Firmware für das Device über ESPHome und die dafür erstellte YAML-Konfiguration jedesmal neu kompiliert wird. Hierzu benötigt der ioBroker entsprechende Pakete, die auf dem System, auf dem ioBroker läuft, installiert sind, z.B. python. Herausforderung 1: nutzt man ioBroker in einer Docker-Umgebung z.B. auf einer Synology, dann wird es mit der Installation von zusätzlichen Paketen meist schnell komplex.

Deswegen empfehlen wir eine eigene Installation auf einem eigenen Device, z.B. ein alter Raspberry PI 3.

Wir benötigen also für unser erstes ESPHome-Setup folgende Komponenten:

  • ESP32 oder Wemos D1 mini
  • micro-USB-Kabel (ACHTUNG: es wird ein Datenkabel benötigt, mittlerweile werden häufig zu Taschenlampen & co micro-USB-Kabel mitgeliefert, die lediglich Strom liefern, aber keine Daten übertragen können)
  • ESPHome-Adapter auf ioBroker-Installation

Der Vorteil von ESP32 oder Wemos D1 mini liegt an dem bereits verbauten micro-USB-Anschluss. Über diesen Anschluss können wir einerseits die firmware flashen und andererseits auch das Board zum Betrieb mit Strom versorgen. Als Netzteil reicht auf Grund des geringen Stromverbrauchs ein beliebiges, altes USB-Netzteil eines halten Handys. Wir benötigen also für das Flashen von ESPHome keinerlei Kabel oder Lötarbeiten. Das wird erst relevant, wenn wir Sensoren oder Displays anschließen wollen. Aber selbst hier können wir für einen ersten Aufbau auf Jumperkabel setzen, wenn ESP32/Wemos und auch Sensorik/Display über PinOuts verfügen.


Unsere Empfehlungen


Für die Installation des ESPHome-Adapters auf ioBroker sind wenige Details zu beachten.

  1. Für die Installation des Adapters muss die Quelle des Adapter-Repositories auf „beta“ gestellt werden. Dies erfolgt in den Einstellungen (Werkzeug-Schlüssel > Repositories)
    Repository Quelle in ioBroker auf beta umstellen

    Repository Quelle in ioBroker auf beta umstellen

  2. Danach kann der Adapter wie üblich in der Adapter-Liste gesucht und installiert werden.
    ESPHome Adapter für ioBroker auswählen und installieren

    ESPHome Adapter für ioBroker auswählen und installieren

  3. Nach der Installation kann der Adapter gestartet werden und wird in der linken Navigation eingefügt.
    ESPHome Adapter in ioBroker erfolgreich gestartet

    ESPHome Adapter in ioBroker erfolgreich gestartet

    ESPHome internes Dashboar in ioBroker

    ESPHome internes Dashboar in ioBroker

    Sollte die Installation nicht erfolgreich abgeschlossen werden können, werden wahrscheinlich auf dem raspberry pi noch weitere Pakete fehlen. Bei uns hat der Befehl sudo apt install python3-full python3.9-dev libpython3.9-dev python3-pip alle notwendigen Pakete installiert. Den Befehl einfach nach erfolgreichem SSH-Login auf dem raspberry ausführen.

Ist ESPHome und das damit verfügbare Dashboard auf dem ioBroker aktiv, sind die wichtigsten Vorbereitungen bereits erledigt. Im nächsten Schritt nehmen wir einen Wemos D1mini mit einem USB-Datenkabel und versuchen ein „nacktes“ ESPHome darauf zu installieren.

Zunächst sollten wir in den „Secrets“, auf dem Dashboard rechts oben verlinkt, die Zugangsdaten zum WLAN einpflegen. Dies hat den Vorteil, dass die Zugangsdaten nicht manuell für jedes Device in der Konfiguration angegeben werden müssen, sondern für jedes neue Device automatisch aus den Secrets übernommen werden. In den Secrets lassen sich noch weitere Zugangsdaten anlegen, z.B. zum MQTT-Server. Dies hat außerdem den Vorteil, dass in den Konfigurationen keine Passwörter in Klartext angegeben werden müssen.

Dazu öffnen wir über den Link in der linken Navigation im ioBroker das ESPHome Dashboard. Über „+ New Device“ im rechten unteren Bereich können wir ein neues Device konfigurieren.

Den Screen bestätigen wir mit „continue“:

ESPHome neues Device anlegen

ESPHome neues Device anlegen

Im nächsten Schritt geben wir den Namen des anzulegenden Devices an:

ESPHome Name für neues Device definieren

ESPHome Name für neues Device definieren

Danach folgt die Auswahl der Plattform, auf der ESPHome installiert werden soll. Wir setzen einen Wemos D1 mini ein, also wählen wir ESP8266:

ESPHome Plattform für neues Device auswählen

ESPHome Plattform für neues Device auswählen

Danach ist die Basiskonfiguration bereits erstellt und es wird der encryption key für die verschlüsselte Kommunikation der Devices angezeigt, dieser ist auch immer über die YAML-Konfiguration einsehbar. Unser Test-Device „test-esp“ wird auch bereits auf dem Dashboard im Hintergrund angezeigt:

ESPHome neues Device erfolgreich konfiguriert

ESPHome neues Device erfolgreich konfiguriert

Wir bestätigen mit „INSTALL“ und im nächsten Schritt wird abgefragt, wie wir ESPHome auf dem Device installieren wollen. Bei der ersten Installation muss das Gerät über USB eingesteckt sein, später können wir die neue Firmware auch problemlos über WLAN aufspielen und aktualisieren. Der Wemos D1 ist am raspberry pi per USB-Kabel eingesteckt, also wählen wir „Plug into the computer running ESPHome Dashboard“.

ESPHome Option für Installation auswählen

ESPHome Option für Installation auswählen

Im Anschluss startet das Erstellen und Kompilieren der Firmware, Übertragung auf den Speicher des Devices und es erfolgt der erste Start:

ESPHome kompilieren der Firmware gestartet

ESPHome kompilieren der Firmware gestartet

ESPHome Pakete werden kompiliert

ESPHome Pakete werden kompiliert

ESPHome flash des Device vor Installation löschen

ESPHome flash des Device vor Installation löschen

ESPHome Logging erster Start nach Flash

ESPHome Logging erster Start nach Flash

 

Die Konfiguration des Devices können wir über „edit“ auf dem ESPHome Dashboard aufrufen:

ESPHome Test Device Basis YAML Konfiguration

ESPHome Test Device Basis YAML Konfiguration

Das Device ist für den initialen Betrieb korrekt konfiguriert und geflasht. Jede weitere Anpassung erfolgt durch die Erweiterung der Konfiguration, einem erneuten Kompilieren und Flashen des Devices.

Werfen wir zuletzt noch einen kurzen Blick auf das YAML, das mit der ersten Installation erzeugt wurde. Wer sich bereits mit YAML oder Python auskennt, wird keine Schwierigkeiten haben. Besonders ist bei YAML (und auch bei Python), dass logische Absätze nach z.B. If oder Deklarationen immer gleichmäßig eingerückt werden müssen, per Definition mit zwei Leerzeichen. In der default Konfiguration werden neben dem Device-Namen auch die WLAN-Informationen und ein Fallback-WLAN definiert. Für die API und OTA-Zugriff werden Passwörter definiert.

esphome:
  name: test-esp
  friendly_name: TEST_ESP


esp8266:
  board: esp01_1m

# Enable logging
logger:


# Enable Home Assistant API
api:
  encryption:
    key: "zgW+NakJZWs82Vxck0Zqu1p00qJrrCbjdFiy6srAPoc="
ota:
  password: "161fe29c4d0f2927ff2ab18751a8bd3c"


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "ESP-TEST Fallback Hotspot"
    password: "bX1hV8i8grGd"

captive_portal:


Im nächsten Beitrag erklären wir, wie wir über MQTT Daten vom ioBroker abrufen bzw. austauschen können.