Modul Shelly

Aus FHEMWiki
Version vom 22. August 2023, 18:49 Uhr von Starkstrombastler (Diskussion | Beiträge) (Abschnitt Actions/Webhooks eingefügt)
Shelly
Zweck / Funktion
Das Modul 36_Shelly.pm stellt ein Interface zur Bedienung von Shelly Devices zur Verfügung
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Thema
Support (Forum) Sonstige Systeme
Modulname 36_Shelly.pm
Ersteller Prof. Dr. Peter A. Henning
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Auf dieser Seite werden die Aktoren des bulgarischen Herstellers Allterco Robotics beschrieben ((Markenname Shelly) sowie deren Ansteuerung mit FHEM und aufgetretene Probleme. Für Supportanfragen bitte diesen Forenthread verwenden.


Clock - Under Construction.svg An dieser Seite wird momentan noch gearbeitet.


Achtung: Diese Seite ist teilweise veraltet, insbesondere unterstützt das Modul weitere Aktoren. Bitte Commandref lesen - diese Seite ist in Überarbeitung

Es handelt sich um IP-basierte Schalt- und Dimmaktoren, die auf verschiedene Weise angesteuert werden können

  • über die Web-Oberfläche des eingebauten Mikro-Webservers,
  • über eine proprietäre App des Herstellers (Achtung, Cloud!),
  • über das hier beschriebene FHEM-Modul 36_Shelly.pm
  • über MQTT

Ein Teil der Aktoren verfügt über eine eingebaute Leistungsmessung.

Geräteübersicht

Modell Typ Schaltkanäle Dimmkanäle Messkanäle Bemerkungen
Shelly1 Schalter 1
Shelly1PM Schalter mit Leistungsmessung 1 1
ShellyPlug, ShellyPlugS Schalter mit Leistungsmessung 1 1
ShellyEM Leistungsmessung 1 2
Shelly2 Schalter/Rollladenaktor 2/1 1
Shelly2.5 Schalter/Rollladenaktor 2/1 2
Shelly4Pro Schalter 4 4
ShellyRGBW Dimmer 4 1
ShellyDimmer Dimmer 1 1

Einbindung in FHEM

  • Schließen Sie den Aktor nach Vorschrift an
  • Suchen Sie mit einem WLAN-fähigen Gerät (Laptop oder Smartphone) nach dem internen Access Point, der durch den Aktor erzeugt wird. Typischerweise hat dieser eine SSID ähnlich wie
shelly1-..., shellyswitch-..., shelly4pro-..., 
  • Verbinden Sie Ihr Gerät mit diesem Access Point. Typischerweise bekommt Ihr Gerät dabei die IP-Adresse 192.168.33.2 zugewiesen.
  • Im Browser dieses Gerätes einfach die IP-Adresse 192.168.33.1 aufrufen - das ist der Shelly selbst, in dieser Web-Oberfläche kann man alles konfigurieren.
    • Internen Access Point abschalten
    • Shelly ins häusliche WLAN anmelden. Mit fester IP-Adresse <shelly-ip> natürlich...
    • Testen: Ihr Gerät wieder mit dem häuslichen WLAN verbinden, und im Browser die Adresse <shelly-ip> aufrufen
  • In FHEM definieren
define myShelly Shelly <shelly-ip>
  • Auf der Detailseite des Devices muss unbedingt noch das Attribut model gesetzt werden:
attr myShelly model shellyrgbw|shellydimmer|shelly2.5|generic|shelly2|shellyem|shelly4|shellyplug|shelly1|shellybulb|shelly1pm|shellyuni

Falls es sich um einen Shelly2 oder 2.5 handelt, muss ferner das Attribut mode auf "roller" oder "relay" gesetzt werden. Mit diesem Modul können alle Daten übertragen und (prinzipiell) alle Konfigurationsänderungen durchgeführt werden, außerdem ist es auf einfachste Weise zu installieren. Das Modul pollt im per Attribut interval einstellbaren Abstand zyklisch den Aktor auf Statusänderungen (Wert 0 => kein Polling). Damit der Aktor im Stande ist, irgendwelche Zustandsänderungen von sich aus an FHEM zu melden, müssen diese als REST-Befehle (also URL-Aufrufe, für Nicht-Experten) in der Konfigurationsoberfläche des Shelly-Aktors eingetragen werden. Siehe CommandRef.

Zum Betrieb ist ferner noch zu bemerken, dass das Modul zwar meldet, ob ein Firmware-Update nötig ist - ausgelöst werden muss dieses aber über die Web-Oberfläche des Shelly selber.

Actions/Webhooks (nur Testversion)

Ab Shelly Firmware 1.5.0 werden Actions unterstützt. Damit besteht die Möglichkeit, dass ein Shelly bei Eintreten bestiimmter Ereignisse von sich aus Meldungen an andere Shellies und/oder übergeordnete Systeme wie Fhem absetzt. Dies ist nützlich, um Statusänderungen, die z.B. durch lokal betätigte Tasten entstehen, direkt an FHEM zu übermitteln.

Nachfolgende Beispiele zeigen den Code der im Shelly unter URL einzutragen ist:

Ausgang (Relais) eines Shelly1 schaltet ein: http://<FHEM-IP>:<Port>/fhem?XHR=1&cmd=set%20<name>%20out_on

hierbei sind: <FHEM-IP> die IP-Adresse des Servers auf dem FHEM läuft

<Port> die Port-Nummer

<name> der Name des FHEM-Devices

%20 stellt ein Leerzeichen dar

Beispiel 2: Eingang eines Shelly2 wird betätigt:

http://<FHEM-IP>:<Port>/fhem?XHR=1&cmd=set%20<name>%20button_on%20<ch>

<ch> die Nummer des Eingangs, z.B. 0 oder 1

Beispiel 3: Wirkleistung eines ShellyPro3EM: http://<FHEM-IP>:<Port>/fhem?XHR=1&fwcsrf=csrf_368985985592099&cmd=set%20Y173%20Active_Power_$phase%20$active_power

fwcsrf=csrf_368985985592099 das CSRF-Token (FHEMWeb)

$phase wird vom Shelly durch a, b oder c ersetzt

$active_power wird vom Shelly durch die aktuelle Wirkleistung ersetzt

Enpoints

In vorstehenden Beispielen stellt der Teil set%20<name>%20<cmd> den Endpoint dar, d.h. dies ist der Befehl der vom Shelly-Device in FHEM verarbeitet werden muss.

Liste der Befehle der Set-Endpoints:
<cmd> Wert Erläuterung
out_on Ausgang ein
out_off Ausgang aus
button_on Eingang ein
button_off Eingang aus
input_on Eingang ein
input_off Eingan aus
single_push einfacher, kurzer Tastendruck
long_push langer Tastendruck
double_push zweifacher Tastendruck
triple_push dreifacher Tastendruck
short_long_push Tastersequenz lang-kurz
long_short_push Tastersequenz kurz-lang
stopped Rollo angehalten
opening Rollo wird geöffnet
closing Rollo wird geschlossen
is_open Rollo offen (in oberer Endlage)
is_closed Rollo geschlossen (in unterer Endlage)
temperature* Temperatur
humidity* Luftfeuchtigkeit
voltage_over Spannung unterschreitet eingestellten Grenzwert
voltage_under Spannung überschreitet eingestellten Grenzwert
Active_Power_$phase $active_power Wirkleistung
Voltage_$phase $voltage Spannung
Current_$phase $current Strom

Bei Eintreffen eines Set-Endpoints wird im Shelly-Device ein Reading entsprechend gesetzt. Damit kann das Shelly-Ereigniss z.B. mit einem notify ausgewertet werden.

Get-Endpoint

Eine besondere Form stellt der Get-Endpoint dar, mit dem das Shelly-Device in Fhem aufgefordert wird, den Status des Shelly zu holen:

Beispiel: http://<FHEM-IP>:<Port>/fhem?XHR=1&cmd=get%20<name>%20status


Attribut webhook (derzeit nur Gen2)

Durch Setzten des Attributes webhook werden auf dem Shelly einige Webhooks angelegt (auf der Shelly Oberfläche unter Actions zu sehen).

Das Reading webhook_cnt zeigt die Anzahl der auf dem Shelly hinterlegten Webhooks und webhooks_ver den Versionszähler des Shelly.

Eine Übersicht aller Actions/Webhooks eines Shelly bekommt man für Gen2-Geräte mit:

http://<ip-des-Shelly>/rpc/Webhook.List


MQTT

MQTT (Message Queue Telemetry Transport) ist ein nachrichtenbasiertes Protokoll, bei dem Geräte (Devices) nicht direkt miteinander, sondern mit einem zentralen MQTT-Server (in alter Nomenklatur Broker genannt) kommunizieren. Eine kurze Einführung in MQTT findet man auf der Seite MQTT Einführung. Mit entsprechend gesetzten Attributen lassen sich die Shelly-Aktoren auch steuern (Praxisbeispiele zu den MQTT2-Modulen), für Anfänger ist das allerdings nicht unbedingt zu empfehlen.