Template / setlist für Shelly Plus RGBW PM

Begonnen von roedert, 14 Juli 2024, 08:33:35

Vorheriges Thema - Nächstes Thema

roedert

Ich habe o.a. neuen Shelly. Für MQTT gibt es dafür jedoch noch kein Template. Daher habe ich versucht selbst die MQTT-setList zu erstellen, bisher jedoch ohne Erfolg.
Die Plus-Geräte unterscheiden sind vom MQTT-Syntax ja deutlich von den Vorgängern.

Hat hier schon jemand Erfahrungen machen können?

enno

Moin Roedert,

Ich habe auch drei der Teile hier liegen und bin ungefähr so weit wie du :P Welche Einstellungen hast du im Shelly bei MQTT aktiviert?

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

rico5588

Hallo Ihr beiden,

wollte mal fragen ob ihr zufällig schon etwas erreicht habt. Besitze jetzt auch einen solchen Shelly und steh total auf dem Schlauch... :o
Geht nicht gibt's nicht.
NUC-I3+Proxmox, Fritzbox 7590 AX, Synology DS423+
Dimplex Wärmepumpe, Lüftungsanlage, Solarlog 1200
HM,IT,Lacross,EspEasy,Modbus,MQTT2, Freund von Shelly

rico5588

#3
Hallo,

ich würde gern beim erstellen des Template unterstützen. Leider weicht die neue Serie von Shelly stark von den alten ab.
Bis jetzt habe ich folgendes hinbekommen.
on, off, toggle,white , pct (helligkeit),trans...(Zeit zum wechsel Farbe/Helligkeit), rot (zum Test),

on:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"RGBW.Set","params": {"id":0,"on":true}}\
off:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"RGBW.Set","params": {"id":0,"on":false}}\
toggle:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"RGBW.Toggle","params": {"id":0}}\
white:colorpicker,BRI,0,5,255 $DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"RGBW.Set","params": {"id":0,"on":true,"white":$EVTPART1}}\
pct:colorpicker,BRI,0,5,100 $DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"RGBW.Set","params": {"id":0,"on":true,"brightness":$EVTPART1}}\
transition_duration:colorpicker,BRI,1,1,10 $DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"RGBW.Set","params": {"id":0,"on":true,"transition_duration":$EVTPART1}}\
rot:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"RGBW.Set","params": {"id":0,"on":true,"rgb":[255,0,0]}}\

mit dem colorpicker habe ich so meine Probleme da ich nicht das richtige Verständiss für Perl habe.
die 3 Versuche gehen nicht!
# rgb:colorpicker,RGB {return '$DEVICETOPIC/rpc' if $EVTPART1 eq '000000';  return '$DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"RGBW.Set","params": {"id":0,"on":true,"rgb":[$EVTPART1]}}'; $EVTPART1=~/(..),(..),(..)/;  '$DEVICETOPIC/rpc {"turn":"on","mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}
# rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;'$DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"RGBW.Set","params": {"id":0,"on":true,"rgb":['.hex($1).',"green":'.hex($2).',"blue":'.hex($3).']}}'}
  rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;if($1 ne $2 || $2 ne $3) {"$DEVICETOPIC/rpc {\"id\":0,\"src\":\"fhem\",\"method\":\"RGBW.Set\",\"params\": {\"id\":0,\"on\":true,\"rgb\":[.hex($1),.hex($2),.hex($3)]}}"}else{"$DEVICETOPIC/rpc {\"turn\":\"on\",\"mode\":\"white\",\"brightness\":".int(hex($1)/2.55)."}"}}

die letzte Zeile macht fast alles was Sie soll aus der hex Teil welcher nicht funktioniert.
rpc = {"id":0,"src":"fhem","method":"RGBW.Set","params": {"id":0,"on":true,"rgb":[{.hex(29)},.hex($2),.hex($3)]}}
wenn mir jemand unter Arme greifen möchte...nur zu.
Sobald die Setliste fertig ist könnte man es in ein Template stecken.
Gruß Rico

 
Geht nicht gibt's nicht.
NUC-I3+Proxmox, Fritzbox 7590 AX, Synology DS423+
Dimplex Wärmepumpe, Lüftungsanlage, Solarlog 1200
HM,IT,Lacross,EspEasy,Modbus,MQTT2, Freund von Shelly

Beta-User

Cool! Schau mal in der template-file nach was, das den Rückgabestring mit "qq" zusammen setzt, dann wird es einfacher zu lesen und zu coden.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rico5588

noch habe ich das manuell ins Device geschrieben...es gibt aktuell noch kein Template.
Im Teil rgb... wird die Wandlung vom Farbcode nicht richtig aufgelösst.
[.hex($1),.hex($2),.hex($3)]Es sollte das -> [255,0,0] ankommen, aber es kommt so [hex(ff),.hex(00),.hex(00)] an. Vermutlich ein Klammer oder Sonderzeichen Problem 🤷�♂️.
im ganzen sieht es so aus. ↓
rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;if($1 ne $2 || $2 ne $3) {"$DEVICETOPIC/rpc {\"id\":0,\"src\":\"fhem\",\"method\":\"RGBW.Set\",\"params\": {\"id\":0,\"on\":true,\"rgb\":[.hex($1),.hex($2),.hex($3)]}}"}else{"$DEVICETOPIC/rpc {\"turn\":\"on\",\"mode\":\"white\",\"brightness\":".int(hex($1)/2.55)."}"}}
Geht nicht gibt's nicht.
NUC-I3+Proxmox, Fritzbox 7590 AX, Synology DS423+
Dimplex Wärmepumpe, Lüftungsanlage, Solarlog 1200
HM,IT,Lacross,EspEasy,Modbus,MQTT2, Freund von Shelly

TomLee

#6
Zitat... wird die Wandlung vom Farbcode nicht richtig aufgelösst.

Hallo,

wenn Du die Funktionsaufrufe zuvor in Variablen schreibst und diese in der Rückgabe angibst, dann werden diese aufgelöst:

...my $h1=hex($1);my $h2=hex($2);my $h3=hex($3);if($1 ne $2 || $2 ne $3) {qq($DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"RGBW.Set","params": {"id":0,"on":true,"rgb":[$h1,$h2,$h3]}})}...
Gruß Thomas

edit:
statt drei Variablen könnte man auch ein Array verwenden:
... my @a=(hex($1),hex($2),hex($3));if($1 ne $2 || $2 ne $3) {qq($DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"RGBW.Set","params": {"id":0,"on":true,"rgb":[$a[0],$a[1],$a[2]]}})}...