TL;DR: Kann man über den FHEM-Standard-MQTT2-Server den Shelly-Plug-S schalten?
Ich habe seit einigen Tagen einen Shelly Plug S.
Nach einiger Recherche ist es mir gelungen den Shelly Plug S unter FHEM einzubinden:
- MQTT im Shelly aktivieren
- MQTT2_Server in FHEM aktivieren + autocreate einschalten
- Nach einiger Zeit erscheint dann unter MQTT2_DEVICE der Shelly, bei mir mit dem Namen "MQTT2_shellyplusplugs_80646fe76c68"
- Dort dann bei "set" das "attrTemplate" auswählen, in meinem Fall "shelly1" - sonst gibt es bei mir zurzeit kein anderes Template, das mit "Shelly" anfängt.
- Nach einiger Zeit erscheinen unter MQTT2_DEVICE ein Gerät mit diversen Zeilen unter "readings", die auch geupdated werden.
- Diese kann ich auch in ein Filelog schreiben und grafisch darstellen lassen.
- In der Anfangsphase noch keine Username/Passwort oder SSL....
Als Icon erscheint dann das Lampensymbol, mit einem grünen Punkt und den Schaltflächen "on" und "off".
Die allerdings funktionieren NICHT und ich frage mich warum.
Ich kann den Shelly über seine Webseite und über HTTP-Befehle von der Kommandozeile aus ein- und ausschalten - nur nicht über die Tasten "on" und "off" in FHEM.
defmod MQTT2_shellyplusplugs_80646fe76c68 MQTT2_DEVICE shellyplusplugs_80646fe76c68
attr MQTT2_shellyplusplugs_80646fe76c68 devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "false" ? "rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";; my $light = ReadingsVal($name,"state","off");; my $show = '<a href="';;$show .= $onl eq "gelb" ? "/fhem?cmd.dummy=set $name x_update&XHR=1\">" : "http://".ReadingsVal($name,"ip","none").' "target="_blank">';; $show .= FW_makeImage("10px-kreis-".$onl)."</a>";; "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a></div>" }
attr MQTT2_shellyplusplugs_80646fe76c68 model shelly1
attr MQTT2_shellyplusplugs_80646fe76c68 readingList shellies/000shellyplusplugs_80646fe76c68/relay/0:.* state\
shellies/000shellyplusplugs_80646fe76c68/relay/0:.* relay0\
shellies/000shellyplusplugs_80646fe76c68/input/0:.* input0\
shellies/000shellyplusplugs_80646fe76c68/online:.* online\
shellies/000shellyplusplugs_80646fe76c68/announce:.* { json2nameValue($EVENT) }\
shellies/announce:.* { $EVENT =~ m,..id...000shellyplusplugs_80646fe76c68...mac.*, ? json2nameValue($EVENT) : return }\
shellyplusplugs_80646fe76c68:shellyplusplugs-80646fe76c68/events/rpc:.* { json2nameValue($EVENT, 'rpc_', $JSONMAP) }\
shellyplusplugs_80646fe76c68:shellyplusplugs-80646fe76c68/status/switch_0:.* { json2nameValue($EVENT, 'switch_0_', $JSONMAP) }\
shellyplusplugs_80646fe76c68:shellyplusplugs-80646fe76c68/status/sys:.* { json2nameValue($EVENT, 'sys_', $JSONMAP) }\
shellyplusplugs_80646fe76c68:shellyplusplugs-80646fe76c68/online:.* online\
shellyplusplugs_80646fe76c68:shellyplusplugs-80646fe76c68/status/mqtt:.* { json2nameValue($EVENT, 'mqtt_', $JSONMAP) }
attr MQTT2_shellyplusplugs_80646fe76c68 room MQTT
attr MQTT2_shellyplusplugs_80646fe76c68 setList off:noArg shellies/000shellyplusplugs_80646fe76c68/relay/0/command off\
on:noArg shellies/000shellyplusplugs_80646fe76c68/relay/0/command on\
x_update:noArg shellies/000shellyplusplugs_80646fe76c68/command update_fw\
x_mqttcom shellies/000shellyplusplugs_80646fe76c68/command $EVTPART1
setstate MQTT2_shellyplusplugs_80646fe76c68 on
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 21:26:01 IODev MQTT2_Server
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-23 22:14:51 attrTemplateVersion 20211030
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 21:26:02 mqtt_connected true
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 21:26:02 online true
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 rpc_dst shellyplusplugs-80646fe76c68/events
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 rpc_method NotifyStatus
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-23 23:06:37 rpc_params_events_1_cfg_rev 11
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-23 23:06:37 rpc_params_events_1_component wifi
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-23 23:06:37 rpc_params_events_1_event config_changed
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-23 23:06:37 rpc_params_events_1_restart_required false
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-23 23:06:37 rpc_params_events_1_ts 1690146398.51
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 21:26:02 rpc_params_mqtt_connected true
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 rpc_params_switch_0_aenergy_by_minute_1 327.187
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 rpc_params_switch_0_aenergy_by_minute_2 326.366
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 rpc_params_switch_0_aenergy_by_minute_3 325.955
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 rpc_params_switch_0_aenergy_minute_ts 1690236179
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 rpc_params_switch_0_aenergy_total 56.617
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 23:05:34 rpc_params_switch_0_apower 20.1
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 23:00:08 rpc_params_switch_0_current 0.112
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 rpc_params_switch_0_id 0
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 23:00:07 rpc_params_switch_0_output true
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 23:00:07 rpc_params_switch_0_source WS_in
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 23:31:52 rpc_params_switch_0_temperature_tC 45.67
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 23:31:52 rpc_params_switch_0_temperature_tF 114.20
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 23:00:09 rpc_params_switch_0_voltage 226.7
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 rpc_params_sys_available_updates_beta_version 1.0.0-beta6
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 rpc_params_sys_available_updates_stable_version 0.14.4
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-23 23:06:37 rpc_params_sys_cfg_rev 11
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 rpc_params_ts 1690236180.23
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 rpc_src shellyplusplugs-80646fe76c68
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:01:19 state on
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_aenergy_by_minute_1 327.187
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_aenergy_by_minute_2 326.366
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_aenergy_by_minute_3 325.955
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_aenergy_minute_ts 1690236179
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_aenergy_total 56.617
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_apower 19.7
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_current 0.101
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_id 0
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_output true
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_source WS_in
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_temperature_tC 46.1
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_temperature_tF 114.9
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-25 00:02:59 switch_0_voltage 226.8
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_available_updates_beta_version 1.0.0-beta6
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_available_updates_stable_version 0.14.4
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_cfg_rev 11
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_fs_free 98304
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_fs_size 458752
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_kvs_rev 0
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_mac 80646FE76C68
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_ram_free 162092
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_ram_size 234812
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_restart_required false
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_schedule_rev 0
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_time 09:38
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_unixtime 1690184320
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_uptime 15
setstate MQTT2_shellyplusplugs_80646fe76c68 2023-07-24 09:38:40 sys_webhook_rev 0
In der aktuellen Fassung der attrTemplate ist auch was drin für die "plus"-Modelle. Das für die 1rst gen. passt jedenfalls nicht, wie du gemerkt hast...
@Karamike
In anderen Worten, mach mal ein update von FHEM. Wird dir dann das shellyPlus_1 Template angeboten ?
@TomLee
Vielen Dank für die Hilfe.
Nach einem Update wird jetzt auch das Template "shellyPlus_1" angeboten. Ich habe es mit attrTemplate gesetzt.
Nach einem zweiten Restart erscheint für dieses Device auch wieder der grüne Kreis.
Es gibt "readings", die auch aktualisiert werden.
Die Schaltflächen "on" und "off" sind jedoch weg.
Das Icon wechselt zu dem Lampensymbol mit Kreis und Pfeil, wahrscheinlich das "Hole Status"-Symbol.
Schalten lässt sich der Shelly immer noch nicht.
Das Logfile zeigt zwar
2023.07.25 21:09:29 3: MQTT2_DEVICE set MQTT2_shellyplusplugs_80646fe76c68 toggle
... und keine weiteren Fehlermeldungen, aber passieren tut nichts.
Der Klick auf das zusätzlich angebotene
get MQTT2_shellyplusplugs_80646fe76c68 in_mode
führt zur Fehlermeldung
Timeout reading answer for shellies/000shellyplusplugs_80646fe76c68/rpc {"id": 1,"src":"shellies/000shellyplusplugs_80646fe76c68", "method": "Switch.GetConfig", "params": {"id": 0}}
Auf der Seite "MQTT settings" im Shelly sind folgende Optionen aktiviert:
[x] Enable MQTT network
[x] RPC status notifications over MQTT
[x] Generic status update over MQTT
... also nichts was auf Steuerung hindeuten würde.
Es gibt noch eine Seite "RPC over UDP". Dort ist aber nichts eingetragen, weil ich nicht wüsste, was ich unter "Destination address" und "Listening port" eintragen sollte.
Dein "modifiziertes Ausgangsdevice" war kaputt....
Lösche das Device und starte wieder mit dem, was autocreate als Basis liefert.
Kannst Du bitte in der FHEM Kommandozeile Folgendes ausfuehren:
{MQTT2_DEVICE_checkSubscr()}
und danach das subscriptions Reading von MQTT2_shellyplusplugs_80646fe76c68 hier zeigen?
Nachtrag: erst dann, wenn Beta-Users Empfehlung nichts bewirkt :)
Ich habe mit "delete MQTT2_shellyplusplugs_80646fe76c68" das Device gelöscht und FHEM neu gestartet.
Nach nun über 15 Minuten wurde jedoch kein MQTT_Device automatisch erzeugt.
Im MQTT2_Server stehen "autocreate" auf "complex" und "verbose" auf 5:
Man kann dann oben im MQTT traffic alle 60 s zwei Meldungen vom Shelly ankommen sehen:
shellyplusplugs-80646fe76c68/events/rpc
shellyplusplugs-80646fe76c68/status/switch_0
Das System hat im Raum "hidden" den MQTT2_Server_192.168.0.134_54548 angelegt (die IP-Adresse ist die des Shellies).
Der Befehl
{MQTT2_DEVICE_checkSubscr()}
gibt nichts aus (leerer Bildschirm, keine Fehlermeldung).
So verwundert es dann auch nicht, dass unter "Everything" kein MQTT2_Device zu sehen ist...
ZitatNach nun über 15 Minuten wurde jedoch kein MQTT_Device automatisch erzeugt.
Klingt so, als ob das autocreate device (nicht Attribut!), was bei der Auslieferung vorhanden war, deaktiviert oder geloescht wurde.
Im FHEM-Log duerfte das vergebliche Versuch protokolliert sein.
Im Log war nichts zu finden.
Das autocreate device (nicht Attribut) war nach dem Update tatsächlich "disabled".
Ich habe das MQTT2_DEVICE dann manuell angelegt und das Template auf "shellyPlus_1" gesetzt...
und siehe da... ohhh... eine Temperaturanzeige und ahhh... ein- und ausschalten kann man's auch. ;)
Vielen Dank für Deine Hilfe
Ach ja:
{MQTT2_DEVICE_checkSubscr()}
zeigt immer noch nichts an.
Bitte den Thread auf "gelöst" setzen (siehe angepinnte Beiträge im Anfängerbereich).
Da ist im Übrigen auch zu finden, wie man Fragen stellt (ich habe mehr oder weniger nur zufällig gesehen, wo das Problem lag), und wie man mit Helfern umgeht...
Die Feststellung, dass "update" ein Geräte-Attribut auf "disabled" stellen würde, ist jedenfalls mir noch nie untergekommen - anscheinend verwendest du eine sehr unübliche Variante des update-Moduls....
ZitatDas autocreate device (nicht Attribut) war nach dem Update tatsächlich "disabled".
Und vor dem update auch, da update nichts an den Attributen aendert.
Wenn man meint es deaktivieren zu muessen, dann muss man halt mehr selbst machen, und im Forum mehr fragen.
Zitat{MQTT2_DEVICE_checkSubscr()} zeigt immer noch nichts an.
Das ist normal, aber danach sollte subscription gesetzt sein, und damit kann man pruefen, ob man mit setList das sendet, was auch erwartet wird. Deswegen wollte ich subscription sehen:
Zitatund danach das subscriptions Reading von MQTT2_shellyplusplugs_80646fe76c68 hier zeigen?
Zitat von: rudolfkoenig am 26 Juli 2023, 11:10:54ZitatDas autocreate device (nicht Attribut) war nach dem Update tatsächlich "disabled".
Und vor dem update auch, da update nichts an den Attributen aendert.
Wenn man meint es deaktivieren zu muessen, dann muss man halt mehr selbst machen, und im Forum mehr fragen.
Stimmt, ich hatte vor Jahren das
Device autocreate ausgeschaltet, weil Funksensoren aus der Nachbarschaft ständig neue Devices angelegt hatten.
Ich muss allerdings zu meiner Ehrenrettung anmerken, dass
vor dem Update der MQTT2-Server
trotzdem das MQTT2_DEVICE angelegt hat, wenn sein
Attribut autocreate auf "complex" stand.
In sofern ist meine Verwunderung vielleicht verständlich, dass das nach dem Update nicht passierte und ich es manuell anlegen musste. :o
Zitat von: Beta-User am 25 Juli 2023, 07:04:42In der aktuellen Fassung der attrTemplate ist auch was drin für die "plus"-Modelle. Das für die 1rst gen. passt jedenfalls nicht, wie du gemerkt hast...
welche aktuelle? in meiner gibts kein plug s, nur shelly_1_energy
Zum einen: Hier ging es um folgendes Modell: Shelly plus Plug S, und die aktuelle Version des attrTemplate-Files ist 27849.
Die "Plus"-Versionen werden nur angezeigt, wenn das auch aus der Topic-Struktur ersichtlich ist, also falls du das* nicht sehen kannst, kann es daran liegen, dass ggf. daran was gedreht wurde.
* Im Übrigen war es schon immer so, dass die Benennung der attrTemplate nicht 1:1 den Modellbezeichnungen folgt, sondern ggf. "generischer" ist und man aussuchen muss, ob das mit oder ohne "energy"-Info ist oder nicht etc..