[Beta-Modul] ESPHomeHub - ESPHome-Geräte direkt in IP-Symcon, ohne MQTT und ohne Home Assistant

Hallo zusammen,

ich möchte ein neues, eigenständiges Modul vorstellen: ESPHomeHub.

ESPHome macht aus einem ESP32 oder ESP8266 mit ein paar Zeilen YAML einen Sensor, ein Relais, ein Licht oder einen Bluetooth-Proxy. In Home Assistant ist das seit Jahren der Standard für Selbstbau-Geräte. In Symcon ging es bisher nur über MQTT als Umweg: MQTT-Server, Topics pflegen, jede Variable von Hand anlegen. Im Module Store habe ich nichts gefunden, das ESPHome direkt anspricht.

Worum geht es?

ESPHomeHub spricht ein ESPHome-Gerät über dessen eigene Schnittstelle an, die Native API - genau so, wie Home Assistant es tut: eine verschlüsselte TCP-Verbindung je Gerät, das Gerät beschreibt sich selbst, Änderungen kommen sofort. Am Gerät muss man dafür nichts umbauen, die API ist in fast jeder ESPHome-YAML ohnehin schon drin.

Zwei Instanzen:

  • ESPHome-Konfigurator: findet ESPHome-Geräte im Netz und legt sie samt Verbindung in einem Schritt an
  • ESPHome-Gerät: ein ESP im Netz, mit allen seinen Sensoren, Schaltern und Lichtern als Variablen

Was es kann

  • Gerätesuche per mDNS, mit Anzeigename, Adresse, MAC, ESPHome-Version, Chip und ob ein Schlüssel nötig ist. Vorhandene Instanzen erkennt der Konfigurator an der MAC, auch nach einem IP-Wechsel.
  • Adressen von Hand für Geräte, die die Suche nicht erreicht: anderes VLAN, VPN, Docker ohne Host-Netz.
  • Verschlüsselung mit dem Schlüssel aus der Geräte-YAML (api: encryption: key). Einen falschen Schlüssel meldet das Modul klar als solchen, statt nur „nicht erreichbar" zu sagen.
  • Variablen entstehen von selbst, mit passender Darstellung: Einheit, Nachkommastellen, Grenzen, Klartext wie Offen/Geschlossen oder Bewegung.
  • Bedienen aus der Visualisierung oder per RequestAction. Die Variable übernimmt den Wert erst, wenn das Gerät ihn bestätigt.
  • Lebenszeichen und Wiederverbinden: Fällt ein Gerät aus, versucht ESPHomeHub es alle 30 Sekunden neu. Das ist wichtig, weil ein ESPHome-Gerät ohne verbundenen Client nach 15 Minuten neu startet. Die Variable „Verbunden" eignet sich als Auslöser für eine Ausfall-Meldung.
  • Uhrzeit mit Zeitzone: Geräte mit time: platform: homeassistant bekommen von Symcon die Uhrzeit samt Sommerzeit-Regeln. Seit ESPHome 2026.9 braucht es dafür ein neues Format, sonst zeigt das Gerät UTC.
  • Parallel zu Home Assistant: Ein Gerät darf beide Verbindungen gleichzeitig halten. Wer umsteigen will, kann also erst vergleichen.

Unterstützte Entitäten

sensor, binary_sensor, text_sensor, switch, button, number, select, text, light (Helligkeit, Farbe, Farbtemperatur), cover, valve, fan, lock, climate und event.

Noch nicht dabei sind Kamera, Medienplayer, Alarmanlage, Sirene, Datum/Uhrzeit, Update, Warmwasserbereiter und Infrarot/Funk. Das Modul nennt sie im Panel „Entitäten", statt sie stillschweigend zu verschlucken.

RequestAction($variablenID, true);          // z. B. Relais einschalten
IPS_RequestAction($id, 'e6d53a046_h', 40);  // Licht auf 40 % (Ident steht im Panel „Entitäten")
ESPH_GetEntities($id);                      // alle Entitäten als JSON

Stand der Erprobung

Ehrlich gesagt: Ich besitze selbst kein einziges ESP-Gerät. Getestet habe ich mit ESPHome-Geräten, die ESPHome selbst auf einem PC bzw. in einem Docker-Container laufen lässt (Plattform „host"). Das ist dieselbe Software und dieselbe Schnittstelle wie auf einem ESP32. Darauf liefen alle Entitätstypen gleichzeitig, und ESPHomeHub hat jeden Befehl bestätigt bekommen. In meinem Symcon 9.0 lief das über die Gerätesuche, mit Verschlüsselung und über mehrere Modul-Updates hinweg.

Das Protokoll ist gegen die Python-Bibliothek geprüft, mit der Home Assistant ESPHome anspricht: jede Entitätsbeschreibung, jeder Zustand, jeder Befehl und die Verschlüsselung byte-genau.

Was fehlt, ist der Test an echter Hardware. Spannend sind vor allem:

  • ESP8266 (wenig Speicher, ältere Firmware-Stände)
  • Lichter mit Farbe, Rollläden und Klima-Geräte aus der Praxis
  • Geräte in anderen VLANs

Wer ESPHome-Geräte im Einsatz hat, hilft mir mit einer kurzen Rückmeldung sehr: Chip, ESPHome-Version und was angekommen ist bzw. was nicht. Den Inhalt des Panels „Entitäten" mitzuschicken, spart oft eine Rückfrage.

Installation

Über den Module Store: In der Verwaltungskonsole nach ESPHomeHub suchen, das Modul steht im Bereich Beta, ab Symcon 9.0.

  1. Instanz ESPHome-Konfigurator anlegen, das Gerät in der Liste auswählen, „Erstellen".
  2. In der neuen Geräte-Instanz den Schlüssel aus der YAML eintragen und übernehmen.
  3. Im Panel „Gerät" steht dann „Verbunden", die Variablen erscheinen unter der Instanz.

Die ausführliche Beschreibung ist im Module Store beim Modul verlinkt.

Wie es weitergeht

Als Nächstes kommt der Bluetooth-Proxy als eigenes Modul. Damit holt ein ESP32 Bluetooth-Sensoren (Thermometer, Pflanzensensoren, Batteriewächter) nach Symcon, auch dort, wo der Symcon-Rechner selbst kein Bluetooth hat oder zu weit weg steht. Zuerst passiv, also nur mithören (BTHome, dann Xiaomi, Victron). Aktive Verbindungen, etwa für ein Auto oder ein BMS, sind ein deutlich größerer Schritt danach.

Dank

Das Protokoll habe ich nach aioesphomeapi nachgebaut, der Bibliothek, die auch Home Assistant verwendet. Die Verschlüsselung ist gegen noiseprotocol geprüft. Beide Projekte stehen unter MIT-Lizenz, die Hinweise liegen dem Modul bei. ESPHome ist ein Projekt der Open Home Foundation; ESPHomeHub ist kein offizielles ESPHome-Projekt.

Lizenz

PolyForm Noncommercial 1.0.0: Private Nutzung ist frei, gewerbliche Nutzung braucht eine gesonderte Lizenz. Wer das Projekt unterstützen möchte: paypal.me/DietmarGureth

Ich bin gespannt, welche Geräte bei euch zuerst dran sind.

Viele Grüße Dietmar

1 „Gefällt mir“