Eigenständiges ESP32-C3 Bluetooth-Mesh-Gateway für lokale Steinel-Steuerung, Diagnose, Firmware-Aktualisierungen und Home-Assistant-Integration.
Steinel-Geräte <-> Bluetooth Mesh <-> ESP32-C3 Gateway -> Home Assistant
Eigenständiges Bluetooth-Mesh-Gateway für Steinel-Installationen mit lokaler Weboberfläche und Home Assistant über die native ESPHome-API. 2.0.0 unterstützt mehrere Geräte aus einem Netzwerk.
Autor und Maintainer: Bartosz Supcziński — bartek@env.pl
Steinel-Connect-Mesh-Geräte verwenden Bluetooth Mesh, während Home Assistant über ein IP-Netzwerk kommuniziert. Der ESP32-C3 verbindet beide Umgebungen, tritt der vorhandenen Installation bei und veröffentlicht Gerätebefehle und Status über ESPHome.
Importieren Sie das bestehende Netzwerk aus Steinel Cloud oder einer von der App exportierten JSON-Sicherung. Wählen Sie Geräte per Checkbox in der Weboberfläche. Nach dem Neustart werden ihre unterstützten Entitäten in ESPHome registriert und von Home Assistant erkannt. Keine manuelle Schlüsselextraktion, gerätespezifische YAML-Dateien, MQTT-Broker oder eigene HA-Integration erforderlich.
Cloud-Zugriff dient der Einrichtung. Der tägliche Betrieb erfolgt lokal über Bluetooth Mesh und WLAN.

Die integrierte Seite bietet Einrichtung, Steuerung, Diagnose und Firmware-Aktualisierungen im Browser.

Die standardmäßige ESPHome-Integration stellt jedes ausgewählte Gerät separat in Home Assistant bereit. Die folgende Abbildung zeigt NightmatIQ Plus.

Ein optionales Frontend-Modul fasst Sensorzustand, Beleuchtungsstärke, Betriebsart und Dämmerungsschwelle in einem kompakten Dialog für NightmatIQ Plus zusammen.

Die standardmäßige ESPHome-API veröffentlicht:
Home Assistant zeigt jeden ausgewählten Mesh-Knoten als separates Gerät mit seinen eigenen Entitäten an. Die native ESPHome-Integration benötigt keinen MQTT-Broker, keine eigene Integration und keine YAML-Datei je Lampe.
Erforderlich sind ein ESP32-C3 Super Mini mit 4 MB Flash, eine 2,4-GHz-WLAN-Verbindung und eine Steinel-Connect-Mesh-Installation mit Zugriff auf Cloud oder App-Netzwerksicherung. Für Erstinstallation und Wiederherstellung wird die native USB/JTAG-Seriell-Verbindung verwendet.
Unter Linux erscheint die USB-Schnittstelle normalerweise als Espressif USB JTAG/serial (303a:1001) und als /dev/ttyACM*.
Die Firmware ist für ESP32-C3 und ESP-IDF ausgelegt. Erweiterte Bluetooth-5-Funktionen sind deaktiviert, weil Bluetooth Mesh den BLE-4.2-Advertising-Pfad verwendet. Die Konfiguration berücksichtigt den begrenzten Arbeitsspeicher des ESP32-C3.
| Profil / Modell | Funktionen |
|---|---|
| Gerätemodus | Auto / Always On / Always Off |
Generic OnOff Server 1000 |
Bestätigter Ausgangszustand, On/Off-Auswahl |
Light Lightness Server 1300 |
Helligkeit als Number-Entität, 0–100% |
Light LC Server 130F |
Automatikschalter, Lichtschwelle und Nachlaufzeit |
Sensor Server 1100 |
Beleuchtungsstärke und Bewegung/Präsenz, sofern das Gerät diese Eigenschaften meldet |
| Scene / Scheduler | In Metadaten erkannt; kein allgemeiner Szeneneditor oder Zeitplanprogrammierer |
Das Gateway prüft gebundene SIG-Modelle und authentifizierte Composition Data: Elementanzahl, Company/Product IDs und importierte Fähigkeiten. Eine fehlende Antwort blockiert gültige Kommunikation mit dem importierten AppKey nicht; bestätigte Abweichungen sperren die Steuerung.
Gruppen, Nachbargruppen und Master/Slave werden in Steinel Connect konfiguriert. Das Gateway verwendet die vorhandene Netzwerkkonfiguration unverändert.
Ausgänge nutzen das erste geeignete Modell; ein Lightness-Ausgang hat Vorrang vor einem separaten OnOff-Element. Alle Sensor-Elemente werden abgefragt. Mehrere unabhängige Ausgänge eines Geräts werden nicht als getrennte Kanäle dargestellt. Sensoren bleiben unbekannt, bis die entsprechende Eigenschaft empfangen wird. Ein versendeter Befehl gilt nicht als bestätigter Gerätezustand.
| Geräte | Anbindung | Umfang / Voraussetzung |
|---|---|---|
| NightmatIQ Plus, IS 180 (Mesh-Variante) | SIG-Modelle | Steuerung und Messwerte entsprechend Ausstattung und Firmware des Geräts |
| L 800 SC, L 810 SC / C, L 820 SC, L 830 SC / C, L 835 SC / C, L 840 SC / C | SIG-Modelle | Steuerung und Messwerte entsprechend Ausstattung und Firmware des Geräts |
| L 40 SC / C, L 42 SC / C | SIG-Modelle | Steuerung und Messwerte entsprechend Ausstattung und Firmware des Geräts |
| L 270 digi SC, L 271 digi SC / C | SIG-Modelle | Steuerung und Messwerte entsprechend Ausstattung und Firmware des Geräts |
| RS 200 SC / C, GL 80 SC / C | SIG-Modelle | Steuerung und Messwerte entsprechend Ausstattung und Firmware des Geräts |
| Spot One SC, Spot Duo SC, Spot Way SC, Spot Garden SC, XLED home 2 SC | SIG-Modelle | Steuerung und Messwerte entsprechend Ausstattung und Firmware des Geräts |
Entscheidend sind die tatsächlichen Modelle und die Firmware, nicht allein der Produktname. Das Gateway prüft diese automatisch. Sensorlose C-Varianten erhalten dadurch keine eigenen Sensoren.
Voraussetzungen für alle Einträge: gültiges Connect-Netzwerkbackup, Company ID 0x0563, unterstützte Modelle mit importierter AppKey-Bindung und Einhaltung der folgenden Grenzen. Proprietäre ältere Bluetooth-Firmware, unverbundene Varianten, reine Z-Wave-/KNX-/DALI-Produkte und reine Client-Taster sind nicht eingeschlossen. Die Mesh-Konvertierung kann unwiderruflich sein und die Kompatibilität mit älteren Geräten verändern; vorher die Steinel Connect FAQ prüfen.
Siehe Kompatibilitätsdetails und die Release-Beschreibung 2.0.0.
Jedes ausgewählte Gerät hat dieselbe Webkarte, ausklappbare Details und ein eigenes HA-Gerät. Funktionen werden anhand authentifizierter Antworten oder Sensordeskriptoren erkannt. Schreibzugriffe erfordern eine aktuelle Geräteantwort. Ein LC-/Sensor-Modell allein erzeugt nicht sämtliche möglichen Entitäten. Neue Funktionen werden gespeichert und durch einen kontrollierten Neustart synchronisiert, da native ESPHome-Entitäten beim Start registriert werden müssen. Langsame oder unerreichbare Geräte können mehrere Abfragezyklen benötigen.
Die Details zeigen Modell, Hersteller, Company-/Product-ID und Mesh-Modelle sowie Firmware- und Hardware-Revisionen, sofern das Gerät diese bereitstellt. Mesh-Adressen und hexadezimale Kennungen verwenden Kleinbuchstaben. UUID und Composition VID werden in den normalen Webdetails nicht angezeigt.
Die Hauptliste enthält Steinel-Geräte. Einträge ohne Herstellerkennung erscheinen separat unter Nicht erkannte Geräte; Geräte mit einer anderen bekannten Herstellerkennung werden ausgeblendet. Nach dem Import sind Cloud-Anmeldung und lokaler Sicherungsimport unter Netzwerk ändern oder erneut importieren eingeklappt und bleiben für spätere Konfigurationsänderungen verfügbar.
Gewählte Einstellungen erscheinen sofort in der Weboberfläche und Home Assistant und werden im Hintergrund bestätigt. Tatsächlicher Ausgangszustand und Messwerte stammen aus Geräteantworten, nicht aus Berechnungen. Nach einer Steuerungsänderung hat die Ausgangsabfrage Vorrang und wird ohne Warten auf den nächsten regulären Abfragezyklus wiederholt. NightmatIQ Plus stellt Betriebsart, Dämmerungsschwelle, Beleuchtungsstärke und tatsächlichen Ausgangszustand bereit, ohne Helligkeitssteuerung oder Bewegungsnachlaufzeit.
Die Webdiagnose zeigt während des Betriebs den freien internen RAM und den größten Block. Der Build-Bericht enthält separat die statische RAM- und Flash-Belegung der Firmware.
Für ein weiteres Gerät in dessen Details Gerätebericht erstellen wählen, das Modell vom Etikett eingeben und die Aufzeichnung starten. Beobachtungen wie ein abgedeckter Lichtsensor oder ausgelöste Bewegung lassen sich markieren. Bericht herunterladen beendet die Aufzeichnung und speichert eine JSON-Datei für ein Issue. Die Nur-Lese-Sitzung dauert bis zu drei Minuten und funktioniert auch für importierte Geräte ohne HA-Auswahl. Schlüssel, Zugangsdaten, private Namen, UUIDs und Netzwerkadressen werden ausgelassen. Enthalten sind Composition Data, SIG-/Herstellermodelle, Rohantworten, Fehler und Kennzeichnungen für gekürzte oder fehlende Daten. Das Gateway hält einen begrenzten RAM-Puffer; der Browser sammelt den Verlauf. Die Seite daher geöffnet lassen. Auch bei Verbindungsverlust lassen sich erfasste Daten herunterladen; ein unbestätigter Stopp oder fehlgeschlagener letzter Abruf wird im Bericht markiert.
In Automationen die Entität Available des jeweiligen Geräts prüfen. Ausgang und Automatik nutzen eine On/Off-Auswahl, deren Zustand nach Ablauf des jeweiligen Messwerts unbekannt wird. Befehle ohne aktuelle Geräteantwort oder bei einer bestätigten Abweichung der Composition Data werden abgewiesen. Sensordiagnosen speichern bis zu acht Eigenschaften getrennt nach Element, ohne Flash-Schreibzugriffe; sie sind im Web und als standardmäßig deaktivierte Textentität Sensor diagnostics verfügbar.
admin, das Kennwort 12345678. Ändern Sie es unmittelbar nach der WLAN-Einrichtung.12345678.| Pfad | Zweck |
|---|---|
esphome/steinel-c3.yaml |
Hauptkonfiguration der ESPHome-Firmware |
esphome/components/steinel_mesh/ |
Bluetooth Mesh, Gerätekatalog, Steinel-Cloud-Import und lokale Weboberfläche |
esphome/components/steinel_mesh/mesh_protocol.h |
Portable Protokoll- und Prüffunktionen |
esphome/components/steinel_mesh/steinel_nodes.cpp |
Geräteentitäten und Transaktionssteuerung |
scripts/ |
Installation, Validierung, USB, OTA und Release-Vorbereitung |
tests/ |
Protokoll-, Parser-, Transport- und Webtests |
home-assistant/ |
Optionales Home-Assistant-Paket und kompakter Steuerdialog |
docs/images/ |
Öffentliche README-Abbildungen |
docs/DEVICE_COMPATIBILITY.md |
Unterstützte Geräte und Kompatibilitätsdetails |
docs/releases/ |
Release-Beschreibungen |
demo/ |
Lokale Weboberflächen-Demo |
Die empfohlene Erstinstallation erfordert keine ESPHome-Kompilierung:
steinel-mesh-esp32-c3-gateway-vX.Y.Z-factory.bin von GitHub Releases herunter.-factory.bin-Datei.ESPHome Web verarbeitet die Datei lokal. -factory.bin ist für ein neues Board oder eine USB-Wiederherstellung bestimmt; spätere Browser-Aktualisierungen verwenden -ota.bin.
Erforderlich sind Linux oder macOS, Python 3.12–3.14, USB-Zugriff für die Erstinstallation und Netzwerkzugriff auf den ESP32-C3. Internetzugriff ist für den Cloud-Import erforderlich. Home Assistant ist optional.
Der Installer erstellt eine isolierte, reproduzierbare Umgebung mit unverändertem ESPHome 2026.7.3. Das installierte ESPHome-Paket wird nicht gepatcht.
sudo bash scripts/01_install_esphome.sh
bash scripts/03_validate_all.sh
Erstinstallation oder Wiederherstellung über USB:
sudo bash scripts/09_upload_usb.sh /dev/ttyACM0
Nach Möglichkeit sollte der stabile Pfad unter /dev/serial/by-id/ verwendet werden. Dasselbe kompilierte Abbild funktioniert auf allen unterstützten ESP32-C3-Boards.
Der bereitgestellte Installer verwendet apt unter Debian/Ubuntu. Unter macOS eine virtuelle Python-Umgebung mit ESPHome 2026.7.3 verwenden. Die Hilfsskripte akzeptieren auch ESPHOME als Pfad zur ausführbaren Datei.
bash scripts/00_self_test.sh
bash scripts/11_test_mesh.sh
esphome compile esphome/steinel-c3.yaml
bash scripts/10_prepare_release.sh
Protokoll- und Backup-Parser-Tests nutzen AddressSanitizer/UndefinedBehaviorSanitizer mit synthetischen Daten. Getestet werden abgeschnittene Pakete/JSON, Komposition, Adressüberschneidungen, Gruppenlimits, Schlüsselbindung und Antwortzuordnung.
Bei fremder exportierter ESP-IDF-Umgebung eine saubere Shell nutzen oder env -u IDF_PATH -u IDF_TOOLS_PATH esphome compile esphome/steinel-c3.yaml ausführen.
Webtests: cd tests && npm install && npm test. jsdom wird nur für Tests benötigt und ist nicht Teil der Firmware. Geprüft werden vier Sprachen, gespeicherte Einstellungen, dynamische Gerätekarten, unveränderte Checkboxen und API-Befehlswerte.
nightmatiq-gateway-XXXXXX und dem Kennwort 12345678..local endenden Hostnamen.Die WLAN-Konfiguration bleibt bei Firmware-Aktualisierungen erhalten.
admin / 12345678 an.Die anfängliche Geräteadresse ist optional und kann automatisch bestimmt werden. Der IV Index synchronisiert sich normalerweise mit dem Netz. Die Steinel-Zugangsdaten bleiben nur für die Einrichtungsanfragen im Browserformular.
Die Auswahl lässt sich jederzeit im selben Panel ändern. Nach Änderungen an Geräten oder Schlüsseln Mesh deaktivieren und neu importieren. Vorherige Auswahlen werden nach Geräteidentität möglichst beibehalten.
Die Oberfläche unterstützt Englisch, Polnisch, Deutsch und Französisch. Englisch ist voreingestellt; die Auswahl bleibt in diesem Browser gespeichert. Gerätenamen, Kontodaten und API-Befehlswerte werden nicht übersetzt.
Beim Öffnen der Gateway-Seite wird das neueste stabile GitHub-Release geprüft; CHECK FOR UPDATES wiederholt die Prüfung. Ist eine neuere Version verfügbar, lädt DOWNLOAD AND INSTALL sie über HTTPS, prüft Größe und SHA-256-Wert, installiert sie und startet das Gateway neu. Bei einem Fehler bleibt die bisherige Firmware aktiv.
Unter Manual firmware file kann eine -ota.bin-Datei manuell installiert werden. -factory.bin ist ausschließlich für die Erstinstallation über USB bestimmt. Ein separates OTA-Kennwort ist nicht erforderlich; es gilt das Administratorkennwort.
Die Kommandozeilen-Aktualisierung fragt ebenfalls nach dem Administratorkennwort:
bash scripts/05_upload_ota.sh DEVICE_IP_ODER_HOSTNAME
Ein OTA-Image über die Weboberfläche installieren, kein Factory-Image. WLAN, Administratorzugang und gespeicherte Mesh-Konfiguration bleiben erhalten.
Factory reset entfernt WLAN-, Administrator- und Bluetooth-Mesh-Einstellungen und stellt das werkseitige Konto sowie den Einrichtungs-Zugangspunkt wieder her, ohne die installierte Firmwareversion zu ändern.
Separate Geräte benötigen Home Assistant 2025.7 oder neuer, siehe ESPHome-Untergeräte.
Home Assistant erkennt das Gateway normalerweise automatisch über ESPHome. Andernfalls:
Jeder ausgewählte Mesh-Knoten erscheint als eigenes Gerät mit Steuerung und Diagnose. Die Gateway-Diagnose enthält seine aktuelle IP-Adresse.
Beim Deaktivieren von Mesh oder im Firmware-Update-Modus bleiben ausgewählte Geräte und ihre Entitäten in Home Assistant registriert, einschließlich ihrer Bereichszuordnung. Ohne Kommunikation werden Messwerte nicht verfügbar; die Geräte werden nicht entfernt.
HA kann Einträge abgewählter Geräte behalten; unbenutzte Einträge gegebenenfalls dort entfernen.
Die Dateien unter home-assistant/ ergänzen optional den abgebildeten kompakten Bereichskachel- und Steuerdialog:
steinel-nightmatiq-package.yaml in das Home-Assistant-Paketverzeichnis.steinel-nightmatiq-popup.js nach /config/www/./local/steinel-nightmatiq-popup.js?v=200 als JavaScript-Modul zu den Dashboard-Ressourcen hinzu.Das Modul erkennt sein Ziel automatisch, wenn genau ein passendes Gerät existiert. Bei mehreren Kandidaten window.steinelNightmatiqEntities im JavaScript und die Zuordnung target_entities in der Paket-YAML auf die gewünschten Entitäts-IDs setzen; auch Suffixe wie _2 prüfen. Der optionale Dialog ist für NightmatIQ Plus gedacht; andere Geräte nutzen die Standardsteuerung von Home Assistant. Das optionale Modul greift in die Home-Assistant-Bereichsstrategie ein und kann nach einer zukünftigen Frontend-Aktualisierung eine Anpassung benötigen.
Die Bereichsansicht zeigt eine Sensorzustandskachel, die den Steuerdialog öffnet. Zusätzliche Kacheln desselben Sensors werden in dieser Ansicht ausgeblendet, ohne Entitäten oder Automationen zu deaktivieren. Die automatische Zielerkennung prüft die Gateway-Identität statt nur ähnliche Entitätsnamen anderer Integrationen.
Beim Netzwerkimport leitet jedes Gateway seine Mesh-Adressrichtlinie aus der gewählten Installation und seiner Hardwareidentität ab. Durch den standardmäßigen MAC-Suffix erhalten mehrere Gateways eindeutige Host- und Zugangspunktnamen. Verwenden Sie für jedes Gateway ein eigenes Administratorkennwort.
Ist das konfigurierte WLAN 60 Sekunden lang nicht verfügbar, startet das Gateway seinen kennwortgeschützten Zugangspunkt erneut. Verbinden Sie sich mit dem werkseitigen AP-Kennwort 12345678 und ändern Sie die WLAN-Konfiguration im Captive Portal. Die lokale Seite bleibt durch das auf dem Gerät festgelegte Administratorkennwort geschützt.
Dieselbe Steinel-NightmatIQ-Plus-Funktion ist auch als optionale Integration im Projekt AR01V3 RF/IR, ESP-RC01 & Steinel NightmatIQ Plus Gateway verfügbar. Dieses Repository ist für eine kleine, dedizierte ESP32-C3-Installation vorgesehen.
Copyright (C) 2026 Bartosz Supcziński.
Dieses Projekt steht ausschließlich unter der GNU General Public License Version 3 (GPL-3.0-only). Siehe LICENSE.
envpl.steinel_mesh_gateway.Geben Sie bei einer Fehlermeldung Firmwareversion, ESPHome-Version, Neustartursache und relevante Protokolle an. Entfernen Sie zuvor Kennwörter, Schlüssel, Autorisierungs-Header, private Sicherungen und Netzwerkkennungen.
Dies ist ein unabhängiges Community-Projekt und kein offizielles Produkt von Steinel, ESPHome oder Home Assistant.