[GELÖST]ShellyRGB2 fehlende Farbe rgb ->000000 und FFFFFF

Begonnen von rico5588, 17 Oktober 2021, 19:54:49

Vorheriges Thema - Nächstes Thema

rico5588

Hallo Fhemler,

ich steige solangsam mit meinen Geräte auf Shelly um, da diese doch einfacher zu Handhaben sind.
Nun eine Frage zum ShellyRGBW, welches ich mit einem RGBW streifen nutzen möchte.
Ich kann hier alle Farben einstellen (per rgb) z.b. 00FF00 oder FF0000, aber nicht diese beiden -> "000000" und "FFFFFF"
Da ich von Wifilight komme wo dies funktioniert, müsste ich jetzt änderungen vornehmen, was sich im Mischbetrieb schwierig gestaltet. Bevor ich dies due würde ich gern eure Meinung hören.
Eingebunden habe ich dies über MQTT2.

MFG Rico
Internals:
   CID        shellyrgbw2_D887B2
   DEF        shellyrgbw2_D887B2
   DEVICETOPIC MQTT2_shellyrgbw2_D887B2
   FUUID      614f2694-f33f-bec9-d656-1c0cc903e9e3c812
   IODev      myBroker
   LASTInputDev myBroker
   MSGCNT     320
   NAME       MQTT2_shellyrgbw2_D887B2
   NR         1091
   STATE      on
   TYPE       MQTT2_DEVICE
   myBroker_MSGCNT 320
   myBroker_TIME 2021-10-17 19:49:45
   Helper:
     DBLOG:
       power:
         logdb:
           TIME       1634492887.80815
           VALUE      0.23
   READINGS:
     2021-10-17 19:24:18   IODev           myBroker
     2021-09-25 15:42:08   actions_stats_skipped 0
     2021-09-25 15:42:08   attrTemplateVersion 20201215
     2021-10-17 19:48:07   blue            0
     2021-09-25 15:42:08   cfg_changed_cnt 0
     2021-09-25 15:42:08   cloud_connected false
     2021-09-25 15:42:08   cloud_enabled   false
     2021-09-25 15:42:02   color_0         on
     2021-10-17 19:48:09   color_0_energy  35
     2021-10-17 19:48:07   color_0_overpower 0
     2021-10-17 19:48:07   color_0_power   0.23
     2021-10-17 19:48:07   effect          0
     2021-10-17 19:24:38   event           
     2021-10-17 19:24:38   event_cnt       0
     2021-09-25 15:42:08   fs_free         152357
     2021-09-25 15:42:08   fs_size         233681
     2021-10-17 19:24:37   fw_ver          20210909-145215/v1.11.4-DNSfix-ge6b2f6d
     2021-10-17 19:48:07   gain            16
     2021-10-17 19:48:07   green           255
     2021-10-17 19:48:07   has_timer       false
     2021-09-25 15:42:08   has_update      false
     2021-10-17 19:24:37   id              shellyrgbw2-D887B2
     2021-09-25 15:42:08   input           0
     2021-10-17 19:48:07   input_0         0
     2021-09-25 15:42:08   inputs_1_event 
     2021-09-25 15:42:08   inputs_1_event_cnt 0
     2021-09-25 15:42:08   inputs_1_input  0
     2021-10-17 19:24:37   ip              192.168.9.215
     2021-10-17 19:48:07   ison            true
     2021-09-25 15:42:08   lights_1_blue   0
     2021-09-25 15:42:08   lights_1_effect 0
     2021-09-25 15:42:08   lights_1_gain   100
     2021-09-25 15:42:08   lights_1_green  0
     2021-09-25 15:42:08   lights_1_has_timer false
     2021-09-25 15:42:08   lights_1_ison   true
     2021-09-25 15:42:08   lights_1_mode   color
     2021-09-25 15:42:08   lights_1_overpower false
     2021-09-25 15:42:08   lights_1_power  2.38
     2021-09-25 15:42:08   lights_1_red    255
     2021-09-25 15:42:08   lights_1_source http
     2021-09-25 15:42:08   lights_1_timer_duration 0
     2021-09-25 15:42:08   lights_1_timer_remaining 0
     2021-09-25 15:42:08   lights_1_timer_started 0
     2021-09-25 15:42:08   lights_1_transition 0
     2021-09-25 15:42:08   lights_1_white  0
     2021-10-17 19:24:37   mac             E8DB84D887B2
     2021-09-25 15:42:08   meters_1_counters_1 1.829
     2021-09-25 15:42:08   meters_1_counters_2 2.482
     2021-09-25 15:42:08   meters_1_counters_3 0.000
     2021-09-25 15:42:08   meters_1_is_valid true
     2021-09-25 15:42:08   meters_1_overpower false
     2021-09-25 15:42:08   meters_1_power  2.38
     2021-09-25 15:42:08   meters_1_timestamp 1632584528
     2021-09-25 15:42:08   meters_1_total  4
     2021-10-17 19:48:07   mode            color
     2021-10-17 19:24:37   model           SHRGBW2
     2021-09-25 15:42:08   mqtt_connected  true
     2021-10-17 19:24:37   new_fw          true
     2021-10-17 19:49:45   online          false
     2021-10-17 19:48:07   overpower       false
     2021-10-17 19:48:07   power           0.23
     2021-09-25 15:42:08   ram_free        38424
     2021-09-25 15:42:08   ram_total       50880
     2021-10-17 19:48:07   red             255
     2021-10-17 19:48:07   rgb             FFFF00
     2021-09-25 15:42:08   serial          1
     2021-10-17 19:48:07   source          mqtt
     2021-10-17 19:48:07   state           on
     2021-09-25 15:42:08   time            15:42
     2021-10-17 19:48:07   timer_duration  0
     2021-10-17 19:48:07   timer_remaining 0
     2021-10-17 19:48:07   timer_started   0
     2021-10-17 19:48:07   transition      0
     2021-09-25 15:42:08   unixtime        1632577328
     2021-09-25 15:42:08   update_has_update false
     2021-09-25 15:42:08   update_new_version 20210909-145215/v1.11.4-DNSfix-ge6b2f6d
     2021-09-25 15:42:08   update_old_version 20210909-145215/v1.11.4-DNSfix-ge6b2f6d
     2021-09-25 15:42:08   update_status   idle
     2021-09-25 15:42:08   uptime          160
     2021-10-17 19:48:07   white           0
     2021-09-25 15:42:08   wifi_sta_connected true
     2021-09-25 15:42:08   wifi_sta_ip     192.168.9.242
     2021-09-25 15:42:08   wifi_sta_rssi   -52
     2021-09-25 15:42:08   wifi_sta_ssid   FRITZ!Box 7490
     2021-09-25 15:42:08   x_mqttcom       set announce
Attributes:
   devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "true"?"10px-kreis-gruen":"10px-kreis-rot"; my $light = ReadingsVal($name,"state","off"); my $cons = ReadingsVal($name,"power","unknown"); "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a><div>Verbrauch: $cons</div>"}
   genericDeviceType light
   homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
   icon       light_control
   model      shelly2rgbw_color
   readingList shellies/shellyrgbw2-D887B2/color/0/status:.* {json2nameValue($EVENT)}
  shellies/shellyrgbw2-D887B2/color/0:.* state
  shellies/shellyrgbw2-D887B2/online:.* online
  shellies/announce:.* { $EVENT =~ m,..id...shellyrgbw2-D887B2...mac.*, ? json2nameValue($EVENT) : return }
shellyrgbw2_D887B2:shellies/shellyrgbw2-D887B2/announce:.* { json2nameValue($EVENT) }
shellyrgbw2_D887B2:shellies/shellyrgbw2-D887B2/info:.* { json2nameValue($EVENT) }
shellyrgbw2_D887B2:shellies/shellyrgbw2-D887B2/color/0/energy:.* color_0_energy
shellyrgbw2_D887B2:shellies/shellyrgbw2-D887B2/input/0:.* input_0
shellyrgbw2_D887B2:shellies/shellyrgbw2-D887B2/color/0/power:.* color_0_power
shellyrgbw2_D887B2:shellies/shellyrgbw2-D887B2/color/0/overpower:.* color_0_overpower
shellyrgbw2_D887B2:shellies/shellyrgbw2-D887B2/input_event/0:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
   setList    off:noArg shellies/shellyrgbw2-D887B2/color/0/command off
  on:noArg shellies/shellyrgbw2-D887B2/color/0/command on
  brightness:colorpicker,BRI,0,1,255 shellies/shellyrgbw2-D887B2/white/0/set {"mode":"white","brightness":"$EVTPART1"}
  white:colorpicker,BRI,0,1,255 shellies/shellyrgbw2-D887B2/color/0/set {"white":"$EVTPART1"}
  gain:colorpicker,BRI,0,1,100 shellies/shellyrgbw2-D887B2/color/0/set {"gain":"$EVTPART1"}
  rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;if($1 ne $2 || $2 ne $3) {"shellies/shellyrgbw2-D887B2/color/0/set {\"mode\":\"color\",\"red\":".hex($1).",\"green\":".hex($2).",\"blue\":".hex($3)."}"}else{"shellies/shellyrgbw2-D887B2/color/0/set {\"turn\":\"on\",\"mode\":\"white\",\"brightness\":".int(hex($1)/2.55)."}"}}
  white_on:colorpicker,BRI,0,1,100 shellies/shellyrgbw2-D887B2/color/0/set {"turn":"on","white":"$EVTPART1"}
  gain_on:colorpicker,BRI,0,1,100 shellies/shellyrgbw2-D887B2/color/0/set {"turn":"on","gain":"$EVTPART1"}
  rgb_on:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;if($1 ne $2 || $2 ne $3) {"shellies/shellyrgbw2-D887B2/color/0/set {\"turn\":\"on\",\"mode\":\"color\",\"gain\":\"100\",\"red\":".hex($1).",\"green\":".hex($2).",\"blue\":".hex($3)."}"}else{"shellies/shellyrgbw2-D887B2/color/0/set {\"turn\":\"on\",\"mode\":\"white\",\"brightness\":".int(hex($1)/2.55)."}"}}
  effect:selectnumbers,0,1,6,0,lin  shellies/shellyrgbw2-D887B2/color/0/set {"effect":"$EVTPART1"}
  x_update:noArg shellies/shellyrgbw2-D887B2/command update_fw
  x_mqttcom shellies/shellyrgbw2-D887B2/command $EVTPART1
   setStateList on off
   userReadings rgb:red.* {if(ReadingsVal($name,"mode","") eq "color"){sprintf("%02X%02X%02X", ReadingsVal($name,"red",99), ReadingsVal($name,"green",99), ReadingsVal($name,"blue",99))}else{my $a=sprintf("%02X",ReadingsVal($name,"brightness",0)*2.555);"$a$a$a"}}
   webCmd     on:off:white:gain:rgb:effect:rgb FFFFFF:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb FFF9A8
Geht nicht gibt's nicht.
NUC-I3+Proxmox, Fritzbox 7590 AX, Synology DS414
Dimplex Wärmepumpe, Lüftungsanlage, Solarlog 1200
HM,IT,Lacross,EspEasy,Modbus,MQTT2, Freund von Shelly

Beta-User

Na ja, wenn alle Farbwerte gleich sind, ist es eigentlich Weiß, und das biegt der Code in der setList zu RGB halt entsprchend hin. Wenn du das anders haben willst, kannst du ja mal testweise einfach $EVTPART1 unverändert durchreichen.

  rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;'shellies/shellyrgbw2-D887B2/color/0/set {"mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}

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

Hallo,

verstehe nicht ganz. Wo oder wie soll ich den Code testen?
Unter dem Attr Webcmd?
Wie gesagt, es gehen alle Farben außer die beiden.
FFFFFF müsste ja komplett hell machen und 000000 sollte eigentlich schwarz/off bedeuten.
Beide Befehle werden aber gar nicht akzeptiert.

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

Beta-User

Nein, im Attribut "setList" die eine Zeile tauschen, bei der es um rgb geht.

Ich kann aber nicht sagen, ob das klappt; evtl. muss da auch was am userReadings "rgb geändert werden. Es wäre hilfreich, wenn du je ein RAW-list liefern könntest in dem Zustand, dass es (via rgb 000000) ganz aus bzw. rgb FFFFFF ganz an geschaltet ist. In deinem list war ja irgendeine Farbe eingestellt.
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

Genial,

das funktioniert.
Kannst du mir in "einfachen Worten" erklären was jetzt anders ist.

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

Beta-User

Na ja, wenn alle Werte für rot, gelb und blau gleich sind, ist es eigentlich ein "weiß"-Kommando (mit Helligkeitsangabe), und es ist "sauberer", das als solches an den ESP zu übergeben. Genau das macht die ursprüngliche Zeile, die Änderung übermittelt halt immer einen "einfachen" rgb-Wert.

Vom Coding her ist es in der Ausgangsfassung ein "ternärer operator", also eine verkürzte if -then - else-Konstruktion, beide Zeilen verwenden halt eine regex und Perl.

Ist das eine halbwegs einfache Erklärung, oder was interessiert dich im Besonderen?
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

Mich hätte interessiert warum die beiden nicht gehen.
Vermutlich kann der Shelly bei "schwarz" oder "weiß" mit der Helligkeit nicht umgehen, und wenn es direkt kommt gehts.

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

Beta-User

Um das rauszufinden, müßte man ein paar Tests machen, am einfachsten direkte publishes über den MQTT2_SERVER. Dann könnte/müßte man evtl. diese beiden Varianten nochmal gesondert abhandeln...

Mal schauen (aber nicht mehr heute), bitte melden, wenn Interesse besteht.
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

nein muss nicht sein, ab hier beginnt sowieso der Teil wo ich nur noch Bahnhof verstehe. 8)
Wichtig ist die Lösung für mich.
Funktioniert übrigens auch bei einer ShellyBulbduo.
Also Danke nochmal.
Geht nicht gibt's nicht.
NUC-I3+Proxmox, Fritzbox 7590 AX, Synology DS414
Dimplex Wärmepumpe, Lüftungsanlage, Solarlog 1200
HM,IT,Lacross,EspEasy,Modbus,MQTT2, Freund von Shelly

rico5588

#9
Hallo Ich nochmal,

ich habe heute mit Stacktrace folgende Warning erhalten.2021.10.21 17:51:45 1: PERL WARNING: Use of uninitialized value $3 in hex at (eval 646977) line 1.
2021.10.21 17:51:45 1: eval: my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $NAME=   $evalSpecials->{'%NAME'};{$EVTPART1=~/(..)(..)(..)/;'shellies/shellyrgbw2-D887B2/color/0/set {"mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}
2021.10.21 17:51:45 1: stacktrace:

Hängt das mit dieser Veränderung zusammen. Es werden alle 3 $1, $2, $3 als uninitialized angezeigt.
rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;'shellies/shellyrgbw2-D887B2/color/0/set {"mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}
Ich habe es nochmal zurück geändert und da ist mir gerade aufgefallen das keine Farbe geht sobald  $1, $2, $3, den gleichen Wert haben.
Kannst du das bitte noch mal prüfen.
Danke.

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

Beta-User

Also:
Die "uninitialized"-Warnings dürften daher kommen, dass irgendwas/irgendwer versucht, einen "leeren" rgb-Wert zu setzen. Kann man mit einer entsprechenden Abfrage, ob z.B. $3 "defined" ist abfangen. Das ist aber kein originär mit der Änderung zusammenhängendes Thema, sondern eines, das auch die Version im template-file hat.
Irgendwann über das WE wird es daher ein update geben, das das abfängt.

Zitat von: rico5588 am 21 Oktober 2021, 17:59:36
Ich habe es nochmal zurück geändert und da ist mir gerade aufgefallen das keine Farbe geht sobald  $1, $2, $3, den gleichen Wert haben.
Kannst du das bitte noch mal prüfen.
Im Ausgangstemplate ist das Absicht, weil - wie ich bereits versucht habe zu erläutern - "gleichwertige" rgb-Angaben eigentlich Weiß-Anweisungen sind, eben mit unterschiedlichen Helligkeitswerten (000000 mit der Besonderheit, dass es eigentlich "off" ist).

Jetzt muss ich raten, was du mit "zurück geändert" meinst: Falls der ESP auf z.B. "rgb 999999", (im JSON) gesendet als RGB-Angabe, gar nicht reagiert, ist es ein "Problem" der firmware, das das template bisher sauber umschifft hat, halt anscheinend um den Preis, dass "voll an" und "ganz aus" nicht funktionieren. Müßte/könnte man abfangen, indem man diese beiden Werte vorab in der Perl-Anweisung prüft, aber dazu bräuchte ich eine etwas genauere Problembeschreibung, die ich auch nachvollziehen kann (= FHEM-Befehle einerseits, MQTT-Rohdaten andererseits, zusammen mit einem RAW-list des ganzen Devices, das jeweils angesprochen ist).
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

Hallo,

vielleicht drücke ich mich falsch aus.
Punkt1: Im Original Template kann ich im rgb Picker die Werte 000000 und ffffff nicht anwählen. (im Foto Pfeil 1 oder direkt Eingabe)
Punkt2: die anderen Werte kann ich auch nicht anwählen 121212, 131313 etc alle, nennen wir es mal Graustufen. (im Foto Pfeil 2 oder direkt eingabe, wenn FFFFFF gesetzt wäre)
Das ist jetzt kein Problem für mich, wollte es nur mal anzeigen. Eben nur ein Unterschied zum Beispiel zum rgb bei Wifilight.
Mit deinem geänderten code
  rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;'shellies/shellyrgbw2-D887B2/color/0/set {"mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}
geht beides wie ich das von Wifilight kenne, nur eben mit den Warnings!
ZitatIm Ausgangstemplate ist das Absicht, weil - wie ich bereits versucht habe zu erläutern - "gleichwertige" rgb-Angaben eigentlich Weiß-Anweisungen sind, eben mit unterschiedlichen Helligkeitswerten
Das Versteh ich, man kann es halt nur nicht benutzen. Siehe Punkt 2.

Versteh ich das richtig, mit FFFFFF woltest du den 4 Kanal zuschalten?

Mit "zurück geändert" meine ich eben diesen code auf original ↑...

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

Beta-User

Das Widget ist ein allgemeines, dann klappt das mit den beiden (bzw. Weiss-) Werten grundsätzlich nicht, ganz unabhängig vom konkteten Device. Welches Widget WifiLight da nutzt, weiß ich nicht, aber das Widget verhindert auch nicht das händische Setzen, so dass Testen der Werte an sich schon gehen sollte.

Die undef-Geschichte ist nachher mit dem svn-update hoffentlich erledigt.
Versteh ich das richtig, mit FFFFFF woltest du den 4 Kanal zuschalten?
Doppeltes Mißverständnis:
a) der Code ist nicht ursprünglich von mir, ich sammle nur ein, versuche eine Linie reinzubringen und stelle es dann allen zur Verfügung. Die meisten Geräte habe ich gar nicht, und WLAN finde ich sowieso "bäh"...
b) Alle weiss-Anweisungen gehen grundsätzlich in den white-Modus über, was ja grundsätzlich richtig sein sollte... Wie die Hardware das dann konkret umsetzt, entzieht sich meiner Kenntnis (siehe a) am Ende).
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

Hallo ich nochmal,

ich möchte gern meine Device für mich (für alle) noch etwas anpassen.
Ob du mir nochmal suport geben kannst?
Meine Vorstellung...
Wenn RGB = 000000 oder OFF dann aus.
off:noArg| shellies/shellycolorbulb-3C6105E500CC/color/0/command off
rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;if($1 eq "00" || $2 eq "00" || $3 eq "00") {"shellies/shellycolorbulb-3C6105E500CC/color/0/command off"}}


Wenn RGB = FFFFFF dann mode white mit Temp 4000
rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;if($1 eq "FF" || $2 eq "FF" || $3 eq "FF")  {\"mode\":\"white\",\"brightness\":\"255\",\"temp\":\"4000\"}"}
alle anderen Farben 1:1

Es gibt noch eine Funktion effect in der Shellybulb, welche aktuell nicht angelegt ist...
Ich dachte das könnte so gehen, aber nein!
effect:selectnumbers,0,1,3,0,lin  shellies/shellycolorbulb-3C6105E500CC/color/0/set {"effect":"$EVTPART1"}

MFG Rico (und wenn es mal zeitlich reinpasst, kein Stress!)
Geht nicht gibt's nicht.
NUC-I3+Proxmox, Fritzbox 7590 AX, Synology DS414
Dimplex Wärmepumpe, Lüftungsanlage, Solarlog 1200
HM,IT,Lacross,EspEasy,Modbus,MQTT2, Freund von Shelly

Beta-User

Da geht was mit den Abfragen durcheinander...

Zum einen muss alles, was rgb ist, dann auch über den einen setter gehen, hier mal ein Beispiel für die Erweiterung bzgl. "off":
  rgb:colorpicker,RGB { return 'shellies/shellycolorbulb-3C6105E500CC/color/0/command off' if $EVTPART1 eq '000000'; $EVTPART1=~/(..)(..)(..)/;'shellies/shellyrgbw2-D887B2/color/0/set {"mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}Das sollte eigentlich ausreichen, damit du auch die Temp 4000-Variante hinbekommst ;) .
Zum Effekt:
An sich sieht dein Versuch schon ganz ok aus, kann sein, dass "nur" die falsche nummerische Übergabe stört (der reinen Lehre nach ohne Quotes), kann auch sein, dass ein weiterer Befehl dazu muss, z.B. on:

effect:selectnumbers,0,1,3,0,lin  shellies/shellycolorbulb-3C6105E500CC/color/0/set {"effect": $EVTPART1, "turn": "on"}
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

die effekte gehen nun :D
Nun zu den Farben
Wichtig ist es immer die gleiche Lampe anzusprechen ;D 8) (3C6105E500CC<->shellyrgbw2-D887B2) habe gerade wieder die Küche zum leuchten gebracht...

Aber die "test" bulb geht nun - alles Farbig und Aus bei 000000.
  rgb:colorpicker,RGB { return 'shellies/shellycolorbulb-3C6105E500CC/color/0/command off' if $EVTPART1 eq '000000'; $EVTPART1=~/(..)(..)(..)/;'shellies/shellyrgbw2-D887B2/color/0/set {"mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}

Wenn ich jetzt noch FFFFFF dazu haben möchte kann ich das dann so erweitern?
  rgb:colorpicker,RGB { return 'shellies/shellycolorbulb-3C6105E500CC/color/0/command off' if $EVTPART1 eq '000000'; return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {\"turn\":\"on\",\"brightness\":".int(hex($1)/2.55).",\"mode\":\"white\",\"temp\":\"$EVTPART1\"}' if $EVTPART1 eq 'FFFFFF'; $EVTPART1=~/(..)(..)(..)/;'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}


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

Beta-User

Na ja, ein bißchen selber Knobeln schadet doch eigentlich nicht...

Dass du den weiteren Pfad als "mittleren Teil" ergänzen müßtest, hast du ja bereits korrekt erfasst. Aber warum dann noch die (nicht aufzulösende (s.u.)) Variable $EVTPART1 da steht, erschließt sich mir nicht, genausowenig die "escapes" für die doppelten Quotes.
Dein Suchwort heißt "Quotes in Perl" - siehe z.B. https://www.perlmonks.org/?node_id=401006.

Das bekommst du schon vollends hin ;) .
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

ich brauch doch nochmal einen Gedankeanstoß.
Ich bekomme es nicht hin, den mode White zu aktivieren.
Perl bin ich nicht so ganz (garnicht) Fit und meine TrialandError Methode zieht nicht  8)
Das hier sollte nach meiner Theorie den mode white, mit Farbe 4000 setzen, wo liegt das Problem ?
rgb:colorpicker,RGB { return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {\"mode\":\"white\,\"temp\":\"4000\"}' if $EVTPART1 eq 'FFFFFF'}
Gruß Rico
Geht nicht gibt's nicht.
NUC-I3+Proxmox, Fritzbox 7590 AX, Synology DS414
Dimplex Wärmepumpe, Lüftungsanlage, Solarlog 1200
HM,IT,Lacross,EspEasy,Modbus,MQTT2, Freund von Shelly

Beta-User

#18
Zitat von: rico5588 am 05 November 2021, 16:50:19
wo liegt das Problem ?
Bei "Quotes in Perl", ein bißchen "paarig" zählen, und einem fehlenden "Hosenträger" (vermutlich) ::) ...
rgb:colorpicker,RGB { return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"white","temp":4000}' if $EVTPART1 eq 'FFFFFF'}

Ergänzend: Geschweifte Klammern sind mehrdeutig:
- die ersten sind für "das ist Perl-Code"-Erkennung in MQTT2_DEVICE;
- die inneren sind hier (!) die Textmarker für "das ist JSON" in der Payload
Es gibt aber noch weitere geschweifte Klammer-Typen, die man kennen sollte:
- Abgrenzung von "if"-Zweigen in Perl (bei "normalem, vorangestelltem if");
- Hash-Marker, um key-Value-Paare in Perl kenntlich zu machen/zu erzeugen...

Ist nicht ganz selbsterklärend, und man muss aufpassen, in welchem Kontext was steht.
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

#19
So hatte ich das gestern auch schon versucht, geht aber nicht.
Zitatrgb:colorpicker,RGB { return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"white","temp":4000}' if $EVTPART1 eq 'FFFFFF'}
so ↓ schaltet es zumindest in jede Farbe auf mode:white
rgb:colorpicker,RGB shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"white","temp":4000}
Geht nicht gibt's nicht.
NUC-I3+Proxmox, Fritzbox 7590 AX, Synology DS414
Dimplex Wärmepumpe, Lüftungsanlage, Solarlog 1200
HM,IT,Lacross,EspEasy,Modbus,MQTT2, Freund von Shelly

Beta-User

Mein Testgerät sagt, dass FFFFFF mit meinem Code zu einem passenden publish führt => kann keinen Fehler erkennen, tut mir leid.
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


so gehts nicht
rgb:colorpicker,RGB { return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"white","temp":"$EVTPART1"}' if $EVTPART1 eq 'FFFFFF'}

so geht es bei jedem Farbwert
rgb:colorpicker,RGB { return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"white","temp":"$EVTPART1"}'}

so geht es bei jedem Farbwert, sollte aber nur bei "FFFFFF" gehen
rgb:colorpicker,RGB { return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"white","temp":4000}'if $EVTPART1 == 'FFFFFF'}
rgb:colorpicker,RGB { return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"white","temp":4000}'if $EVTPART1 = 'FFFFFF'}


Es wird der Farbwert nicht erkannt. Andere gehen auch nicht (z.b. FFFFF1)
Noch eine Idee was ich testen kann?
Geht nicht gibt's nicht.
NUC-I3+Proxmox, Fritzbox 7590 AX, Synology DS414
Dimplex Wärmepumpe, Lüftungsanlage, Solarlog 1200
HM,IT,Lacross,EspEasy,Modbus,MQTT2, Freund von Shelly

Beta-User

Dieses wilde rumprobieren wird nicht weiterführen.

Sowas ist Quatsch und die Konsequenz im Log zu finden sein (nummeric eq)
Zitatif $EVTPART1 == 'FFFFFF'
Das ist auch Quatsch:
if $EVTPART1 = 'FFFFFF'"=" ist eine Zuweisung, und die klappt/ist wahr.

Du mußt dich mit den Grundlagen beschäftigen.

Nochmal:
Zitat von: Beta-User am 05 November 2021, 17:07:48
Mein Testgerät sagt, dass FFFFFF mit meinem Code zu einem passenden publish führt => kann keinen Fehler erkennen, tut mir leid.
Was immer du gestern versucht hast, es war ziemlich sicher (geringfügig) was anderes. Damit bin ich erst mal raus.
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

#23
Hallo,

Finale:
ich habe mich vom Colorpicker etwas in die Irre führen lassen.
Ich habe immer im Colorpicker FFFFFF eingegeben und dort hat er immer die Farbe FFFFFF im mode color eingestellt.
Niemals aber ist er in den mode white gesprungen...
Nach langem "Rum" probieren  ;D habe ich den Befehl mal direkt abgesetzt.
set shelly2 rgb FFFFFF
Und hier geht's...
Alles nochmal auf Anfang und nun bin ich zufrieden.

Anbei nochmal die komplette RAW.
Vielleicht willst du ja den Teil mit die Effekte noch ins Temp übernehmen.
Da man zum umschalten des mode color|white das turn:on mitgeben muß, habe ich mir rgb_on gesparrt.

defmod Shelly2 MQTT2_DEVICE shellycolorbulb_3C6105E500CC
attr Shelly2 comment rgb:colorpicker,RGB {return 'shellies/shellycolorbulb-3C6105E500CC/color/0/command off' if $EVTPART1 eq '000000';;  return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"white","temp":"$EVTPART1"}' if $EVTPART1 eq 'FFFFFF';;   $EVTPART1=~/(..)(..)(..)/;;  'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}
attr Shelly2 devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "true"?"10px-kreis-gruen":"10px-kreis-rot";; my $light = ReadingsVal($name,"state","off");; my $cons = ReadingsVal($name,"power","unknown");; "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a><div>Verbrauch: $cons</div>"}
attr Shelly2 disable 0
attr Shelly2 genericDeviceType light
attr Shelly2 homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr Shelly2 icon light_control
attr Shelly2 jsonMap brightness:pct
attr Shelly2 model shellybulb
attr Shelly2 readingList shellies/shellycolorbulb-3C6105E500CC/color/0/status:.* {json2nameValue($EVENT,'',$JSONMAP)}\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/online:.* online\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/announce:.* { json2nameValue($EVENT) }\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/info:.* { json2nameValue($EVENT) }\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/color/0:.* color_0\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/light/0/power:.* light_0_power\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/light/0/energy:.* light_0_energy\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/color/0/status:.* { json2nameValue($EVENT) }
attr Shelly2 room MQTT2_DEVICE
attr Shelly2 setList off:noArg shellies/shellycolorbulb-3C6105E500CC/color/0/command off\
  on:noArg shellies/shellycolorbulb-3C6105E500CC/color/0/command on\
  effect:selectnumbers,0,1,3,0,lin  shellies/shellycolorbulb-3C6105E500CC/color/0/set {"effect":"$EVTPART1"}\
  effect_on:selectnumbers,0,1,3,0,lin  shellies/shellycolorbulb-3C6105E500CC/color/0/set {"effect": $EVTPART1, "turn": "on"}\
  pct:colorpicker,BRI,0,1,100 shellies/shellycolorbulb-3C6105E500CC/color/0/set {"gain":"$EVTPART1","brightness":"$EVTPART1"}\
  pct_on:colorpicker,BRI,0,1,100 shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","gain":"$EVTPART1","brightness":"$EVTPART1"}\
  ct:colorpicker,CT,3000,10,6500 {$EVTPART1=3000 if ($EVTPART1<3000);;"shellies/shellycolorbulb-3C6105E500CC/color/0/set {\"mode\":\"white\",\"temp\":\"$EVTPART1\"}"}\
  ct_on:colorpicker,CT,3000,10,6500 {$EVTPART1=3000 if ($EVTPART1<3000);;"shellies/shellycolorbulb-3C6105E500CC/color/0/set {\"turn\":\"on\",\"mode\":\"white\",\"temp\":\"$EVTPART1\"}"}\
  x_update:noArg shellies/shellycolorbulb-3C6105E500CC/command update_fw\
  x_mqttcom shellies/shellycolorbulb-3C6105E500CC/command $EVTPART1\
  rgb:colorpicker,RGB {return 'shellies/shellycolorbulb-3C6105E500CC/color/0/command off' if $EVTPART1 eq '000000';;  return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"white","temp":"$EVTPART1"}' if $EVTPART1 eq 'FFFFFF';;   $EVTPART1=~/(..)(..)(..)/;;  'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}
attr Shelly2 setStateList on off
attr Shelly2 userReadings ct:temp.* {ReadingsVal($name,"temp",3000)}, rgb:red.* {if(ReadingsVal($name,"mode","") eq "color"){sprintf("%02X%02X%02X", ReadingsVal($name,"red",99), ReadingsVal($name,"green",99), ReadingsVal($name,"blue",99))}else{my $a=sprintf("%02X",ReadingsVal($name,"brightness",0)*2.555);;"$a$a$a"}}
attr Shelly2 webCmd on:off:rgb:pct:ct:effect


zu guter letzt ...
Der state bleibt immer auf set_on oder set_off stehen, gibt es hierfür noch einen Trick?
Dieser hier https://forum.fhem.de/index.php/topic,94494.msg998583.html#msg998583 geht nicht da es kein Reading mit Power gibt?!


Ich habe das Device nochmal neu angelegt, damit war der "set" Fehler weg...und noch ein paar anpassungen durch geführt.
Im Attr devStateIcon steht ReadingsVal($name,"power","unknown")
Das Reading power gibt es bei mir nicht-> geändert in "light_0_power", nun wird der Verbrauch angezeigt.

alle Setlist Einträge mit "_on" haben nicht mehr funktioniert.
Ich habe Sie entfernt und "turn": "on" in den normal Zweig eingefügt.

webCmd effect hinzugefügt

defmod Shelly2 MQTT2_DEVICE shellycolorbulb_3C6105E500CC
attr Shelly2 devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "true"?"10px-kreis-gruen":"10px-kreis-rot";; my $light = ReadingsVal($name,"state","off");; my $cons = ReadingsVal($name,"light_0_power","unknown");; "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a><div>Verbrauch: $cons</div>"}
attr Shelly2 genericDeviceType light
attr Shelly2 homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr Shelly2 icon light_control
attr Shelly2 jsonMap brightness:pct
attr Shelly2 model shellybulb
attr Shelly2 readingList shellies/shellycolorbulb-3C6105E500CC/color/0/status:.* {json2nameValue($EVENT,'',$JSONMAP)}\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/online:.* online\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/announce:.* { json2nameValue($EVENT) }\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/info:.* { json2nameValue($EVENT) }\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/color/0:.* color_0\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/light/0/power:.* light_0_power\
shellycolorbulb_3C6105E500CC:shellies/shellycolorbulb-3C6105E500CC/light/0/energy:.* light_0_energy
attr Shelly2 room MQTT2_DEVICE
attr Shelly2 setList off:noArg shellies/shellycolorbulb-3C6105E500CC/color/0/command off\
  on:noArg shellies/shellycolorbulb-3C6105E500CC/color/0/command on\
  effect:selectnumbers,0,1,3,0,lin  shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn": "on","mode":"color","effect":"$EVTPART1"}\
  pct:colorpicker,BRI,0,1,100 shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","gain":"$EVTPART1","brightness":"$EVTPART1"}\
  ct:colorpicker,CT,3000,10,6500 {$EVTPART1=3000 if ($EVTPART1<3000);;"shellies/shellycolorbulb-3C6105E500CC/color/0/set {\"turn\":\"on\",\"mode\":\"white\",\"temp\":\"$EVTPART1\"}"}\
  x_update:noArg shellies/shellycolorbulb-3C6105E500CC/command update_fw\
  x_mqttcom shellies/shellycolorbulb-3C6105E500CC/command $EVTPART1\
  rgb:colorpicker,RGB {return 'shellies/shellycolorbulb-3C6105E500CC/color/0/command off' if $EVTPART1 eq '000000';;  return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"white","temp":"$EVTPART1"}' if $EVTPART1 eq 'FFFFFF';;   $EVTPART1=~/(..)(..)(..)/;;  'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}\

attr Shelly2 userReadings ct:temp.* {ReadingsVal($name,"temp",3000)}, rgb:red.* {if(ReadingsVal($name,'mode','') eq 'color'){sprintf("%02X%02X%02X", ReadingsVal($name,'red',99), ReadingsVal($name,'green',99), ReadingsVal($name,'blue',99))}else{my $a=sprintf("%02X",ReadingsVal($name,'brightness',0)*2.555);;"$a$a$a"}}
attr Shelly2 webCmd on:off:pct:ct:rgb:effect


Bekannter Fehler die noch offen sind
- state zeigt neben on off (as Lampe) auch rgb,ct,pct,effect im Klartext was erstmal komisch aussieht.
Geht nicht gibt's nicht.
NUC-I3+Proxmox, Fritzbox 7590 AX, Synology DS414
Dimplex Wärmepumpe, Lüftungsanlage, Solarlog 1200
HM,IT,Lacross,EspEasy,Modbus,MQTT2, Freund von Shelly

rico5588

und hier noch das Template falls von Interesse
####################### shellybulb using original firmware
########################### by Rico
name:shellybulb
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*shellies.*
desc:shellybulb using original firmware <br>Tested with 1.49
order:A_15
par:DEVNAME;name of this shelly;{ AttrVal('DEVICE','readingList','') =~ m,shellies/([^/]+)/, ? $1 : undef }
par:ICON;ICON as set, defaults to light_control;{ AttrVal('DEVICE','icon','light_control') }
attr DEVICE icon ICON
attr DEVICE devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'true'?'10px-kreis-gruen':'10px-kreis-rot'; my $light = ReadingsVal($name,'state','off'); my $cons = ReadingsVal($name,'light_0_power','unknown'); '<a href="http://'.ReadingsVal($name,'ip','none').' "target="_blank">'.FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a><div>Verbrauch: $cons</div>"}
attr DEVICE setList\
  off:noArg shellies/DEVNAME/color/0/command off\
  on:noArg shellies/DEVNAME/color/0/command on\
  effect:selectnumbers,0,1,3,0,lin  shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn": "on","mode":"color","effect":"$EVTPART1"}\
  pct:colorpicker,BRI,0,1,100 shellies/DEVNAME/color/0/set {"turn":"on","gain":"$EVTPART1","brightness":$EVTPART1}\
  ct:colorpicker,CT,3000,10,6500 {$EVTPART1=3000 if $EVTPART1<3000;qq(shellies/DEVNAME/color/0/set {"turn":"on","mode":"white","temp":$EVTPART1})}\
  rgb:colorpicker,RGB {return 'shellies/shellycolorbulb-3C6105E500CC/color/0/command off' if $EVTPART1 eq '000000';  return 'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"white","temp":"$EVTPART1"}' if $EVTPART1 eq 'FFFFFF';   $EVTPART1=~/(..)(..)(..)/;  'shellies/shellycolorbulb-3C6105E500CC/color/0/set {"turn":"on","mode":"color","red":'.hex($1).',"green":'.hex($2).',"blue":'.hex($3).'}'}\
  x_update:noArg shellies/DEVNAME/command update_fw\
  x_mqttcom shellies/DEVNAME/command $EVTPART1
deletereading -q DEVICE status_.*
attr DEVICE readingList shellies/DEVNAME/color/0/status:.* {json2nameValue($EVENT,'',$JSONMAP)}
attr DEVICE userReadings ct:temp.* {ReadingsVal($name,"temp",3000)}, rgb:red.* {if(ReadingsVal($name,'mode','') eq 'color'){sprintf("%02X%02X%02X", ReadingsVal($name,'red',99), ReadingsVal($name,'green',99), ReadingsVal($name,'blue',99))}else{my $a=sprintf("%02X",ReadingsVal($name,'brightness',0)*2.555);"$a$a$a"}}
attr DEVICE webCmd on:off:pct:ct:rgb:effect
attr DEVICE jsonMap brightness:pct
set DEVICE x_mqttcom announce
set DEVICE attrTemplate speechcontrol_type_light
attr DEVICE model shellybulb
setreading DEVICE attrTemplateVersion 20211022
Geht nicht gibt's nicht.
NUC-I3+Proxmox, Fritzbox 7590 AX, Synology DS414
Dimplex Wärmepumpe, Lüftungsanlage, Solarlog 1200
HM,IT,Lacross,EspEasy,Modbus,MQTT2, Freund von Shelly

Beta-User

Via update kommt jetzt eine etwas veränderte Fassung. Wäre nett, wenn du die (ggf. mit einer Kopie deines "fertigen eigenen" Gerätes) austesten könntest.
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

Sieht sehr gut aus, geht besser wie meins. :o ;D

Ich kann jetzt im Colorpicker "FFFFFF" eingeben und die Lampe schaltet auf mode white.
Verbrauchsanzeige geht auch richtig!
siehe Anhang

Eine Frage, kann man einen Zeilenumbruch im Setlist machen? Dadurch das die Zeile solang geworden ist das Device Fenster 4 Seiten breit.
Grundsätzlich ist das kein Problem, eher eine schönheitsfrage!

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

Beta-User

Zitat von: rico5588 am 11 November 2021, 19:53:47
Eine Frage, kann man einen Zeilenumbruch im Setlist machen? Dadurch das die Zeile solang geworden ist das Device Fenster 4 Seiten breit.
Grundsätzlich ist das kein Problem, eher eine schönheitsfrage!
Das Attribut setList wird zeilenweise ausgewertet, der Perl-Code kann daher leider nicht umgebrochen werden. Evtl. könnte man mit etwas css nachhelfen, dass der Text nicht ganz so klein wird und/oder in der html-Ansicht umgebrochen, aber funktional im Attribut geht das afaik nicht.

Ansonsten: Danke für die Rückmeldung, dass das so funktioniert wie erhofft... 8)
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

Habe gerade gemerkt das noch eine kleinigkeit fehlt...

RGB:colorpicker,RGB {return 'shellies/shellycolorbulb-E8DB84AA555A/color/0/command off' if $EVTPART1 eq '000000'; 
return 'shellies/shellycolorbulb-E8DB84AA555A/color/0/set {"turn":"on","mode":"white","temp":4000}' if $EVTPART1 eq 'FFFFFF';
$EVTPART1=~/(..)(..)(..)/;
return if !defined $3; if($1 ne $2 || $2 ne $3){qq(shellies/shellycolorbulb-E8DB84AA555A/color/0/set {"mode":"color","gain":"100","red":).hex($1).qq(,"green":).hex($2).qq(,"blue":).hex($3).'}'}
else{qq(shellies/shellycolorbulb-E8DB84AA555A/color/0/set {"turn":"on","mode":"white","brightness":).int(hex($1)/2.55).'}'}}

und zwar "turn":"on" im vorletzten zweig. Dadurch geht rgb mit einem Set Befehl nicht aus dem "aus" zustand an.
(nicht Wundern ich musste aus rgb, RGB machen damit mein doif vereinheitlicht bleiben kann.

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