tint LED Birne (Zigbee2MQTT) - bei SET COLOR fehlt der Hashtag => blaue Farbe

Begonnen von THenkel, 14 Oktober 2020, 00:11:24

Vorheriges Thema - Nächstes Thema

THenkel

Hallo FHEM Begeisterte....

ich nutze FHEM seit ca. 3 Jahren und konnte bisher alle Probleme anhand der Doku oder diesem außergewöhnlichen Forum lösen.
Nun bin ich aber so tief abgestiegen, dass ich mich nicht mehr zurecht finde.
Mein Problem ist, dass die Farbeinstellung tint E14 RGB white + color von Müller Licht (zigbee) nicht funktioniert.
Bei jedem RGB-Wert wird ein Birne blau. Nach meinen Erkenntnissen sendet das Widget colorpicker die Daten wohl nicht mit dem erforderlichen Hashtag zum Device.


Hier die Daten aus dem Pairing:
{"modelId":"ZBT-ExtendedColor","manufacturerName":"MLI"}' from endpoint 1 with groupID 0
{"powerSource":1,"zclVersion":3}' from endpoint 1 with groupID 0
{"appVersion":1,"stackVersion":1}' from endpoint 1 with groupID 0
{"hwVersion":1,"dateCode":"20190827-98"}' from endpoint 1 with groupID 0
{"swBuildId":"5.2"}' from endpoint 1 with groupID 0


Ich nutze fhem 6.0 (SVN rev: 22960) mit ENOCEAN (TCM_ESP3_0 an USB) und ZIGBEE (CC2531 an USB) und zigbee2mqtt 1.11.0

Ausgabe von list <device> in fhem:

Internals:
   DEF        404000/404005/404012 0xccccccfffee8xxxx
   FRIENDLYNAME 0xccccccfffee8xxxx
   FUUID      5f85652c-f33f-8ac5-5818-56281d0bxxxxxxxx
   IODev      MQTT
   MODEL      404000/404005/404012
   NAME       0xccccccfffee8xxxx
   NOTIFYDEV  global
   NR         261
   NTFY_ORDER 50-0xccccccfffee8xxxx
   SID        0xccccccfffee8xxxx
   STATE      OFF
   TOPIC      zigbee2mqtt
   TYPE       XiaomiMQTTDevice
   Helper:
     DBLOG:
       brightness:
         logdb:
           TIME       1602623868.45528
           VALUE      254
       color:
         logdb:
           TIME       1602623868.45528
           VALUE      FFE1A1
       color-hue:
         logdb:
           TIME       1602623868.45528
           VALUE      166
       color-saturation:
         logdb:
           TIME       1602623868.45528
           VALUE      77
       color-x:
         logdb:
           TIME       1602612886.30547
           VALUE      0.4105
       color-y:
         logdb:
           TIME       1602612886.30547
           VALUE      0.3927
       color_mode:
         logdb:
           TIME       1602623868.45528
           VALUE      1
       color_temp:
         logdb:
           TIME       1602623868.45528
           VALUE      153
       linkquality:
         logdb:
           TIME       1602623868.45528
           VALUE      52
       rgb:
         logdb:
           TIME       1602623868.45528
           VALUE      FFE1A1
       state:
         logdb:
           TIME       1602623868.45528
           VALUE      OFF
       transmission-state:
         logdb:
           TIME       1602623868.20047
           VALUE      incoming publish received
   READINGS:
     2020-10-13 23:17:48   brightness      254
     2020-10-13 23:17:48   color           FFE1A1
     2020-10-13 23:17:48   color-hue       166
     2020-10-13 23:17:48   color-saturation 77
     2020-10-13 20:14:46   color-x         0.4105
     2020-10-13 20:14:46   color-y         0.3927
     2020-10-13 23:17:48   color_mode      1
     2020-10-13 23:17:48   color_temp      153
     2020-10-13 23:17:48   linkquality     52
     2020-10-13 23:17:48   rgb             FFE1A1
     2020-10-13 23:17:48   state           OFF
     2020-10-13 23:17:48   transmission-state incoming publish received
   message_ids:
   subscribe:
     zigbee2mqtt/0xccccccfffee8xxxx
     xiaomi/0xccccccfffee8xxxx/#
   subscribeExpr:
     ^zigbee2mqtt\/0xccccccfffee8xxxx$
     ^xiaomi\/0xccccccfffee8xxxx.*$
   subscribeQos:
     xiaomi/0xccccccfffee8xxxx/# 0
     zigbee2mqtt/0xccccccfffee8xxxx 0
Attributes:
   IODev      MQTT
   alias      TINT Lampe1
   devStateIcon {Color::devStateIcon($name,"rgb","rgb","state")}
   icon       hue_filled_white_e27_b22
   stateFormat state
   userReadings color { cieToRgb(ReadingsVal("0xccccccfffee8xxxx","color-x",0),ReadingsVal("0xccccccfffee8xxxx","color-y",0),ReadingsVal("0xccccccfffee8xxxx","brightness",254) ) }, rgb { cieToRgb(ReadingsVal("0xccccccfffee8xxxx","color-x",0),ReadingsVal("0xccccccfffee8xxxx","color-y",0),ReadingsVal("0xccccccfffee8xxxx","brightness",254) ) }
   webCmd     on:off:toggle:brightness:color_temp:color:rgb
   widgetOverride brightness:slider,0,15,255 color_temp:colorpicker,CT,100,1,500 color:colorpicker,HSV rgb:colorpicker,RGB

   
Zum Extrakt bzw. Konvertierung des eingestellten Farbcodes von CIE xy als RGB habe ich mir entlang des Beitrages von KernSani in meiner eigene Bibliothek die Funktion cieToRGB eingefügt und nutze diese bei den userReadings: https://forum.fhem.de/index.php?topic=96783.0. D.h. die UserReadings color und rgb wurden von mir mit der Funktion cieToRGB aus den Werten X,Y,Brightness berechnet, sie werden nicht direkt vom Device gesandt.


Ich kann die LED-Birne ein-/ausschalten, ich kann die Helligkeit (brightness) und auch Farbtemperatur (color_temp) über die FHEM Widgets einstellen.
Leider kann ich die Farbe nicht über ein FHEM Widget einstellen, die LED erstrahl immer in blau.
Das Einstellen der Farbe via 'RGB' funktioniert überhaupt nicht. Das Setzen von 'color' funktioniert nur, wenn ich ein Hashtag vorne anfüge, bspw. "set 0xccccccfffee8xxxx color #FF00FF".
Das Widget colorpicker sendet die Daten wohl nicht mit Hashtag zum Device. Obwohl ich im Quellcode von /var/fhem/FHEM/72_XiaomiMQTTDevice.pm sehen kann, dass bei color angeblich ein # angefügt wird.....


sub Set($$$@) {
...
    if ($hash->{MODEL} eq "bridge") {
...
} else {
...

        if($command eq "color") {
            $json_cmd->{$command} = {"hex" => "#" . $value1};
        } elsif($command eq "hue") {
            $json_cmd->{"color"} = {$command => $value1};
        } elsif($command eq "saturation") {
            $json_cmd->{"color"} = {$command => $value1};
        } else {
            $json_cmd->{$command} = $value1;
        }
...

      
Im FHEM-Logfile sehe ich bei  MQTT (fhem> attr MQTT verbose 5), dass der RGB-Code ohne Hashtag übermittelt wird, und die Birne wird einfach blau.

2020.10.13 23:37:23 5: MQTT MQTT message sent: Publish/at-least-once zigbee2mqtt/0xccccccfffee8xxxx/set/943
  7b 22 63 6f 6c 6f 72 22 3a 22 66 66 64 66 61 64  {"color":"ffdfad
  22 7d                                            "}


Wenn ich den RGB-Code manuell mit "set 0xccccccfffee8xxxx color #FF00FF" sende, wird die richtige Farbe eingestellt, siehe MQTT Protokoll:

2020.10.13 23:39:40 5: MQTT MQTT message sent: Publish/at-least-once zigbee2mqtt/0xccccccfffee8xxxx/set/944
  7b 22 63 6f 6c 6f 72 22 3a 22 23 46 46 44 46 41  {"color":"#FFDFA
  44 22 7d                                         D"}


Wer kann helfen und mir ggf. sein funktionierendes Setup erläutern?
Wer kann mir sagen, wie ich in diesem speziellen Fall sicherstelle, dass bei color ein # angefügt wird?
Oder kann ich mir ein eigenes Widget bauen, bei dem ich selbst für den Hashtag sorge?
 
Ich bin auf eure Antworten gespannt.
Vielen Dank vorab.

Beste Grüße,
Torsten

KölnSolar

Hallo Thorsten,
ich glaub zwar nicht, dass es Dir hilft(Deine Frage ist sehr speziell), aber mal meine Rückmeldung der tint-Birne bei blau aus dem event monitor

Befehl
2020-10-14 07:04:55 MQTT2_DEVICE Deckenlamped hex
meine setlist zum Befehl sieht so aus
hex:colorpicker,HEX,0,15,255 zigbee2mqtt/0x00158d0003247a3c/set {"color":{"$EVTPART0":"#$EVTPART1","transition":10}}
Rückmeldung
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped device_nwkAddr: 47114
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped device_status: online
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped color_temp: 425
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped color_x: 0.495
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped device_manufId: 4635
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped device_ieeeAddr: 0x00158d0003247a3c
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped color_y: 0.476
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped device_modelId: ZBT-ExtendedColor
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped color_hue: 55.7
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped brightness: 150
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped device_type: Router
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped device_powerSource: Mains (single phase)
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped ON
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped device_friendlyName: 0x00158d0003247a3c
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped device_manufName: MLI
2020-10-14 07:04:56 MQTT2_DEVICE Deckenlamped color_saturation: 98.4
2020-10-14 07:04:57 structure GruppetA undefined
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped device_powerSource: Mains (single phase)
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped ON
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped device_manufName: MLI
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped device_friendlyName: 0x00158d0003247a3c
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped color_saturation: 100
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped device_status: online
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped device_nwkAddr: 47114
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped device_manufId: 4635
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped color_y: 0.045
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped device_ieeeAddr: 0x00158d0003247a3c
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped color_x: 0.14
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped color_temp: 556
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped device_modelId: ZBT-ExtendedColor
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped device_type: Router
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped brightness: 150
2020-10-14 07:04:57 MQTT2_DEVICE Deckenlamped color_hue: 241.1


Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Beta-User

Da du das Xiaomi-MQTT-Modul nutzt, solltest du dich an den Autor dieses Moduls (extern) wenden.
Oder eben auf die von Rudi bereitgestellte MQTT-Variante MQTT2_DEVICE umstellen, die auch KölnSolar nutzt (es gibt zur Umstellung ein paar Threads im MQTT-Bereich des Forums, ggf. da einfach einklinken, wenn was unklar bleiben sollte).
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

THenkel

Vielen Dank für die Tipps. Ich habe mich ein wenig zu MQTT2_* informiert, das werde ich weiter verfolgen.

Ich habe doch eine andere Lösung gefunden, ein Zufall. Natürlich hatte ich immer wieder Updates des Rasbian und FHEM und Modulen durchgeführt, alle Dienste mit einem Skript neu gestartet, jedoch seit Monaten nicht mehr den ganzen RaspiPi neu gestartet.
Als ich eben in einer Pause wegen einer Änderung der IP-Adresse doch mal gebootet habe, und wegen des Debuggen in der Protokolldatei des MQTT das falsche Senden der Daten weiter nachvollziehen wollte, funktionierte es plötzlich! Der colorpicker funktioniert nun, die korrekten Farben werden übermittelt und die tint LED Birne übernimmt diese.

Ich prüfe am Abend mal alle weiteren Protokolle um zu schauen, was sich nach dem Reboot wirklich verändert hat.