[Gelöst] Wie Shelly Plug S über MQTT2 ein- und ausschalten?

Begonnen von Karamike, 25 Juli 2023, 00:05:58

Vorheriges Thema - Nächstes Thema

Karamike

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


Beta-User

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...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

TomLee

@Karamike

In anderen Worten, mach mal ein update von FHEM. Wird dir dann das shellyPlus_1 Template angeboten ?

Karamike

@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.



Beta-User

Dein "modifiziertes Ausgangsdevice" war kaputt....

Lösche das Device und starte wieder mit dem, was autocreate als Basis liefert.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rudolfkoenig

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 :)

Karamike

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...

rudolfkoenig

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.

Karamike

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.




Beta-User

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....
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rudolfkoenig

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?

Karamike

Zitat von: rudolfkoenig am 26 Juli 2023, 11:10:54
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.

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

satprofi

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
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Beta-User

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..
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors