shelly - neu dabei und verständnisfragen habe ...

Begonnen von the ratman, 07 Februar 2026, 16:18:14

Vorheriges Thema - Nächstes Thema

passibe

#30
Zitat von: the ratman am 10 Februar 2026, 20:55:28ich hab doch das device schon in mqtt.
Oh, das tut mir leid, das hatte ich überlesen. Aber gut, dass du jetzt jedenfalls die MQTT-Befehle zum Schalten hast!

Die setList ist einfach eine Liste an MQTT-Nachrichten, die dann per set-Befehl gesaendet werden können. Das müsste, glaube ich, auch in dem von mir gestern verlinkten Wiki erklärt werden.

Ich würde übrigens mal das Attribut devicetopic auf shellypstripg4-206ef10295f4 setzen, also
attr shellypstripg4 shellypstripg4-206ef10295f4Dann kannst du nämlich sowohl in der readingList als auch der setList die Variable $DEVICETOPIC benutzen, was das viel viel besser lesbar macht.

Jetzt musst du einfach nur noch die setList entsprechend erweitern. Entweder um zusätzliche on/off-Befehle:
off0:noArg $devicetopic/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false}}
on0:noArg shellypstripg4-206ef10295f4/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true}}
off1:noArg $devicetopic/rpc {"id":1,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false}}
on1:noArg shellypstripg4-206ef10295f4/rpc {"id":1,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true}}
[usw ...]
und dann kannst du mit set shellypstripg4 on0 bzw. set shellypstripg4 on1 die jeweiligen Dosen schalten.

Eleganter wäre es aber vermutlich, wenn du einfach mit set shellypstripg4 on n arbeiten könntest (n=0–3), das geht mit Nutzung der FHEMWEB-Widgets (siehe dazu hier, gaaanz lang scrollen, bis du zu "widgetOverride" kommst). Du musst das noArg durch selectnumbers,<min>,<step>,<max>,<decimal>,lin ersetzen, dann generiert dir FHEMWEB eine Zahlenreihe, die du dann im Dropdown hast. Genauso gut könntest du statt noArg aber auch einfach 0,1,2,3 schreiben. Der jeweils im Dropdown ausgewählte Wert wird dann als $EVTPART1 (so wie man es auch vom notify kennt) mitgesendet.
Hier wäre das also:
off:selectnumbers,0,1,3,0,lin $DEVICETOPIC/rpc {"id":$EVTPART1,"src":"fhem2shelly","method":"Switch.Set","params": {"id":$EVTPART1,"on":false}}
on:selectnumbers,0,1,3,0,lin $DEVICETOPIC/rpc {"id":$EVTPART1,"src":"fhem2shelly","method":"Switch.Set","params": {"id":$EVTPART1,"on":true}}
und dann müsstest du z.B. mit set shellypstripg4 on 0 die erste Steckdose einschalten können.

Alternativ könntest du das ganze auch für Menschen besser nachvollziehbar von 1–4 nummerieren, dazu braucht es nur ein bisschen Perl, um vom vom Benutzer gewählten Wert 1 abzuziehen:
off:selectnumbers,1,1,4,0,lin {my $num = $EVTPART1-1; return qq {$DEVICETOPIC/rpc {"id":$num,"src":"fhem2shelly","method":"Switch.Set","params": {"id":$num,"on":false}}}; }
on:selectnumbers,1,1,4,0,lin {my $num = $EVTPART1-1; return qq {$DEVICETOPIC/rpc {"id":$num,"src":"fhem2shelly","method":"Switch.Set","params": {"id":$num,"on":true}}}; }
Die erste Steckdose müsste man dann mit set shellypstripg4 on 1 einschalten können.
Das qq {...}; dient einfach dazu, dass du nach wie vor die Anführungszeichen im JSON benutzen kannst.

Der genaue Code ist jetzt natürlich ungetestet, weil ich keine solche Steckdosenleiste habe, aber das sollte, wenn ich mich nicht irgendwo böse vertippt habe, funktionieren.

Bitte auch beachten, dass der Code am besten direkt über das FHEMWEB attr-Eingabefeld eingegeben werden sollte. Ich habe jetzt keine \ für neue Zeilen oder so hinzugefügt, also bitte nicht über das grüne Plus oben links setzen. FHEMWEB sollte dir für setList aber ja auch ein großes Textfeld geben.

the ratman

#31
off:selectnumbers,0,1,3,0,lin $DEVICETOPIC/rpc {"id":$EVTPART1,"src":"fhem2shelly","method":"Switch.Set","params": {"id":$EVTPART1,"on":false}}
on:selectnumbers,0,1,3,0,lin $DEVICETOPIC/rpc {"id":$EVTPART1,"src":"fhem2shelly","method":"Switch.Set","params": {"id":$EVTPART1,"on":true}}

ich kann dann wunderbar oben 1 bis 4 auswählen. einmal für on, einmal für off
leider passiert nix, ausser, dass das lampenicon vor dem drop downs an geht.

ein set shellypstripg4_206ef10295f4 on 0
macht auch nix - auch keine logeinträge - lediglich auch da zeigt das glühbirnen icon on an

aja, thx für den hinweis zum devicetopic ... macht das leben auch einfacher *g*
→do↑p!dnʇs↓shit←

passibe

Hast du devicetopic gesetzt?

Kannst du mal entweder im MQTT2_SERVER-Device "show MQTT traffic" anklicken oder, falls du ihn installiert hast, im MQTT Explorer schauen und posten, was da gesendet wird, wenn du set shellypstripg4_206ef10295f4 on 0 ausführst?

Vielleicht auch nochmal die Payload überprüfen, kann gut sein, dass ich da irgendwas verbaselt habe.

the ratman

devicetopic ... jetzt ja *g*


hab jetzt mal den explorer besorgt ... falls ich da was spezielles schauen soll - nur sagen

drücke ich set shellypstripg4_206ef10295f4 on 0

kommt als topic und valueshellypstripg4_206ef10295f4/rpc{
  "id": 0,
  "src": "fhem2shelly",
  "method": "Switch.Set",
  "params": {
    "id": 0,
    "on": true
  }
}
seh ich wo mehr?
→do↑p!dnʇs↓shit←

passibe

Ne, das sollte passen und sieht ja auch irgendwie richtig aus, oder?

Was kommt denn im MQTT Explorer, wenn du das hier, was schon einmal funktioniert hast, testest?

Zitat von: the ratman am 11 Februar 2026, 13:37:09es wird! danke dir!

mit
Code Auswählen Erweitern
off:noArg shellypstripg4-206ef10295f4/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false}}\
on:noArg shellypstripg4-206ef10295f4/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true}}
kann ich nun steckdose 0 schalten.
Eigentlich kann ich da keinen Unterschied erkennen ... hmm

the ratman

#35
tut sie auch ... ich probier selbiges jetzt nomal mit $DEVICETOPIC

off:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false}}\
on:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true}}

devicetopic shellypstripg4_206ef10295f4
und im der shelly webinterface steht shellypstripg4-206ef10295f4
das war mal der generelle fehler "_" anstelle "-"

und schon geht auch
off:selectnumbers,0,1,3,0,lin $DEVICETOPIC/rpc {"id":$EVTPART1,"src":"fhem2shelly","method":"Switch.Set","params": {"id":$EVTPART1,"on":false}}
on:selectnumbers,0,1,3,0,lin $DEVICETOPIC/rpc {"id":$EVTPART1,"src":"fhem2shelly","method":"Switch.Set","params": {"id":$EVTPART1,"on":true}}

set shellypstripg4_206ef10295f4 on 0
set shellypstripg4_206ef10295f4 off 0
geht auch problemlos

das passiert, wenn ich blind rumkopiere *g*
somit: vielen dank an dich! die sache rennt. die schuld lag auf meiner seite ...

geniale sache ... hab mir jetzt mal eine ganz primitve readingsgroup gebastelt, und schon schalte ich per knopfdruck *g*
→do↑p!dnʇs↓shit←

passibe

Ah, da lag der Fehler :D Sehr schön, freut mich, dass es klappt.