Konfiguration des Plugins
…
Backward-Compatibility Mode
Zurzeit werden folgende Shelly Devices mit Gen1 API im Backward-Compatibility Mode unterstützt:
Shelly1/pm
Shelly2
Shelly2.5
Shelly4Pro
Shelly Plug
Shelly PlugS
Shelly H&T
Shelly Flood
Shelly Door/Window 2
Diese Devices werden konfiguriert, wie es bis zur Version 1.2.0 des shelly Plugins üblich war (durch Angabe der
Attribute shelly_id
, shelly_type
und shelly_attr
). So konfigurierte Items sind im internen Handling
kompatibel zur alten Version des Plugins.
Es werden dabei alle Relays eines Shelly Devices (bis zu 4) unterstützt. Weiterhin werden die folgenden Attribute/Parameter der Devices unterstützt, soweit die Devices selbst diese unterstützen:
humidity
state
tilt
vibration
lux
illumination
flood
battery
power
energy
temperature
temperature_f
sowie der online-Status.
Aktueller Konfigurations Modus
Weitere Gen1 Devices werden unterstützt, wenn sie analog zu Gen2 Devices konfiguriert werden. Dieser Modus ist für Gen1 Devices noch experimentell.
Devices mit dem Gen2 und Gen3 API werden ohne Angabe von shelly_type
konfiguriert. Die Information über den Typ des
Devices erhält das Plugin vom Device.
Es wird eine große Anzahl von Shelly Devices mit Gen3 API unterstützt. Getestet wurden bisher folgenden Gen3 Devices:
Shelly Mini1G3
Es wird eine große Anzahl von Shelly Devices mit Gen2 API unterstützt. Getestet wurden bisher folgenden Gen2 Devices:
Shelly Plus Plug S
Shelly Plus H&T
Shelly Plus 2PM
Shelly Plus Add-On (getestet am Shelly Plus 2PM)
Es wird Anzahl von Shelly Devices mit Gen1 API im experimentellen Modus (konfiguriert analog zu Gen2 Devices) unterstützt. Getestet wurden bisher folgenden Gen1 Devices:
Shelly Plug S
Shelly Button1
Shelly Door/Window2
Unterschiede zwischen Plugin Modi
Das Attribut online
wird durch das Plugin im Modus für Gen2 Devices nicht durchgehend unterstützt. Das Attribut ist
auf den verschiedenen Shelly Devices zu unterschiedlich implementiert, als dass es sinnvoll genutzt werden könnte.
Einige batteriebetriebene Devices melden online
= False bevor sie sich schlafen legen, andere lassen den Status
auf True. Andere Devices hingegen haben den online
Status gar nicht implementiert.
Im Backward-Compatibility Mode für Gen1 Devices steht das online
Attribut (falls es im Plugin
v1.20 implementiert war) weiterhin zur Verfügung.
Konfiguration im Kompatibilitäts-Modus
Shelly Devices mit Gen1 API können im (experimentellen) neuen Modus konfiguriert werden, oder im Kompatibilitäts-Modus, der jedoch nur Devices und Attribute unterstützt, die bereits von der Plugin Version 1.2.0 unterstützt wurden. Im neuen Modus werden zusätzliche Devices und zusätzliche Attribute zu den bereits unterstützten Devices unterstützt. Die Konfiguration erfolgt dann analog zur Konfiguration von Gen2 Devices.
Konfiguration für Gen2 Devices
Shelly Devices mit Gen2 API und Devicess mit Gen1 API, die nicht im Backward-Compatibility Mode unterstützt werden, können konfiguriert werden, wie im folgenden beschrieben wird.
Für die Devices werden die Attribute
shelly_id
: Mac Adresse des Devices, mindestens jedoch die letzten 6 Stellen der Mac Adresse
shelly_attr
: Name des Attributes, welches eingelesen werden soll. (Wenn der Name des Attributes nicht bekannt ist, können die von dem Shelly Device unterstützten Attribute, wie im folgenden beschrieben, ermittelt werden).und evtl.
shelly_group
: Optional: Name der Gruppe, zu der dieses Attribut gehört (z.B. „switch:0“)
angegeben. Das Attribut shelly_type
darf NICHT angegeben werden.
Ermitteln der unterstützten Status Attribute
Um die Attribute zu ermitteln, die ein Shelly Device sendet (also Attribute, die einen Status des Devices übermitteln), muss folgendermaßen vorgegangen werden:
Ein Item konfigurieren, welches nur die folgenden zwei Attribute besitzt:
test_item:
shelly_id:<MAC Adresse>
shelly_list_attrs: True
Außerdem muß der Logger plugins.shelly auf den Level INFO konfiguriert werden. Anschließend werden dann die Attribute, wenn sie vom Shelly Device gesendet werden, in das smarthome-details.log geschrieben. Die Logeinträge enthalten den Namen des Attributes, optional den Namen der Gruppe und den Typ, den das SmartHomeNG Item haben muß. Falls der Typ num ist, wird als Zusatzinfo geloggt, ob der vom Device gelieferte Wert ein Integer oder ein Float Wert ist.
Das kann einige Zeit in Anspruch nehmen, da die Devices nicht ständig alle Attribute senden und einige batteriebetriebene Devices zum Teil mehrere Stunden schweigen (z.B.Shelly Plus H&T), oder wie der Shelly Button1 nur senden, wenn der Button gedrückt wird.
Einige Devices senden den Status eines Attributes auch nur bei einer Änderung des Zustandes (z.B. das ADD-ON zum ShellyPlus 2 PM).
Im Log finden sich dann Einträge, die wie die folgenden aussehen:
2023-08-20 16:33:45 INFO plugins.shelly list_attrs '80646fe38450': shelly_attr='output' shelly_group='switch:0' type='bool'
2023-08-20 16:33:45 INFO plugins.shelly list_attrs '80646fe38450': shelly_attr='apower' shelly_group='switch:0:0' type='num' (float)
2023-08-20 16:33:45 INFO plugins.shelly list_attrs '80646fe38450': shelly_attr='voltage' shelly_group='switch:0' type='num' (float)
2023-08-20 16:33:45 INFO plugins.shelly list_attrs '80646fe38450': shelly_attr='current' shelly_group='switch:0' type='num' (float)
2023-08-20 16:33:45 INFO plugins.shelly list_attrs '80646fe38450': shelly_attr='energy' shelly_group='switch:0' type='num' (float)
2023-08-20 16:33:45 INFO plugins.shelly list_attrs '80646fe38450': shelly_attr='energy_by_minute' shelly_group='switch:0' type='num' (float)
2023-08-20 16:33:45 INFO plugins.shelly list_attrs '80646fe38450': shelly_attr='temp' type='num' (float)
2023-08-20 16:33:45 INFO plugins.shelly list_attrs '80646fe38450': shelly_attr='temp_f' type='num' (float)
2023-08-20 16:42:51 INFO plugins.shelly list_attrs '485519db1e1d': shelly_attr='battery' shelly_group='sensor' type='num' (int)
2023-08-20 16:42:51 INFO plugins.shelly list_attrs '485519db1e1d': shelly_attr='voltage' shelly_group='sensor' type='num' (float)
2023-08-20 16:42:51 INFO plugins.shelly list_attrs '485519db1e1d': shelly_attr='charger' shelly_group='sensor' type='bool'
2023-08-20 16:42:51 INFO plugins.shelly list_attrs '485519db1e1d': shelly_attr='error' shelly_group='sensor' type='num' (int)
2023-08-20 16:42:51 INFO plugins.shelly list_attrs '485519db1e1d': shelly_attr='act_reasons' shelly_group='sensor' type='list'
2023-08-20 16:42:51 INFO plugins.shelly list_attrs '485519db1e1d': shelly_attr='event' shelly_group='input_event:0' type='str'
Mit diesen Informationen können die entsprechenden Items in SmartHomeNG konfiguriert werden. (Nicht vergessen das test_item wieder zu löschen)
Die Namen der Attribute entsprechen zum großen Teil den Bezeichnern, die das Shelly Device sendet. Einige Attribut Namen werden vom Plugin jedoch angepasst, da die unterschiedlichen Shelly Devices gleiche Informationen zum Teil unter unterschidlichen Bezeichnern publizieren. Eine solche Vereinheitlichung ist zum Beispiel der Attribut Name temp. Die Temperatur (in °C) wird von den verschiedenen Devices z.B. als temp, temperature, tC oder auch als dict temperature[‚tC‘] publiziert. Zur Vereinfachung, ist für alle diese Bezeichner der Attribut Name temp
Nicht unterstützte Status Attribute
Es kann vorkommen, dass für ein Shelly Device Attribute oder Gruppen bisher nicht unterstützt werden. In diesem Fall erfolgt folgender Eintrag im smarthome-warnings.log:
2023-08-20 18:02:04 NOTICE plugins.shelly Unbekannter Status empfangen von 'shellyplusht-80646fcbb6c8' - Loglevel des Plugin-Loggers auf INFO setzen und das Details-Log beobachten
Dann muß man man den Logger plugins.shelly auf den Level INFO konfigurieren. Anschließend werden dann die Informationen zu den bisher nicht unterstützten Attributen in das smarthome-details.log geschrieben.
Ein Eintrag zu einem bisher nicht unterstützen Attribut sieht z.B. so aus:
2023-08-20 18:02:04 INFO plugins.shelly Unbehandelter Gen2 Status für shellyplusht-80646fcbb6c8:
- Model='SNSN-0013A'
- API: Gen2
- App=PlusHT
- Client_ID=shellyplusht-80646fcbb6c8
- Parameter: 'battery'={'V': 6.03, 'percent': 100}
- Group='devicepower:0'
- Params={'id': 0, 'battery': {'V': 6.03, 'percent': 100}, 'external': {'present': False}}
- Calling method=handle_gen2_device_status (pos='*ds1')
Wenn diese Information im Forum im Support Thread für das shelly Plugin oder als Issue auf Github gepostet wird, kann mit diesen Informationen das Attribut bzw. die Gruppe Gruppen zeitnah in das Plugin integriert werden.
Diese nicht unterstützten Attribute werden werden bei gesetztem shelly_list_attrs
Attribut nicht geloggt.
Ein Logging bei shelly_list_attrs
erfolgt nur für bereits unterstützte Attribute.
Attribute um ein Device zu steuern
Aktuell wird nur zum steuern eines Shelly Devices nur das Attribt output
unterstützt. Es kann in den
Gruppen switch:0
bis switch:3
genutzt werden.
Item structs
Zur Vereinfachung der Einrichtung von Items sind für folgende Shelly Devices Item-structs vordefiniert:
shellyplug
shellyplug_s
shellyht
shellyflood
shellyplusplug_s
Unter Verwendung der entsprechenden Vorlage kann die Einrichtung einfach durch Angabe der shally_id des entsprechenden Devices erfolgen:
plug1:
name: Mein erster Shellyplug-S
type: bool
shelly_id: '040BD0'
struct: shelly.shellyplug_s
Damit werden außer dem Schalter selbst, Unteritems für Leistung, Energieverbrauch und Temperatur des Devices (in °C und °F) angelegt.
weitere Informationen
Informationen zur Konfiguration und die vollständige Beschreibung der Item-Attribute sind unter Plugin ‚shelly‘ Konfiguration zu finden.