Hallo zusammen,
heute möchte ich euch eine Home-Assistant-Integration vorstellen, die aus einem ganz konkreten Problem in meinem eigenen Smart Home entstanden ist: Shelly Meter Proxy.
Warum ich diese Integration entwickelt habe
In meinem Smart Home verwende ich unter anderem einen Shelly Pro 3EM, um elektrische Leistungswerte zu erfassen und diese für weitere Systeme zur Verfügung zu stellen.
Grundsätzlich ist der Shelly Pro 3EM ein interessantes Gerät, insbesondere wenn es darum geht, Energieflüsse zu überwachen und Messwerte an andere Systeme weiterzureichen.
Bei mir gab es allerdings ein Problem: Die vom Shelly Pro 3EM ermittelten Leistungswerte waren nicht mehr plausibel beziehungsweise entsprachen nicht den tatsächlichen Verhältnissen.
Gerade bei der Steuerung von Batteriespeichern ist das natürlich problematisch. Wenn bereits die zugrunde liegenden Messwerte nicht stimmen, kann auch eine darauf aufbauende Regelung nicht zuverlässig arbeiten.
Gleichzeitig standen mir innerhalb von Home Assistant bereits alternative Messwerte zur Verfügung, unter anderem über meinen Tibber Pulse.
Damit stellte sich für mich eine naheliegende Frage:
Warum sollte ich weiterhin die fehlerhaften Leistungswerte des Shelly verwenden, wenn Home Assistant bereits andere Messdaten besitzt?
Die Schwierigkeit lag allerdings darin, dass bestimmte Geräte und Systeme – in meinem Fall insbesondere im Zusammenhang mit der Zendure-Batteriesteuerung – auf einen Shelly beziehungsweise dessen Schnittstellen ausgerichtet sind.
Eine beliebige Home-Assistant-Entität lässt sich dort nicht unbedingt als gleichwertige Messwertquelle verwenden.
Ich brauchte also eine Lösung, die zwei Anforderungen miteinander verbindet:
Einerseits sollten die tatsächlichen Leistungswerte aus Home Assistant stammen. Andererseits sollte das empfangende System weiterhin mit einem Shelly Pro 3EM kommunizieren können.
Aus dieser Überlegung entstand schließlich Shelly Meter Proxy.
Was ist Shelly Meter Proxy?
Shelly Meter Proxy ist eine benutzerdefinierte Integration für Home Assistant, die einen virtuellen Shelly Pro 3EM bereitstellt.
Anstatt die Leistungswerte direkt aus der physischen Hardware zu verwenden, stellt die Integration Messdaten aus frei wählbaren Home-Assistant-Entitäten zur Verfügung.
Die Besonderheit: Der virtuelle Shelly kann die Geräteidentität und die Cloud-Verbindungsinformationen eines vorhandenen, eigenen Shelly Pro 3EM übernehmen.
Damit verfolgt die Integration einen etwas anderen Ansatz als eine gewöhnliche Sensorintegration.
Sie liest nicht einfach Werte eines Shelly aus, sondern stellt selbst eine virtuelle Shelly-Instanz bereit.
Das Ziel ist, dass Anwendungen und Systeme, die eine Shelly-Pro-3EM-Schnittstelle erwarten, weiterhin mit einer entsprechenden Geräteinstanz kommunizieren können – nur dass die zugrunde liegenden Leistungswerte jetzt aus Home Assistant stammen.
Wie funktioniert das technisch?
Die Integration übernimmt bei der Ersteinrichtung relevante Geräteinformationen vom vorhandenen Shelly Pro 3EM.
Dazu gehören insbesondere die Geräteidentität sowie die für die Cloud-Kommunikation benötigten Informationen.
Anschließend werden innerhalb von Home Assistant die gewünschten Messwertquellen ausgewählt.
Die Integration stellt diese Werte über eine virtuelle Shelly-Gen2-Schnittstelle bereit und enthält darüber hinaus eine eigene Anbindung an die Shelly Cloud.
Vereinfacht dargestellt:
Tibber Pulse / Energiezähler → Home Assistant → Shelly Meter Proxy → virtuelle Shelly-Pro-3EM-Schnittstelle → angebundenes System
Dabei muss es sich selbstverständlich nicht um einen Tibber Pulse handeln.
Grundsätzlich kommen auch andere geeignete Home-Assistant-Sensoren infrage, sofern sie die erforderlichen Leistungswerte bereitstellen.
Welche Funktionen bietet die Integration?
Die erste veröffentlichte Version umfasst bereits einen umfangreichen Funktionsumfang:
-
Virtueller Shelly Pro 3EM: Nachbildung relevanter lokaler Shelly-Gen2-Schnittstellen.
-
Automatischer Geräteimport: Übernahme der Geräteidentität und Cloud-Informationen eines vorhandenen Shelly Pro 3EM.
-
Flexible Messwertquellen: Verwendung beliebiger geeigneter Leistungsentitäten aus Home Assistant.
-
Gesamtleistungsmessung: Ein einzelner Sensor kann als Quelle für die gesamte Wirkleistung verwendet werden.
-
Dreiphasenbetrieb: Alternativ können drei einzelne Sensoren für L1, L2 und L3 ausgewählt werden.
-
Phasenzuordnung: Gesamtleistung kann gleichmäßig auf drei Phasen verteilt oder ausschließlich L1 zugeordnet werden.
-
Vorzeichenumkehr: Anpassung der Werte an unterschiedliche Konventionen für Netzbezug und Einspeisung.
-
Messwertüberwachung: Erkennung von fehlenden beziehungsweise veralteten Quelldaten.
-
Shelly-Cloud-Anbindung: Eigene Cloud-Verbindung der virtuellen Instanz mit den importierten Geräteinformationen.
-
TLS-Sicherheit: Zertifikatsprüfung sowie Unterstützung eines explizit bestätigten SHA-256-Zertifikatsfingerprints.
-
Geführter Einrichtungsassistent: Konfiguration weitgehend über die Home-Assistant-Oberfläche.
-
Automatische Isolierung des Originalgeräts: Vorbereitung eines geschützten Wartungs-Access-Points und anschließende Trennung der regulären Netzwerkschnittstellen.
-
Wartungsmodus: Möglichkeit, die virtuelle Instanz für Arbeiten am Originalgerät anzuhalten.
-
Diagnose-Entitäten: Anzeige von Leistungswerten, Erreichbarkeit, Quellenstatus, Cloud-Verbindung und weiteren Informationen.
-
Cloud-Schalter: Shelly-Cloud-Verbindung der virtuellen Instanz direkt in Home Assistant ein- und ausschalten.
-
Mehrsprachigkeit: Vollständige Einrichtungsoberfläche in Deutsch und Englisch.
Ein Gesamtleistungssensor oder drei Phasensensoren?
Bei der Entwicklung war mir wichtig, die Integration nicht unnötig aufwendig zu gestalten.
Nicht jeder Nutzer verfügt über einen dreiphasigen Energiezähler mit drei separat verfügbaren Leistungswerten.
Viele Systeme stellen lediglich einen einzigen Wert für den gesamten Netzbezug beziehungsweise die gesamte Einspeisung bereit.
Deshalb gibt es zwei unterschiedliche Konfigurationsmöglichkeiten.
Variante 1: Ein Gesamtleistungssensor
Wer beispielsweise einen Tibber Pulse verwendet, kann eine geeignete Entität für die gesamte aktuelle Leistung auswählen.
Die Integration übernimmt diesen Wert und bildet daraus die virtuellen Leistungsdaten.
Dabei kann die Gesamtleistung gleichmäßig auf alle drei Phasen verteilt oder ausschließlich der ersten Phase zugeordnet werden.
Wichtig: Die Verteilung ist eine rechnerische Zuordnung und keine tatsächliche Messung der einzelnen Phasen.
Variante 2: Drei separate Phasensensoren
Sind innerhalb von Home Assistant drei separate Leistungswerte für L1, L2 und L3 vorhanden, können diese direkt zugeordnet werden.
Damit bleibt die phasenbezogene Information erhalten.
Was passiert mit dem ursprünglichen Shelly Pro 3EM?
Das war für mich einer der wichtigsten Punkte bei der Entwicklung.
Wenn die virtuelle Instanz dieselbe Geräteidentität verwendet wie das Original, dürfen natürlich nicht beide Geräte gleichzeitig aktiv mit der Shelly Cloud kommunizieren.
Deshalb enthält die Integration einen entsprechenden Übergabe- und Sicherheitsmechanismus.
Der Original-Shelly muss vor dem Betrieb der virtuellen Instanz ausgeschaltet oder zuverlässig vom regulären Netzwerk und Internet getrennt werden.
Hierfür habe ich auch eine geführte Funktion zur automatischen Netzwerkisolierung vorgesehen.
Dabei kann zunächst ein passwortgeschützter Access Point auf dem Originalgerät eingerichtet werden.
Nachdem dieser Wartungszugang überprüft wurde, können die WLAN-Client-Verbindungen und Ethernet deaktiviert werden.
Die gespeicherte Cloud-Konfiguration des Originalgeräts bleibt dabei unverändert.
So soll das ursprüngliche Gerät weiterhin für spätere Wartungszwecke erreichbar bleiben, ohne gleichzeitig im Heimnetz beziehungsweise in der Cloud aktiv zu sein.
Eine solche Netzwerkumstellung sollte sorgfältig durchgeführt werden. Der geschützte Access Point muss vor der Trennung tatsächlich erreichbar sein.
Einrichtung direkt über Home Assistant
Mir war wichtig, dass die Integration nicht nur technisch funktioniert, sondern auch von anderen Nutzern möglichst einfach eingerichtet werden kann.
Deshalb erfolgt die Konfiguration über den grafischen Einrichtungsassistenten von Home Assistant.
Zunächst wird die IP-Adresse des vorhandenen Shelly Pro 3EM eingegeben.
Die Integration versucht anschließend, die benötigten Geräteinformationen automatisch auszulesen.
Danach wird ausgewählt, welche Home-Assistant-Entitäten die Leistungswerte liefern sollen.
Abhängig von der Konfiguration folgt die Überprüfung der Cloud-Verbindung beziehungsweise des TLS-Zertifikats.
Abschließend erfolgt die kontrollierte Trennung des Originalgeräts und die Übergabe an den virtuellen Shelly.
Auch spätere Änderungen der Messwertquellen und Cloud-Einstellungen sind über die Konfiguration der Integration möglich.
Diagnose und Fehleranalyse
Gerade bei einer Integration, die zwischen mehreren Systemen vermittelt, ist es wichtig, den aktuellen Zustand nachvollziehen zu können.
Daher werden innerhalb von Home Assistant zusätzliche Diagnoseinformationen bereitgestellt.
Beispielsweise lässt sich überprüfen, ob Messwerte verfügbar sind, ob die virtuelle Instanz aktiv ist, ob der Original-Shelly noch erreichbar ist oder ob eine Cloud-WebSocket-Verbindung besteht.
Darüber hinaus stehen Informationen zum verwendeten Cloud-Server und zum TLS-Verbindungsstatus zur Verfügung.
Das hilft insbesondere bei der Ersteinrichtung und bei der Fehlersuche.
Für wen könnte Shelly Meter Proxy interessant sein?
Ich denke, dass die Integration vor allem für Nutzer interessant sein könnte, die bereits einen Shelly Pro 3EM besitzen, aber für die eigentliche Leistungsermittlung lieber andere Messwertquellen nutzen möchten.
Das können beispielsweise Nutzer eines Tibber Pulse, eines anderen intelligenten Energiezählers oder einer bereits bestehenden Home-Assistant-Messwerterfassung sein.
Ebenso könnte die Integration für Eigenbau-Lösungen interessant sein, bei denen ein vorhandenes System eine Shelly-Pro-3EM-Schnittstelle erwartet.
Allerdings möchte ich ausdrücklich darauf hinweisen, dass nicht automatisch die Kompatibilität mit jedem Drittanbietersystem gewährleistet ist.
Insbesondere das Zusammenspiel mit verschiedenen Batteriespeichersystemen und deren jeweiligen Cloud- beziehungsweise API-Anbindungen muss im Einzelfall überprüft werden.
Shelly Meter Proxy ersetzt außerdem keinen geeichten Energiezähler und erzeugt keine tatsächlich gemessenen Phasenwerte, wenn die ausgewählten Home-Assistant-Sensoren diese nicht liefern.
Open Source und GitHub
Ich habe mich entschieden, die Integration öffentlich auf GitHub bereitzustellen.
Damit können auch andere Nutzer die Integration ausprobieren, ihre Erfahrungen teilen und Verbesserungsvorschläge einbringen.
GitHub-Repository:
Die README.md sowie die RELEASE.md stehen in deutscher und englischer Sprache zur Verfügung.
Auch die Integration selbst unterstützt beide Sprachen.
Die erste veröffentlichte Version trägt die Versionsnummer:
20261023.233307
Die Installation ist manuell über den Ordner custom_components/shelly_meter_proxy möglich. Eine Aufnahme in den offiziellen Home-Assistant-Integrationskatalog ist damit nicht verbunden.
Aktueller Entwicklungsstand und Ausblick
Die erste Version stellt die grundlegenden Funktionen für den virtuellen Shelly Pro 3EM bereit, einschließlich Sensorzuordnung, Geräteimport, Cloud-Anbindung, Diagnose und geführter Geräteisolierung.
Die Entwicklung und die bisherigen Tests entstanden aus meiner eigenen praktischen Anwendung.
Natürlich können sich im Zusammenspiel mit unterschiedlichen Home-Assistant-Installationen, Shelly-Firmwareversionen und Drittanbietersystemen noch Besonderheiten zeigen.
Genau deshalb möchte ich das Projekt mit der Community teilen.
Besonders interessant wären für mich Rückmeldungen von Nutzern, die ebenfalls einen Tibber Pulse, einen alternativen Energiezähler oder einen Batteriespeicher einsetzen, der auf Shelly-Messwerte angewiesen ist.
Die Integration ist ein unabhängiges Community-Projekt und kein offizielles Produkt von Shelly oder Home Assistant.
Mein Fazit
Ursprünglich wollte ich eigentlich nur ein Problem lösen: Mein Shelly Pro 3EM lieferte keine vernünftigen Leistungswerte mehr, obwohl die benötigten Informationen bereits in Home Assistant vorhanden waren.
Daraus ist inzwischen eine eigenständige Home-Assistant-Integration entstanden.
Für mich zeigt dieses Projekt sehr schön, welche Möglichkeiten Home Assistant bietet: Messdaten müssen nicht zwangsläufig aus genau dem Gerät stammen, dessen Schnittstelle ein anderes System erwartet.
Manchmal braucht es lediglich eine passende Verbindung zwischen den vorhandenen Komponenten.
Und genau diese Verbindung möchte ich mit Shelly Meter Proxy bereitstellen.
Ich freue mich auf eure Meinungen, Erfahrungen, Fragen und natürlich auch auf konstruktive Kritik.
Vielleicht hat ja der eine oder andere von euch ein ähnliches Problem – oder eine interessante Idee, wie sich die Integration noch erweitern lässt.
Viele Grüße!