Files
Enelix-Utils/ShellyModul/README.md
T
dh 1baa63f23e
Tests / test (push) Successful in 46s
Shelly Modul generisch erweitern
2026-09-17 10:19:56 +00:00

4.2 KiB

Shelly Modul

Das Modul bindet Shelly-NG-Geräte der Generationen 2, 3 und 4 über MQTT/RPC in IP-Symcon ein. Es erkennt bekannte und zukünftige Komponenten dynamisch und benötigt keine Abhängigkeit zum Enelix EMS.

Voraussetzungen

  • IP-Symcon ab Version 8.0
  • ein eingerichteter IP-Symcon MQTT Server oder MQTT Client
  • ein Shelly Gen2+-Gerät mit aktivierter MQTT-Verbindung
  • aktivierte RPC-Statusmeldungen (rpc_ntf)
  • optional aktivierte vollständige Statusmeldungen (status_ntf)

Shelly-Geräte der ersten Generation mit shellies/...-Topics verwenden ein anderes Protokoll und werden von diesem Modul nicht verarbeitet.

Freie MQTT-Namen

MQTT-Client-ID, Brokername, Benutzername und Kennwort werden ausschliesslich im MQTT-Gateway beziehungsweise im Shelly konfiguriert. Das Modul wertet diese Werte nicht aus. Der Shelly-topic_prefix darf frei gewählt werden und auch mehrere Ebenen enthalten, zum Beispiel symcon oder gebaeude/etage/aktor.

Das Modul erkennt die Geräte-Topics anhand ihrer Endung:

Topic Verwendung
<Prefix>/online Online-Status
<Prefix>/events/rpc NotifyStatus und NotifyEvent
<Prefix>/status/<Komponente> vollständiger Komponentenstatus
<Prefix>/status vollständiger Gerätestatus
<Prefix>/announce Geräteinformationen

Ein optionaler Topic-Filter kann in den Moduleinstellungen aktiviert werden. Ohne aktivierten Filter werden alle gültigen Shelly-RPC-Topics verarbeitet.

Datenpunktauswahl

In der Konfiguration kann für jede Gruppe festgelegt werden, ob neue Variablen angelegt und vorhandene Variablen aktualisiert werden:

  • Online-Status und Geräteinformationen
  • Eingänge und Eingangsereignisse
  • Schaltausgänge
  • Rollladen und Beschattung
  • Licht, Dimmer und Farbe
  • Leistung, Spannung, Strom, Energie, Frequenz und Leistungsfaktor einzeln
  • Temperatur, Feuchte, Helligkeit und Batterie einzeln
  • weitere Zähler- und Sensorwerte
  • System- und Netzwerkdaten
  • unbekannte und zukünftige Komponenten

Systemdaten und unbekannte Datenpunkte sind standardmässig deaktiviert, damit nicht unerwartet sehr viele Variablen entstehen. Bereits angelegte Variablen werden beim Abwählen einer Gruppe nicht gelöscht.

Dynamische Variablen

Boolesche Werte werden als Boolean, Zähler und Zeitangaben als Integer, Messwerte als Float und Texte als String angelegt. Listen wie Fehlercodes oder Minutenwerte werden vollständig als JSON-String gespeichert. null wird ignoriert, da IP-Symcon keinen Null-Variablentyp besitzt.

Bekannte Datenpunkte erhalten lesbare Namen und passende Standardprofile, sofern das Profil in IP-Symcon vorhanden ist. Unbekannte Felder werden über ihren Komponenten- und Datenpfad stabil und kollisionsarm identifiziert.

Ausgänge schalten

Erkannte switch:<n>.output-Variablen bleiben bedienbar. Eine Bedienung veröffentlicht Switch.Set auf <Prefix>/rpc. Der Variablenwert wird erst mit der nächsten Gerätemeldung aktualisiert.

SHELLY_SetOutput($instanceID, 'symcon', 0, true);
SHELLY_SetOutput($instanceID, 'gebaeude/etage/aktor', 1, false);

Andere Komponenten werden derzeit vollständig eingelesen, aber nicht pauschal schreibbar gemacht. Ihre RPC-Befehle unterscheiden sich fachlich, etwa bei Cover-, Light-, RGB- oder Thermostat-Komponenten.

Einrichtung

  1. Instanz Shelly Modul aus Enelix Utils anlegen.
  2. Internen MQTT Server oder kompatiblen MQTT Client als Gateway verbinden.
  3. MQTT am Shelly aktivieren und RPC-Statusmeldungen einschalten.
  4. Gewünschte Datenpunktgruppen auswählen und Änderungen übernehmen.
  5. Am Gerät einen Statuswechsel auslösen.

Bei einem externen MQTT-Broker muss der MQTT Client die passenden Topics abonnieren. Zugangsdaten gehören niemals in die Modulkonfiguration.

Migration

Der bisherige Wert DeviceTopicPrefix = shelly bleibt erhalten, wird aber nur noch ausgewertet, wenn UseDeviceTopicFilter aktiviert ist. Bestehende Online-, Typ-, Input-, Output- und Temperaturvariablen werden weiterverwendet.

Diagnose

Mit Debug protokolliert die Instanz empfangene und gesendete MQTT-Pakete sowie ungültige JSON-Nutzdaten. Für die Fehlersuche sollte Debug nur vorübergehend aktiviert werden, weil Statusmeldungen umfangreich sein können.