Modul Shelly: Unterschied zwischen den Versionen

Aus FHEMWiki
(Abschnitt Actions/Webhooks eingefügt)
K (→‎Einbindung in FHEM: XHR=1 aus Command entfernt)
 
(18 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Todo|'''Achtung: Diese Seite ist teilweise veraltet, insbesondere unterstützt das Modul weitere Aktoren. Bitte Commandref lesen - diese Seite ist in Überarbeitung'''}}
{{Infobox Modul
{{Infobox Modul
|ModPurpose=Das Modul 36_Shelly.pm stellt ein Interface zur Bedienung von Shelly Devices zur Verfügung
|ModPurpose=Das Modul stellt ein Interface zur Bedienung von Shelly Devices zur Verfügung
|ModType=d
|ModType=d
<!-- |ModCategory= (noch?) nicht verwendet -->
|ModCmdRef=Shelly
|ModCmdRef=Shelly
|ModForumArea=Sonstige Systeme
|ModForumArea=Sonstige Systeme
|ModFTopic=118446
|ModFTopic=118446
|ModTechName=36_Shelly.pm
|ModTechName=36_Shelly.pm
|ModOwner=Prof. Dr. Peter A. Henning
|ModOwner=Starkstrombastler ({{Link2FU|3884|Forum}}/[[Benutzer Diskussion:Starkstrombastler|Wiki]])
}}
}}
Auf dieser Seite werden die Aktoren des bulgarischen Herstellers Allterco Robotics beschrieben ((Markenname Shelly) sowie deren Ansteuerung mit FHEM und aufgetretene Probleme.  
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 ''{{Link2Forum|Topic=118446.0|LinkText=diesen Forenthread}}'' verwenden.
{{Randnotiz|RNTyp=r|RNText='''Achtung''': Einige der auf dieser Seite erwähnten Geräte und Funktionen sind derzeit nur mit {{Link2Forum|Topic=111905|Message=1285498|LinkText=dieser Testversion}} verfügbar, die manuell installiert werden muss!
{{Baustelle}}
* Für die Weiterentwicklung des Moduls wurde im Forum ein neues Thema '''({{Link2Forum|Topic=137222|LinkText=Entwicklungs-Thread Modul 36_Shelly.pm}})''' aufgemacht.}}
'''Achtung: Diese Seite ist teilweise veraltet, insbesondere unterstützt das Modul weitere Aktoren. Bitte Commandref lesen - diese Seite ist in Überarbeitung'''
Bei den Shelly-Geräten handelt es sich um IP-basierte Schalt- und Dimmaktoren, die auf verschiedene Weise angesteuert werden können  
 
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 die Web-Oberfläche des eingebauten Mikro-Webservers,
*über eine proprietäre App des Herstellers (Achtung, Cloud!),
*über eine proprietäre App des Herstellers (Achtung, Cloud!),
*über das hier beschriebene FHEM-Modul 36_Shelly.pm
*über das hier beschriebene FHEM-Modul 36_Shelly.pm
*über MQTT
*über MQTT
Ein Teil der Aktoren verfügt über eine eingebaute Leistungsmessung.
Ein Teil der Aktoren verfügt über eine eingebaute Leistungsmessung (siehe Spalte Messkanäle in unten stehender Tabelle).


== Geräteübersicht ==
==Geräteübersicht==
{| class="wikitable mw-datatable"
Übersicht der IP-basierten Produktreihen
! style="width:50px" |Modell
{| class="wikitable mw:datatable"
! style="width:50px" |Typ
! style="width:15px" |ID
! style="width:20px" |Schaltkanäle
! style="width:100px" | Produktreihe
! style="width:20px" |Dimmkanäle
! style="width:225px" |gemeinsame Merkmale
! style="width:20px" |Messkanäle
|-
! style="width:650px" |Bemerkungen
|SH
|erste Generation
|COIOT (Nutzung mit Shelly-Monitor), kein Bluetooth
|-
|SN
|Shelly Plus
Shelly Plus mini
|
|-
|SP
|Shelly Pro
|Montage auf Hutschiene, zusätzlicher Ethernet-Port (RJ45)
|-
|S3
|Shelly Gen3
Shelly Gen3 mini
|proprietärer Prozessor
|-
|SA
|Control Panel
|Android-System
|}
ID: erste beiden Stellen der Modell-ID
 
 
Liste der aktuell unterstützten Geräte
(hier nicht aufgeführte Geräte der ersten Generation können zusammen mit dem Shelly-Monitor genutzt werden):
{| class="wikitable sortable"
! data-sort-type="text" style="width:150px" |Modell
! data-sort-type="text" style="width:75px" |Typ
! data-sort-type="number" style="width:20px;text-align:center;" |Schalt- kanäle
! data-sort-type="number" style="width:20px;text-align:center;" |Dimm- kanäle
! data-sort-type="number" style="width:20px;text-align:center;" |Mess- kanäle
! data-sort-type="number" style="width:20px;text-align:center;" |Digital Eingänge
! |Bemerkungen
|-
! colspan="7" |'''Gen 1'''
|-
|Shelly 1
|Schalter
|1
|
|
|1
|
|
|-
|Shelly 1PM
|Schalter
|1
|
|1
|1
|
|
|-
|-
|Shelly1
|Shelly 1L
|Schalter
|Schalter
| 1
|
|1
|1
|  
| 1
|
|
|-
| rowspan="2" |Shelly 2
| Schalter
|2
|
|1
|2
|
|
|-
|Rollladenaktor
|1
|
|1
|2
|
|-
| rowspan="2" |Shelly 2.5
|Schalter
| 2
|
|2
|2
|
|
|-
|-
|Shelly1PM
|Rollladenaktor
|Schalter mit Leistungsmessung
|1
|1
|
|
|1  
|1
|2
|
|-
|Shelly 4Pro
|Schalter
|4
|
|4
|4
|
|-
|Shelly i3
| Digitale Eingänge
|
|
|
|3
|
|-
|-
|ShellyPlug, ShellyPlugS
|Shelly EM
|Schalter mit Leistungsmessung
|Leistungsmessung
|1
|1
|
|
|1
|2
|
|
|-
|-
|ShellyEM
|'''[[Shelly 3EM]]'''
|Leistungsmessung
|Leistungsmessung
|1
|1
|
|
|2
|3
|
|
|-
|-
|Shelly2
|'''[[Shelly Uni]]'''
|Schalter/Rollladenaktor
|Universal
|2/1
|2
|
|
|
|*)
|1-Wire, 2 potentialfreie Relaisausgänge
Analogeingänge
|-
|Shelly Plug
Shelly Plug S
|Schaltsteckdose
|1
|
|1
|
|1 Taster
|-
| rowspan="2" |Shelly RGBW2
|Dimmer
|
|4
|4
|1
|4-fach Aktor
|-
|Dimmer
|
|1
| 1
|1
|1
|RGBW Controller
|-
|-
|Shelly2.5
|Shelly Dimmer2
|Schalter/Rollladenaktor
|Dimmer
|2/1
|
|
| 1
|1
|2
|2
|
|-
|-
|Shelly4Pro
|Shelly Duo
|Leuchte
|
|1
|
|
|E27 oder GU10 Fassung
|-
|Shelly Vintage
|Leuchte
|
|1
|
|
|
|-
|Shelly Bulb
|Leuchte
|
|1
|
|
|Modi: weiß oder farbe
|-
! colspan="7" |'''Shelly Plus'''
|-
|Shelly Plus 1
 
|Schalter  
|Schalter  
|1
|
|
|1
|
|-
|'''[[Shelly Plus 1PM]]'''
|Schalter
|1
|
|1
|1
|
|-
| rowspan="2" |'''[[Shelly Plus 2PM]]'''
| Schalter
|2
|
|2
|2
|-
|Rollladenaktor
|1
|
| 1
|2
|-
|Shelly Plus i4
|Digitale Eingänge
|
|
|
| 4
|AC und DC - Variante
|-
| Shelly Plus Plug S
Shelly Plus Plug IT
Shelly Plus Plug UK
Shelly Plus Plug US
|Schaltsteckdose
|1
|
|1
|
|1 Taster;
Varianten V1, V2
|-
|Shelly Plus Uni
|Universal
| 2
|
|
|*)
|1-Wire, 2 potentialfreie Relaisausgänge
Analogeingänge; Neu in 2024
|-
|Shelly Plus 0-10V Dimmer
|Dimmer
|
|1
|1
|2
|0-10 V DC Ausgang
|-
| rowspan="2" |Shelly Plus RGBW
|Dimmer
|
|4
|4
|4
|4
|4-fach Aktor
|-
|Dimmer
|
|
|1
|1
|1
|RGBW Controller
|-
! colspan="7" | '''Shelly Plus Mini'''
|-
|Shelly Plus 1 Mini
|Schalter
|1
|
|
|1
|
|-
|Shelly Plus 1PM Mini
|Schalter
|1
|
|1
|1
|
|-
|Shelly PM Mini
|Leistungsmessung
|
|
| 1
|
|
|-
! colspan="7" |'''Shelly Pro'''
|-
|Shelly Pro 1
|Schalter
|1
|
|
|2
|
|-
|Shelly Pro 1PM
|Schalter
|1
|
|1
|2
|
|-
|Shelly Pro 2
| Schalter
|2
|
|
| 2
|
|-
|Shelly Pro 2PM
|Schalter
|2
|
|2
|2
|
|-
|Shelly Pro Dual
|Rollladenaktor
|4
|
|
|4
|2 Rolladenaktoren
|-
|Shelly Pro Dimmer 1PM
|Dimmer
|
|1
|1
|2
|
|-
|Shelly Pro Dimmer 2PM
|Dimmer
|
| 2
|2
|4
|4
|
|-
|Shelly Pro 3
|Schalter
|3
|
|
|3
|
|-
|Shelly Pro 3EM
|Leistungsmessung
|
|
|3
|
|1 Schaltkanal mit Addon
|-
|Shelly Pro EM50
|Leistungsmessung
|
|
|
|
|
|-
|-
|ShellyRGBW
|Shelly Pro 4PM
|Dimmer
|Schalter
|4
|
|
|4
|4
|4
|
|-
! colspan="7" |'''Shelly Gen3'''
|-
| Shelly 1 Gen3
|Schalter
|1
|1
|
|
|1
|
|-
|Shelly 1PM Gen3
|Schalter
|1
|
|1
|1
|
|-
|-
|ShellyDimmer
|Shelly i4 Gen3
|Dimmer  
|Digitale Eingänge
|
|
|
| 4
|
|-
|Shelly Dimmer 0/1-10V Gen3
|Dimmer
|
| 1
| 1
|2
|0-10V DC oder
1-10V DC Ausgang
|-
! colspan="7" |'''Shelly Gen3 Mini'''
|-
|Shelly 1 Mini Gen3
|Schalter
|1
|
|
|1
|
|-
|Shelly 1PM Mini Gen3
|Schalter
|1
|
|
|1
|1
|1
|1
|
|-
|Shelly PM Mini Gen3
|Leistungsmessung
|
|
|1
|
|
|-
! colspan="7" | '''Control Panels'''
|-
|Shelly Wall Display
| Control Panel
| 1
|
|
| 1
|
|}
|}


== Einbindung in FHEM ==
==Einbindung in FHEM==
*Schließen Sie den Aktor nach Vorschrift an
Vorgehensweise zur Einbindung eines Shelly-Gerätes in FHEM:
*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
*Aktor nach Vorschrift anschließen
shelly1-..., shellyswitch-..., shelly4pro-...,  
*mit einem WLAN-fähigen Gerät (Laptop, Smartphone, Tablet...; im Folgenden als '''Laptop''' bezeichnet) nach dem internen Access Point suchen, der durch das Shelly-Gerät erzeugt wird; typischerweise hat es eine SSID ähnlich wie
*Verbinden Sie Ihr Gerät mit diesem Access Point. Typischerweise bekommt Ihr Gerät dabei die IP-Adresse 192.168.33.2 zugewiesen.  
:<code>shelly1-..., shellyswitch-..., shelly4pro-..., </code>
*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.
*'''Laptop''' mit diesem Access Point verbinden; typischerweise bekommt das Gerät dabei die IP-Adresse 192.168.33.2 zugewiesen.
**Internen Access Point abschalten
*im Browser des '''Laptops''' die IP-Adresse 192.168.33.1 aufrufen - das ist der Shelly selbst; in der damit angezeigten Weboberfläche kann das Shelly-Gerät konfiguriert werden
**Shelly ins häusliche WLAN anmelden. Mit fester IP-Adresse <shelly-ip> natürlich...
**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
**Internen Access Point abschalten (kann auch nach dem nächsten Schritt oder noch später erfolgen)
*In FHEM definieren
**Testen: '''Laptop''' wieder mit dem häuslichen WLAN verbinden, und im Browser die Adresse <shelly-ip> aufrufen
define myShelly Shelly <shelly-ip>
*In FHEM definieren  
*Auf der Detailseite des Devices muss unbedingt noch das Attribut <code>model</code> gesetzt werden:
:<code>define myShelly Shelly <shelly-ip></code>  
attr myShelly model shellyrgbw|shellydimmer|shelly2.5|generic|shelly2|shellyem|shelly4|shellyplug|shelly1|shellybulb|shelly1pm|shellyuni
*Das Modul setzt bei bekannten Geräten das Attribut <code>model</code> automatisch. Bei nicht unterstützten Geräten wird das Attribut auf den Wert <code>generic</code> gesetzt. In diesen Fällen kann das Attribut <code>model</code> auf der Detailseite des Devices manuell gesetzt werden:
Falls es sich um einen Shelly2 oder 2.5 handelt, muss ferner das Attribut <code>mode</code> 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 <code>interval</code> 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.
:<code> attr myShelly model shellyrgbw|shellydimmer|shelly2.5|shelly2|shellyem|shelly3em|shelly4|shellyplug|shelly1|shellybulb|shelly1pm|shellyuni|generic</code>


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.
Falls es sich um einen Shelly2 oder 2.5 handelt, muss ferner das Attribut <code>mode</code> 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 <code>interval</code> 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) in der Konfigurationsoberfläche des Shelly-Aktors eingetragen werden. Siehe CommandRef.


=== Actions/Webhooks (nur Testversion) ===
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.
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:
===Actions/Webhooks (nur Testversion)===
Ab Shelly Firmware 1.5.0 werden Actions unterstützt. Damit besteht die Möglichkeit, dass ein Shelly bei Eintreten bestimmter 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.


Ausgang (Relais) eines Shelly1 schaltet ein:     <code>http://<FHEM-IP>:<Port>/fhem?XHR=1&cmd=set%20<name>%20out_on</code>
Nachfolgende Beispiele zeigen den Code, der im Shelly unter URL einzutragen ist:


hierbei sind: <code><FHEM-IP></code> die IP-Adresse des Servers auf dem FHEM läuft
Ausgang (Relais) eines Shelly1 schaltet ein:     
 
:<code>http://<FHEM-IP>:<Port>/fhem?cmd=set%20<name>%20out_on</code>
<code><Port></code>   die Port-Nummer
hierbei sind:
 
:<code><FHEM-IP></code> die IP-Adresse des Servers auf dem FHEM läuft
<code><name></code> der Name des FHEM-Devices  
:<code><Port></code> die Port-Nummer
 
:<code><name></code> der Name des FHEM-Devices
<code>%20</code>       stellt ein Leerzeichen dar
:<code>%20</code>   stellt ein Leerzeichen dar


Beispiel 2: Eingang eines Shelly2 wird betätigt:
Beispiel 2: Eingang eines Shelly2 wird betätigt:
<syntaxhighlight lang="html">http://<FHEM-IP>:<Port>/fhem?cmd=set%20<name>%20input_on%20<ch></syntaxhighlight>
:<code><ch></code>  die Nummer des Schaltkanals (Nummer des Eingangs), z.B. <code>0</code> oder <code>1</code>


<code>http://<FHEM-IP>:<Port>/fhem?XHR=1&cmd=set%20<name>%20button_on%20<ch></code>
Beispiel 3: Eingang1 eines ShellyDimmers wird betätigt:
 
<syntaxhighlight lang="html">http://&#x3C;FHEM-IP&#x3E;:&#x3C;Port&#x3E;/fhem?cmd=set%20&#x3C;name&#x3E;%20short_push<nowiki/>%20<inp></syntaxhighlight>
<code><ch></code>         die Nummer des Eingangs, z.B. <code>0</code> oder <code>1</code> 
:<code><nowiki><inp></nowiki></code> Nummer des Eingangs, 0 oder 1 (ShellyDimmer verfügen je Schaltkanal über zwei Eingänge)
 
Beispiel 3: Wirkleistung eines ShellyPro3EM:  <code>http://<FHEM-IP>:<Port>/fhem?XHR=1&fwcsrf=csrf_368985985592099&cmd=set%20Y173%20Active_Power_$phase%20$active_power</code>
 
<code>fwcsrf=csrf_368985985592099    das CSRF-Token (FHEMWeb)</code>


<code>$phase</code>           wird vom Shelly durch a, b oder c ersetzt
Beispiel 4: Wirkleistung eines ShellyPro3EM: 
<syntaxhighlight lang="html">http://<FHEM-IP>:<Port>/fhem?fwcsrf=csrf_368985985592099&cmd=set%20Y173%20Active_Power_$phase%20$active_power</syntaxhighlight>
:<code>fwcsrf=csrf_368985985592099</code>    das CSRF-Token (FHEMWeb)
:<code>$phase</code>   wird vom Shelly durch a, b oder c ersetzt
: <code>$active_power</code>  wird vom Shelly durch die aktuelle Wirkleistung ersetzt


<code>$active_power  wird vom Shelly durch die aktuelle Wirkleistung ersetzt</code>
'''Endpoints'''


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


In vorstehenden Beispielen stellt der Teil <code>set%20<name>%20<cmd></code> den Endpoint dar, d.h. dies ist der Befehl der vom Shelly-Device in FHEM verarbeitet werden muss.
=====Liste der Befehle der Set-Endpoints:=====
 
===== Liste der Befehle der Set-Endpoints: =====
{| class="wikitable sortable mw-collapsible"
{| class="wikitable sortable mw-collapsible"
|+
|+
!<cmd>
!<cmd>
!Wert
!Wert
!
!Reading
!Erläuterung
!Erläuterung  
!Geräte
|-
|-
|<code>out_on</code>
|<code>out_on</code>
|
|
|
| rowspan="2" |<code>relay_<ch></code><code>state</code>
|Ausgang ein
|Ausgang ein
| rowspan="2" |alle Shelly mit Relaisausgang
ShellyBulb
ShellyRGBW
|-
|-
|<code>out_off</code>
|<code>out_off</code>
|
|
|
|Ausgang aus
|Ausgang aus
Zeile 155: Zeile 566:
|<code>button_on</code>
|<code>button_on</code>
|
|
|
| rowspan="2" |<code>button_<ch></code>
|Eingang ein
|Eingang ein
| rowspan="2" |ShellyPlug
ShellyPlugS
|-
|-
|<code>button_off</code>
|<code>button_off</code>
|
|
|Eingang aus
|-
|<code>input_on</code>
|
| rowspan="2" |<code>input_<ch></code>
|Eingang ein
| rowspan="2" |alle Shelly mit HW-Eingang, aber nicht Shelly-I-Geräte
|-
|<code>input_off</code>
|
|
|Eingang aus
|Eingang aus
Zeile 165: Zeile 587:
|<code>input_on</code>
|<code>input_on</code>
|
|
|
| rowspan="4" |<code>input_<inp></code>
|Eingang ein
|Eingang ein
| rowspan="4" |ShellyDimmer
|-
|-
|<code>input_off</code>
|<code>input_off</code>
|
|
|Eingang aus
|-
|<code>short_push</code>
|
|
|Eingan aus
|kurzer Tastendruck
|-
|<code>long_push</code>
|
|langer Tastendruck
|-
|-
|<code>single_push</code>
|<code>single_push</code>
|
|
|
| rowspan="6" |<code>input_<ch></code><code>input_<ch>_action</code>
|einfacher, kurzer Tastendruck
|kurzer Tastendruck
| rowspan="4" |ShellyI3
ShellyI4
|-
|-
|<code>long_push</code>
|<code>long_push</code>
|
|
|
|langer Tastendruck
|langer Tastendruck
|-
|-
|<code>double_push</code>
|<code>double_push</code>
|
|
|
|zweifacher Tastendruck
|zweifacher Tastendruck
|-
|-
|<code>triple_push</code>
|<code>triple_push</code>
|
|
|
|dreifacher Tastendruck
|dreifacher Tastendruck
|-
|-
|<code>short_long_push</code>
|<code>short_long_push</code>
|
|
|
|Tastersequenz lang-kurz
|Tastersequenz lang-kurz
| rowspan="2" |ShellyI3
|-
|-
|<code>long_short_push</code>
|<code>long_short_push</code>
|
|
|
|Tastersequenz kurz-lang
|Tastersequenz kurz-lang
Zeile 205: Zeile 633:
|<code>stopped</code>
|<code>stopped</code>
|
|
|
| rowspan="5" |<code>state</code>
|Rollo angehalten
|Rollo angehalten
| rowspan="5" | Shelly2/2.5/Plus2/Pro2 mode=roller
<nowiki>*</nowiki>) nur für Shelly Plus2/Pro2
|-
|-
|<code>opening</code>
|<code>opening</code>
|
|
|
|Rollo wird geöffnet
|Rollo wird geöffnet
|-
|-
|<code>closing</code>
|<code>closing</code>
|
|
|
|Rollo wird geschlossen
|Rollo wird geschlossen
|-
|-
|<code>is_open</code>
|<code>is_open   *)</code>
|
|
|
|Rollo offen (in oberer Endlage)
|Rollo offen (in oberer Endlage)
|-
|-
|<code>is_closed</code>
|<code>is_closed   *)</code>
|
|
|
|Rollo geschlossen (in unterer Endlage)
|Rollo geschlossen (in unterer Endlage)
|-
|-
|<code>temperature*</code>
|<code>temperature_over</code>
|
|
|<code>temperature_<ch>_range</code>
|Temperatur überschreitet eingestellten Grenzwert
| rowspan="5" |ShellyAddOn
|-
|<code>temperature_under</code>
|
|
|Temperatur
|<code>temperature_<ch>_range</code>
|Temperatur unterschreitet eingestellten Grenzwert
|-
|-
|<code>humidity*</code>
|<code>humidity_over</code>
|
|
|<code>humidity_<ch>_range</code>
|Luftfeuchtigkeit überschreitet eingestellten Grenzwert
|-
| <code>humidity_under</code>
|
|
|Luftfeuchtigkeit
|<code>humidity_<ch>_range</code>
|Luftfeuchtigkeit unterschreitet eingestellten Grenzwert
|-
|<code>tempC</code>
|<code>$temperature</code>
|<code>temperature</code>
|Temperatur in °C
|-
|-
|<code>voltage_over</code>
|<code>voltage_over</code>
|
|
|
| rowspan="2" |<code>voltage_range</code>
|Spannung unterschreitet eingestellten Grenzwert
|Spannung überschreitet eingestellten Grenzwert
| rowspan="2" |ShellyUni
|-
|-
|<code>voltage_under</code>
|<code>voltage_under</code>
|
|
|
|Spannung unterschreitet eingestellten Grenzwert
|Spannung überschreitet eingestellten Grenzwert
|-
|-
|Active_Power_$phase
| Active_Power_$phase
|<code>$active_power</code>
|<code>$active_power</code>
|
|<code>Active_Power_<ph></code>
|Wirkleistung
|Änderung Wirkleistung
| rowspan="3" |ShellyPro3EM
|-
|-
|Voltage_$phase
|Voltage_$phase
|<code>$voltage</code>
|<code>$voltage</code>
|
|<code>Voltage_<ph></code>
|Spannung
| Änderung Spannung
|-
|-
|Current_$phase
|Current_$phase
|<code>$current</code>
|<code>$current</code>
|
|<code>Current_<ph></code>
|Strom
|Änderung Strom
|}
|}
Bei Eintreffen eines Set-Endpoints wird im Shelly-Device ein Reading entsprechend gesetzt. Damit kann das Shelly-Ereigniss z.B. mit einem <code>notify</code> ausgewertet werden.
Bei Eintreffen eines Set-Endpoints wird im Shelly-Device das zugeordnete Reading entsprechend gesetzt. Damit kann das Shelly-Ereignis z.B. mit einem <code>notify</code> ausgewertet werden. Im Anschluss daran holt sich das Modul die aktuellen Daten vom Shelly und setzt das Intervall zurück.
 
Anmerkung zum ShellyPro3EM: Die Action wird erst bei einer gewissen Änderung des jeweiligen Wertes ausgelöst. Bei kleinen Schwankungen kommen also keine Webhooks in FHEM an.  


===== Get-Endpoint =====
===== 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:
Eine besondere Form stellt der Get-Endpoint dar, mit dem das Shelly-Device in FHEM aufgefordert wird, den Status des Shelly zu holen. Beispiel:  
:<code>http://<FHEM-IP>:<Port>/fhem?cmd=get%20<name>%20status</code>


Beispiel:    <code>http://<FHEM-IP>:<Port>/fhem?XHR=1&cmd=get%20<name>%20status</code>
====Attribut webhook (derzeit nur Gen2)====
Durch Setzten des Attributes <code>webhook</code> werden auf dem Shelly die verfügbaren Webhooks automatisiert angelegt (auf der Shelly Oberfläche unter Actions zu sehen). Als Attribut-Wert muss das empfangende FHEMWeb-Device ausgewählt werden. Wird das FHEMWeb-Device mit einem csrf-Token abgesichert, wird der Token in den Webhook eingebunden. Bei Änderungen des Tokens (z.B. bei Neustart von FHEM) werden die entsprechenden Webhooks mit angepasst.


Die vom Modul angelegten Webhooks erhalten im Shelly einen Namen, beginnend mit einem Unterstrich (<code>_</code>). Wird das Attribut geändert oder gelöscht, dann werden auch zugehörige Actions geändert bzw. gelöscht. Durch Entfernen des Unterstrichs im Namen der Action kann dieser Mechanismus unterbunden werden.


==== Attribut webhook (derzeit nur Gen2) ====
Das Reading <code>webhook_cnt</code> zeigt die Anzahl aller auf dem Shelly hinterlegten Webhooks und <code>webhooks_ver</code> den Versionszähler des Shelly.
Durch Setzten des Attributes <code>webhook</code> werden auf dem Shelly einige Webhooks angelegt (auf der Shelly Oberfläche unter Actions zu sehen).


Das Reading <code>webhook_cnt</code> zeigt die Anzahl der auf dem Shelly hinterlegten Webhooks und <code>webhooks_ver</code> den Versionszähler des Shelly.
Eine Übersicht aller Actions/Webhooks eines Shelly bekommt man für Gen2-Geräte mit: 
:<code>http://<ip-des-Shelly>/rpc/Webhook.List</code>


Eine Übersicht aller Actions/Webhooks eines Shelly bekommt man für Gen2-Geräte mit:
===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 ([[MQTT2-Module - Praxisbeispiele#Shelly|Praxisbeispiele zu den MQTT2-Modulen]]), für Anfänger ist das allerdings nicht unbedingt zu empfehlen.


<code>http://<ip-des-Shelly>/rpc/Webhook.List</code>
==Links==
*{{Link2Forum|Topic=118446|LinkText=Support Thread}} zu diesem Modul
*{{Link2Forum|Topic=137222|LinkText=Entwicklungs Thread}} zur Weiterentwicklung des Moduls, ab Februar 2024
*[http://www.shelly.com Website des Herstellers der Geräte]
*[https://community.shelly.cloud Forum des Herstellers (englischsprachig]


 
[[Kategorie:Energieverbrauchsmessung]]
=== MQTT ===
[[Kategorie: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 ([[MQTT2-Module - Praxisbeispiele#Shelly|Praxisbeispiele zu den MQTT2-Modulen]]), für Anfänger ist das allerdings nicht unbedingt zu empfehlen.
[[Kategorie:Bluetooth]]
[[Kategorie:Schalter (Empfänger)]]
[[Kategorie:Shelly]]

Aktuelle Version vom 15. September 2024, 22:22 Uhr

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


Shelly
Zweck / Funktion
Das Modul 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 Starkstrombastler (Forum /Wiki)
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.

X mark.svgAchtung: Einige der auf dieser Seite erwähnten Geräte und Funktionen sind derzeit nur mit dieser Testversion verfügbar, die manuell installiert werden muss!

Bei den Shelly-Geräten handelt es 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 (siehe Spalte Messkanäle in unten stehender Tabelle).

Geräteübersicht

Übersicht der IP-basierten Produktreihen

ID Produktreihe gemeinsame Merkmale
SH erste Generation COIOT (Nutzung mit Shelly-Monitor), kein Bluetooth
SN Shelly Plus

Shelly Plus mini

SP Shelly Pro Montage auf Hutschiene, zusätzlicher Ethernet-Port (RJ45)
S3 Shelly Gen3

Shelly Gen3 mini

proprietärer Prozessor
SA Control Panel Android-System

ID: erste beiden Stellen der Modell-ID


Liste der aktuell unterstützten Geräte (hier nicht aufgeführte Geräte der ersten Generation können zusammen mit dem Shelly-Monitor genutzt werden):

Modell Typ Schalt- kanäle Dimm- kanäle Mess- kanäle Digital Eingänge Bemerkungen
Gen 1
Shelly 1 Schalter 1 1
Shelly 1PM Schalter 1 1 1
Shelly 1L Schalter 1 1 1
Shelly 2 Schalter 2 1 2
Rollladenaktor 1 1 2
Shelly 2.5 Schalter 2 2 2
Rollladenaktor 1 1 2
Shelly 4Pro Schalter 4 4 4
Shelly i3 Digitale Eingänge 3
Shelly EM Leistungsmessung 1 2
Shelly 3EM Leistungsmessung 1 3
Shelly Uni Universal 2 *) 1-Wire, 2 potentialfreie Relaisausgänge

Analogeingänge

Shelly Plug

Shelly Plug S

Schaltsteckdose 1 1 1 Taster
Shelly RGBW2 Dimmer 4 4 1 4-fach Aktor
Dimmer 1 1 1 RGBW Controller
Shelly Dimmer2 Dimmer 1 1 2
Shelly Duo Leuchte 1 E27 oder GU10 Fassung
Shelly Vintage Leuchte 1
Shelly Bulb Leuchte 1 Modi: weiß oder farbe
Shelly Plus
Shelly Plus 1 Schalter 1 1
Shelly Plus 1PM Schalter 1 1 1
Shelly Plus 2PM Schalter 2 2 2
Rollladenaktor 1 1 2
Shelly Plus i4 Digitale Eingänge 4 AC und DC - Variante
Shelly Plus Plug S

Shelly Plus Plug IT Shelly Plus Plug UK Shelly Plus Plug US

Schaltsteckdose 1 1 1 Taster;

Varianten V1, V2

Shelly Plus Uni Universal 2 *) 1-Wire, 2 potentialfreie Relaisausgänge

Analogeingänge; Neu in 2024

Shelly Plus 0-10V Dimmer Dimmer 1 1 2 0-10 V DC Ausgang
Shelly Plus RGBW Dimmer 4 4 4 4-fach Aktor
Dimmer 1 1 1 RGBW Controller
Shelly Plus Mini
Shelly Plus 1 Mini Schalter 1 1
Shelly Plus 1PM Mini Schalter 1 1 1
Shelly PM Mini Leistungsmessung 1
Shelly Pro
Shelly Pro 1 Schalter 1 2
Shelly Pro 1PM Schalter 1 1 2
Shelly Pro 2 Schalter 2 2
Shelly Pro 2PM Schalter 2 2 2
Shelly Pro Dual Rollladenaktor 4 4 2 Rolladenaktoren
Shelly Pro Dimmer 1PM Dimmer 1 1 2
Shelly Pro Dimmer 2PM Dimmer 2 2 4
Shelly Pro 3 Schalter 3 3
Shelly Pro 3EM Leistungsmessung 3 1 Schaltkanal mit Addon
Shelly Pro EM50 Leistungsmessung
Shelly Pro 4PM Schalter 4 4 4
Shelly Gen3
Shelly 1 Gen3 Schalter 1 1
Shelly 1PM Gen3 Schalter 1 1 1
Shelly i4 Gen3 Digitale Eingänge 4
Shelly Dimmer 0/1-10V Gen3 Dimmer 1 1 2 0-10V DC oder

1-10V DC Ausgang

Shelly Gen3 Mini
Shelly 1 Mini Gen3 Schalter 1 1
Shelly 1PM Mini Gen3 Schalter 1 1 1
Shelly PM Mini Gen3 Leistungsmessung 1
Control Panels
Shelly Wall Display Control Panel 1 1

Einbindung in FHEM

Vorgehensweise zur Einbindung eines Shelly-Gerätes in FHEM:

  • Aktor nach Vorschrift anschließen
  • mit einem WLAN-fähigen Gerät (Laptop, Smartphone, Tablet...; im Folgenden als Laptop bezeichnet) nach dem internen Access Point suchen, der durch das Shelly-Gerät erzeugt wird; typischerweise hat es eine SSID ähnlich wie
shelly1-..., shellyswitch-..., shelly4pro-...,
  • Laptop mit diesem Access Point verbinden; typischerweise bekommt das Gerät dabei die IP-Adresse 192.168.33.2 zugewiesen.
  • im Browser des Laptops die IP-Adresse 192.168.33.1 aufrufen - das ist der Shelly selbst; in der damit angezeigten Weboberfläche kann das Shelly-Gerät konfiguriert werden
    • Shelly ins häusliche WLAN anmelden (mit fester IP-Adresse <shelly-ip> natürlich...)
    • Internen Access Point abschalten (kann auch nach dem nächsten Schritt oder noch später erfolgen)
    • Testen: Laptop wieder mit dem häuslichen WLAN verbinden, und im Browser die Adresse <shelly-ip> aufrufen
  • In FHEM definieren
define myShelly Shelly <shelly-ip>
  • Das Modul setzt bei bekannten Geräten das Attribut model automatisch. Bei nicht unterstützten Geräten wird das Attribut auf den Wert generic gesetzt. In diesen Fällen kann das Attribut model auf der Detailseite des Devices manuell gesetzt werden:
attr myShelly model shellyrgbw|shellydimmer|shelly2.5|shelly2|shellyem|shelly3em|shelly4|shellyplug|shelly1|shellybulb|shelly1pm|shellyuni|generic

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) 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 bestimmter 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?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?cmd=set%20<name>%20input_on%20<ch>
<ch> die Nummer des Schaltkanals (Nummer des Eingangs), z.B. 0 oder 1

Beispiel 3: Eingang1 eines ShellyDimmers wird betätigt:

http://&#x3C;FHEM-IP&#x3E;:&#x3C;Port&#x3E;/fhem?cmd=set%20&#x3C;name&#x3E;%20short_push<nowiki/>%20<inp>
<inp> Nummer des Eingangs, 0 oder 1 (ShellyDimmer verfügen je Schaltkanal über zwei Eingänge)

Beispiel 4: Wirkleistung eines ShellyPro3EM:

http://<FHEM-IP>:<Port>/fhem?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

Endpoints

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 Reading Erläuterung Geräte
out_on relay_<ch>state Ausgang ein alle Shelly mit Relaisausgang

ShellyBulb ShellyRGBW

out_off Ausgang aus
button_on button_<ch> Eingang ein ShellyPlug

ShellyPlugS

button_off Eingang aus
input_on input_<ch> Eingang ein alle Shelly mit HW-Eingang, aber nicht Shelly-I-Geräte
input_off Eingang aus
input_on input_<inp> Eingang ein ShellyDimmer
input_off Eingang aus
short_push kurzer Tastendruck
long_push langer Tastendruck
single_push input_<ch>input_<ch>_action kurzer Tastendruck ShellyI3

ShellyI4

long_push langer Tastendruck
double_push zweifacher Tastendruck
triple_push dreifacher Tastendruck
short_long_push Tastersequenz lang-kurz ShellyI3
long_short_push Tastersequenz kurz-lang
stopped state Rollo angehalten Shelly2/2.5/Plus2/Pro2 mode=roller

*) nur für Shelly Plus2/Pro2

opening Rollo wird geöffnet
closing Rollo wird geschlossen
is_open *) Rollo offen (in oberer Endlage)
is_closed *) Rollo geschlossen (in unterer Endlage)
temperature_over temperature_<ch>_range Temperatur überschreitet eingestellten Grenzwert ShellyAddOn
temperature_under temperature_<ch>_range Temperatur unterschreitet eingestellten Grenzwert
humidity_over humidity_<ch>_range Luftfeuchtigkeit überschreitet eingestellten Grenzwert
humidity_under humidity_<ch>_range Luftfeuchtigkeit unterschreitet eingestellten Grenzwert
tempC $temperature temperature Temperatur in °C
voltage_over voltage_range Spannung überschreitet eingestellten Grenzwert ShellyUni
voltage_under Spannung unterschreitet eingestellten Grenzwert
Active_Power_$phase $active_power Active_Power_<ph> Änderung Wirkleistung ShellyPro3EM
Voltage_$phase $voltage Voltage_<ph> Änderung Spannung
Current_$phase $current Current_<ph> Änderung Strom

Bei Eintreffen eines Set-Endpoints wird im Shelly-Device das zugeordnete Reading entsprechend gesetzt. Damit kann das Shelly-Ereignis z.B. mit einem notify ausgewertet werden. Im Anschluss daran holt sich das Modul die aktuellen Daten vom Shelly und setzt das Intervall zurück.

Anmerkung zum ShellyPro3EM: Die Action wird erst bei einer gewissen Änderung des jeweiligen Wertes ausgelöst. Bei kleinen Schwankungen kommen also keine Webhooks in FHEM an.

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?cmd=get%20<name>%20status

Attribut webhook (derzeit nur Gen2)

Durch Setzten des Attributes webhook werden auf dem Shelly die verfügbaren Webhooks automatisiert angelegt (auf der Shelly Oberfläche unter Actions zu sehen). Als Attribut-Wert muss das empfangende FHEMWeb-Device ausgewählt werden. Wird das FHEMWeb-Device mit einem csrf-Token abgesichert, wird der Token in den Webhook eingebunden. Bei Änderungen des Tokens (z.B. bei Neustart von FHEM) werden die entsprechenden Webhooks mit angepasst.

Die vom Modul angelegten Webhooks erhalten im Shelly einen Namen, beginnend mit einem Unterstrich (_). Wird das Attribut geändert oder gelöscht, dann werden auch zugehörige Actions geändert bzw. gelöscht. Durch Entfernen des Unterstrichs im Namen der Action kann dieser Mechanismus unterbunden werden.

Das Reading webhook_cnt zeigt die Anzahl aller 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.

Links