Externe Integration - Shelly

Hallo zusammen :waving_hand:

Nach viel Zeit, die ich mit Shelly-Payloads verbracht habe, stelle ich euch eine externe Shelly-Integration für Gladys in Version 1.0.0 vor.

:package: Repository: GitHub - Terdious/gladys-shelly · GitHub
:open_book: Dokumentation: Französisch · Englisch


In zwei Worten

Relais, Steckdosen und Energiemesser von Shelly, zuerst lokal, ohne Konto und ohne Cloud. Eine typische Installation erfordert ein vollständig leeres Konfigurationsformular: Sie installieren, starten einen Scan und fügen Ihre Geräte hinzu.


Steuern Sie Ihre Shelly bereits über eine Brücke?

Pierre-Gilles hat gerade seine Position zu diesem Thema veröffentlicht — Erfahrungsbericht: Warum ich nun externe Integrationen empfehle — und ich teile sie voll und ganz.

Wenn Ihre Shelly heute über eine Zwischenschicht laufen, können Sie sie hierher umstellen. Was Sie konkret gewinnen: Sie müssen nichts mehr zwischen Gladys und Ihren Geräten warten, und vor allem 100 % von dem, was die Hardware kann, ohne einen Standard zu durchlaufen, der es zuerst ausdrücken muss. Ein Pro 3EM kommt mit seinen 24 Funktionen — die drei Phasen getrennt, Wirk- und Scheinleistung, Spannung, Stromstärke, Neutralstrom und die acht Energiezähler für verbrauchte und eingespeiste Energie.

Einziger Hinweis: Entfernen Sie sie vor der alten Brücke, bevor Sie sie hier hinzufügen, sonst sehen Sie jedes Shelly doppelt.


Was sie kann

Lokal und in Echtzeit. Die Integration spricht das RPC Gen2+-Protokoll direkt mit Ihren Geräten, über eine WebSocket, die das Gerät selbst versorgt: Ein Relais, das am Wandschalter umgeschaltet wird, meldet sich in etwa einer Sekunde zurück, nicht bei der nächsten Abfrage.

Alle Generationen. Gen2 und neuer (Plus, Pro, Mini, Gen3, Gen4) und Gen1 (Shelly 1, 1PM, 2.5, Plug S, EM, 3EM). Die Gen1 sprechen eine völlig unterschiedliche API — REST statt JSON-RPC, Basic statt Digest — aber sie sind auf dasselbe Modell normalisiert: Ein 3EM Gen1 bietet genau die gleichen 24 Funktionen wie ein Pro 3EM Gen2.

Drei Transportwege, vom besten bis zur letzten Möglichkeit: lokal → MQTT → Cloud. Jeder hat seinen Zweck:

  • Lokal ist der nominale Weg;
  • MQTT (optional) ist die zuverlässigste Methode, um eine große Installation zu finden. Das mDNS wird in kurzen Multicast-Bursts angekündigt, die leicht zu verpassen sind: Bei mir kam dieselbe Anlage mal mit 19, mal mit 27 Geräten zurück, wobei einige systematisch fehlten. Ein Shelly, das auf Ihren Broker veröffentlicht, kündigt sich ständig an — es wird entdeckt, meldet sich in Echtzeit und bleibt steuerbar, auch wenn es lokal nicht erreichbar ist;
  • Shelly Cloud (optional) übernimmt, wenn ein Gerät weder lokal noch über MQTT erreichbar ist.

Gladys zeigt den tatsächlich verwendeten Transport, Gerät für Gerät, mit dem abgestuften Badge und dem Grund, wenn es nicht der nominale Weg ist.

Das Gerätemodell wird abgeleitet, nicht hart codiert. Die Funktionen stammen von den Komponenten, die das Gerät tatsächlich in Shelly.GetStatus angibt, nie aus einer Modelltabelle. Ein Pro 1 erhält ein Ein-/Ausschalten, ein Pro 1PM erhält zusätzlich die Messtechnik — und ein Shelly, das nach diesem Code herauskommt, funktioniert trotzdem, solange es den dokumentierten Wortschatz spricht.

Abgedeckte Komponenten: switch, em, emdata, em1, em1data, pm1, temperature, humidity, devicepower.


Echtzeit und warum sie einstellbar ist

Gladys akzeptiert 300 Zustände pro Minute pro Integration. Ein einzelnes Pro 3EM sendet etwa eine Aktualisierung pro Sekunde auf ~25 Messungen: Alles so zu übertragen würde ~900 Zustände/Minute machen, dreimal das Limit.

Die Werte werden daher auf zwei Kanäle aufgeteilt:

  • ein Echtzeitkanal (5 s standardmäßig, einstellbar von 1 s bis 30 s), der alle Momentanleistungen — insgesamt, pro Phase, pro Relais — und alle Ein-/Aus-Zustände trägt;
  • der Rest (Spannungen, Ströme, Scheinleistungen, Energiezähler, Temperaturen) folgt dem Auffrischungsintervall, aber geliefert aus dem frischsten geschobenen Wert, ohne HTTP-Hin- und Rückweg.

Der Punkt, auf den ich Wert lege: Ihre Einstellung ist ein Mindestwert, keine Garantie. Die Kosten des Kanals hängen vom Park ab, nicht von der Einstellung — ein Wert, der sich nie ändert, kostet nichts. Die Integration misst also, was sie tatsächlich veröffentlicht und verlängert ihr eigenes Intervall, wenn der Park zu groß wird, und schreibt es in die Protokolle, um dann von selbst zurückzukehren. Ein Zustand, der von Gladys abgelehnt wird, wäre unsichtbar; ein verlangsamter Kanal nicht.

Und jede Minute sagt eine Zeile genau, wo Sie stehen:

Real-time lane: 178 state(s) published in the last minute (every 5s, from
5 WebSocket and 15 MQTT device(s)); 243/300 states/min of the Gladys budget used

Installation

In Gladys: Integrationen → Integration installieren → Shelly → Installieren, dann Entdeckung → Scannen.

Es gibt nichts auszufüllen für eine 100 % lokale Installation. Die Felder (zusätzliche Adressen, Gerätepasswort, MQTT-Broker, Cloud-Schlüssel) dienen nur, wenn Ihre Installation sie benötigt, und jedes wird direkt im Formular erklärt.

(Bild 4: die Konfigurationsseite, leeres Formular)

Erfordert Gladys ≥ 4.83.0. Wenn ein Gerät im Scan nicht gefunden wird, erklärt die Dokumentation, worauf zu achten ist — und MQTT zu konfigurieren ist fast immer die Antwort auf eine große Installation.


Getestet auf

Meine Installation: 19 Shelly, 10 x Pro 3EM, 1 x Pro 4PM, 2 x Pro 3, 1 x Plus 2PM, 2 x Plus Plug S und 3 x 3EM Gen1. Lokal, MQTT und beides gemischt.


Danke @pierre-gilles :folded_hands:

Dabei bin ich auf eine Grenze des Kerns gestoßen: publishDiscoveredDevices() erhielt einen PayloadTooLargeError bei mehr als einem Dutzend Geräten mit vielen Funktionen (ein Pro 3EM = 24 Funktionen ≈ 8,4 Ko). Pierre-Gilles hat das sehr schnell auf Kernseite korrigiert (PR #2732). Bis alle auf dem neuesten Stand sind, veröffentlicht die Integration den größten akzeptablen Teilmenge und protokolliert namentlich, was ausgeschlossen wurde, anstatt den Scan leise zu verlieren.


Die Zukunft

Noch nicht unterstützt, mangels Material zur Validierung: Rollläden (cover), variable Beleuchtung (light) und Eingänge (input). Der Code ist bereit, sie aufzunehmen, mir fehlen die Geräte: Wenn Sie welche haben und eine :dev-Bild testen möchten, sagen Sie es mir, ich bereite es Ihnen gerne vor — das ist der beste Weg, damit es schnell kommt.

Die Shelly BLU werden ebenfalls nicht unterstützt: Sie sprechen Bluetooth, und die Integration macht kein BLE.

Die Roadmap ist offen: Roadmap — Shelly external integration · Issue #1 · Terdious/gladys-shelly · GitHub

Fehler, Feedback, Payloads exotischer Geräte: Die Issues sind weit offen. Und wenn Sie testen, sagen Sie mir, wie es läuft — vor allem an Modellen, die ich nicht habe, und vor allem an Modellen, die ich nicht habe :slightly_smiling_face:

Bravo!! Super Integration

@McFlyPartages Du bist doch nicht schlecht in Shelly, oder? Das wird dir gefallen :slight_smile:

:new_button: Update: v1.0.0 → v1.1.0

Großes Update der Shelly-Integration: Sie holt die Neuheiten von Gladys und dem SDK nach, und die Roadmap macht einen großen Sprung bei den Rollläden, den Lichtern und den Eingängen!

:warning: Benötigt nun Gladys ≥ 5.1.0 (Widgets und Szenen).

:window: Rollläden (cover)

  • Öffnen / Stop / Schließen und Position über den Standardbefehl Rollladen von Gladys, plus Leistung, Spannung, Strom, Energie.
  • Die Position (100 % = offen, gleiche Konvention bei Shelly und Gladys) erscheint erst, nachdem der Rollladen in der Shelly-App kalibriert wurde.
  • Plus 2PM / Pro 2PM / Pro Dual Cover im Rollladenmodus und Shelly 2.5 Gen1 im Rolladenmodus.

:light_bulb: Lichter (light, rgb, rgbw, cct)

  • Ein-/Ausschalten, Helligkeit, Farbe, Farbtemperatur (2700 K → 6500 K).
  • Die Helligkeit ändern schaltet das Licht weder ein noch aus.
  • Gen1 auch: Dimmer, Bulb, Duo, RGBW2 im Farbmodus.

:radio_button: Eingänge und Tasten (input)

  • Schaltermodus → ein Ein-/Ausschalter-Eingang in Echtzeit.
  • Tastenmodus → eine Gladys-Taste + ein neuer Szenenauslöser bei jedem einfachen, doppelten, dreifachen oder langen Druck in Echtzeit (WebSocket oder MQTT). Ein Shelly i4 gibt endlich 4 nutzbare Tasten!
  • Zählmodus → ein Zähler.

:clapper_board: Szenen (Kategorie Integrationen)

  • Auslöser Taste auf einem Shelly gedrückt: Gerät, Eingang, Drucktyp.
  • Auslöser Erreichbarkeit eines Shelly: Ein Gerät wird unerreichbar (lokal, MQTT und Cloud), oder antwortet wieder.
  • Aktion Für eine Dauer einschalten: Es ist das Shelly selbst, das nach der Dauer ausschaltet (1 s bis 1 Tag). Ein Neustart von Gladys dazwischen lässt nie die Pumpe oder die Bewässerung laufen.
  • Aktion Ein Shelly neu starten.

:bar_chart: 4 Dashboard-Widgets

  • Shelly-Energiezähler: Leistungsanzeige in Echtzeit (unter Null bei Einspeisung), ein Kachel pro Phase, Energie, Kurve über den gewählten Zeitraum, Spannungen, Ströme, Leistungsfaktor, Frequenz.
  • Shelly-Schalter: Zustand und Leistung jedes Ausgangs eines Raums oder des gesamten Hauses, Alle einschalten / Alle ausschalten-Tasten.
  • Shelly-Rollläden: Eine Gruppe von Rollläden, Position jedes einzelnen, Öffnen / Stop / Schließen / Position-Tasten.
  • Shelly-Netzwerkgesundheit: Wie viele Geräte in Echtzeit, im Backup, unerreichbar, schwaches Wi-Fi, Firmware-Updates und der Anteil des Gladys-Budgets (300 Zustände/min), der verwendet wird.

(Bild: Die Widgets)

:stethoscope: Diagnose in der Konfiguration

  • Geräte-Diagnose: Ein vollständiger Textbericht (Transport, letzte Daten, Wi-Fi-Signal, Firmware, Ausgänge…) zum Einfügen in ein Issue.
  • Ein Gerät testen: Liest ein Gerät sofort, auch nicht in Gladys erstellt (geben Sie seine IP ein) — Identität, Antwortzeit, akzeptiertes oder nicht akzeptiertes Passwort, Echtzeit. Das ideale Werkzeug, um zu verstehen, warum ein Scan ein Gerät nicht findet.
  • Nur Lesen, nie Passwort, MAC- und IP-Adressen standardmäßig maskiert.

(Bild: Der Konfigurationsbildschirm mit den beiden Tasten)

:globe_showing_europe_africa: 4 Sprachen

  • Die gesamte Konfiguration, Nachrichten und Dokumentation auf Französisch, Englisch, Deutsch und Spanisch.
  • Neue Option Funktionsnamen für die Geräte, die Sie anschließend erstellen.

:locked: Sicherheit und Wartung

  • MQTT-Bibliothek aktualisiert (6 behobene Schwachstellen); die Verbindung zum Broker versucht weiterhin, sich nach einer Ablehnung erneut zu verbinden.
  • SDK 0.15, und jede Version hat nun ihre Versionshinweise auf GitHub, verlinkt von der Gladys-Überwachungsseite.

:counterclockwise_arrows_button: Um es zu nutzen

  1. Integrationen → Shelly → Aktualisieren.
  2. Registerkarte Entdeckung: Scannen, dann Aktualisieren auf jedem Gerät „Bereits hinzugefügt“, um die neuen Funktionen (Rollläden, Lichter, Eingänge) zu erhalten. Verlauf, Szenen und Dashboards werden beibehalten.
  3. Fügen Sie die Widgets aus der Dashboard-Bearbeitung hinzu.

:test_tube: Feedback sehr erwünscht

Rollläden, Lichter und Eingänge sind nach der offiziellen Shelly-Dokumentation geschrieben, aber ich habe nicht das Material, um sie zu validieren. Wenn Sie ein Plus 2PM im Rollladenmodus, ein Plus RGBW PM, ein Plus i4 / i4 Gen3, einen Dimmer oder ein 2.5 Gen1 im Rollladenmodus haben: Testen Sie es und sagen Sie mir, wie es funktioniert! Am einfachsten: Die Geräte-Diagnose-Taste, und Sie fügen den Bericht hier oder in einem Issue ein.

Vollständiger Changelog: https://github.com/Terdious/gladys-shelly/blob/master/CHANGELOG.md
Roadmap: Roadmap — Shelly external integration · Issue #1 · Terdious/gladys-shelly · GitHub

:new_button: v1.2.0 — Thermostate « Powered by Shelly »

Danke an @sylvainpelissier für seinen Beitrag: Die Integration unterstützt nun die virtuellen Komponenten der Geräte « Powered by Shelly ». Erstes betroffenes Gerät: der Fußbodenheizungs-Thermostat LinkedGo ST1820, der endlich seinen Sollwert (steuerbar, auf den Bereich und die Schrittweite des Geräts begrenzt), die Temperatur und die Luftfeuchtigkeit des Raums sowie seine Ein-/Ausschaltoptionen meldet.

:counterclockwise_arrows_button: Integrationen → Shelly → Aktualisieren, dann Entdeckung → Scannen.

Versionshinweise: Release v1.2.0 · Terdious/gladys-shelly · GitHub

:new_button: v1.3.0 — Gerätepasswörter und Gen1-Batteriesensoren

:key: Unterschiedliche Passwörter pro Gerät

Neues Feld Gerätepasswörter in den Einstellungen für Shelly-Geräte, die ein anderes Passwort als die anderen haben:

shellyplus1-a8032ab12345=passwort1; 10.5.0.42=passwort2

Das Gerät wird durch seine Shelly-ID, seine MAC-Adresse oder seine IP-Adresse bezeichnet. Ein Gerät, das sein Passwort ablehnt, zeigt einen orangen Punkt auf seinem Badge an, und der Konfigurationsbildschirm nennt es beim Namen: Keine Geräte mehr, die ohne Erklärung verschwinden. „Gerät testen“ zeigt auch an, welches Passwort versucht wurde.

:droplet: Gen1-Batteriesensoren

  • Flood → Wassersensor; Smoke → Rauchmelder.
  • Door/Window 1 und 2 → Öffnungssensor (offen / geschlossen) und Helligkeit.
  • Sie schlafen, und das ist normal: Ein H&T, ein Flood oder ein Door/Window im Schlafmodus bleibt so lange als „lokal“ angezeigt, wie es sich in den letzten 26 Stunden gemeldet hat. Keine falschen „nicht erreichbar“-Meldungen, kein ungewolltes Auslösen von „Shelly-Erreichbarkeit“.
  • :light_bulb: Konfigurieren Sie MQTT auf diesen Geräten: Jeder Messwert wird gesendet, sobald sie aufwachen.

:radio_button: Gen1-Tasten

Die Eingänge eines i3 (und die SW-Eingänge eines Shelly 1 / 2.5) melden jetzt einfache, doppelte, dreifache und lange Tastendrücke, wie bei den Gen2: Tastenfunktion und Trigger Taste eines Shelly gedrückt. Das funktioniert per MQTT (instantan) wie auch per Geräteauslesung, und ein Tastendruck, der auf beiden Seiten gesehen wird, wird nur einmal gezählt.

:counterclockwise_arrows_button: So nutzen Sie es

  1. Integrationen → Shelly → Aktualisieren.
  2. Entdeckung → Scannen, dann Aktualisieren auf den betroffenen Gen1-Geräten.

:test_tube: Feedback willkommen

Besonders, wenn Sie Gen1-Geräte mit Batterie (H&T, Flood, Door/Window, i3) oder eine Umgebung mit mehreren Passwörtern haben. Der Gerätediagnose-Button erstellt einen Bericht, der hier direkt eingefügt werden kann.

Versionshinweise: Release v1.3.0 · Terdious/gladys-shelly · GitHub

:new_button: v1.4.0 — Shelly Cloud Backup, RGBW-Kanal Weiß

:cloud: Shelly Cloud

  • Geräte, die vom Cloud-Dienst bedient werden, werden nun in einer einzigen Anfrage pro Zyklus für das gesamte Konto gelesen, anstatt einer Anfrage pro Gerät. Die Aufrufe sind auch um eine Sekunde beabstandet, die API-Grenze von Shelly Cloud: Selbst ein ganzer Park im Cloud-Backup überschreitet diese nicht mehr.
  • :bug: Korrektur: Ein Gen1-Gerät, das über die Cloud gelesen wird (z. B. ein nicht lokal erreichbares 3EM Gen1), gab keine Werte zurück. Es wird nun genau wie lokal gelesen.

:light_bulb: Beleuchtung

  • Ein RGBW-Ausgang (Plus RGBW PM, RGBW2 Gen1 im Farbmodus) zeigt endlich seine Weiß-LEDs, die von 0 bis 100 % einstellbar sind.
  • Ein Shelly, das das Profil wechselt (ein Plus 2PM, das von Relais zu Rollo wechselt, ein Dimmer, der zu einem Schalter wird), behielt seine alten, leeren Funktionen, ohne etwas zu sagen. Der Scan benennt sie nun in den Protokollen, und die Geräte-Diagnose listet sie auf: Es bleibt nur noch, sie in Gladys zu löschen.

:counterclockwise_arrows_button: Zum Nutzen

Integrationen → Shelly → Aktualisieren, dann Erkennung → Scannen und Aktualisieren an den RGBW-Geräten.

:test_tube: Feedback willkommen

Vor allem, wenn Sie den Shelly Cloud-Backup (insbesondere mit Gen1) oder eine Plus RGBW PM verwenden: Ich konnte diese beiden Punkte nicht an echtem Material testen. Die Geräte-Diagnose erzeugt einen Bericht, der hier eingefügt werden kann.

Versionshinweise: Release v1.4.0 · Terdious/gladys-shelly · GitHub