[gelöst]: Fehler im MQTT Template zigbee2mqtt_light_cct?

Begonnen von HomeAlone, 30 September 2022, 09:34:58

Vorheriges Thema - Nächstes Thema

HomeAlone

Hallo zusammen,

ich habe diese Lampe von Paul Neuhaus: https://www.zigbee2mqtt.io/devices/NLG-TW_light.html
Über die GUI von Zigbee2MQTT kann ich sie einwandfrei steuern.

In fhem habe ich ihr das mqttTemplate zigbee2mqtt_light_cct verpasst.

Das funktioniert soweit auch einwandfrei, bis auf eine Kleinigkeit:
Wenn ich über den Color Picker in der GUI von fhem die Farbtemperatur ändere, springt der Slider nach der Einstellung immer wieder auf den Minimalwert zurück.
Dies ist aber nur optisch - die Lampe wird sehr wohl auf die ausgewählte Farbtemperatur eingestellt. Das läßt sich sowohl visuell an der Lampe als auch über den Blick in die Zigbee2MQTT Oberfläche überprüfen, wo der Wert entsprechend abgeändert wird.

Hier die Definition der Lampe in fhem:
defmod MQTT2_zigbee_wz_Sofatisch_Licht MQTT2_DEVICE zigbee_wz_Sofatisch_Licht
attr MQTT2_zigbee_wz_Sofatisch_Licht alias MQTT2_zigbee_wz_Sofatisch_Licht
attr MQTT2_zigbee_wz_Sofatisch_Licht devicetopic zigbee2mqtt/wz_Sofatisch_Licht
attr MQTT2_zigbee_wz_Sofatisch_Licht genericDeviceType light
attr MQTT2_zigbee_wz_Sofatisch_Licht homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr MQTT2_zigbee_wz_Sofatisch_Licht icon light_control
attr MQTT2_zigbee_wz_Sofatisch_Licht jsonMap color_temp:ct color_temp_startup:ct_startup
attr MQTT2_zigbee_wz_Sofatisch_Licht model zigbee2mqtt_light_cct
attr MQTT2_zigbee_wz_Sofatisch_Licht readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT);; $ret->{state}=lc($ret->{state}) if defined $ret->{state};; return $ret }\
zigbee2mqtt/wz_Sofatisch_Licht/availability:.* availability
attr MQTT2_zigbee_wz_Sofatisch_Licht room MQTT2_DEVICE,Wohnzimmer
attr MQTT2_zigbee_wz_Sofatisch_Licht setList on:noArg $DEVICETOPIC/set {"state":"ON"}\
  off:noArg $DEVICETOPIC/set {"state":"OFF"}\
  brightness:colorpicker,BRI,0,5,255 $DEVICETOPIC/set {"state":"on","$EVTPART0":"$EVTPART1"}\
  ct:colorpicker,CT,153,2,370 $DEVICETOPIC/set {"color_temp":"$EVTPART1"}\
  ct_startup:coolest,cool,neutral,warmest,previous $DEVICETOPIC/set {"color_temp_startup":"$EVTPART1"}
attr MQTT2_zigbee_wz_Sofatisch_Licht webCmd toggle:on:off:brightness:ct


Einzige Veränderung, die ich gegenüber dem originalen zigbee2mqtt_light_cct vorgenommen habe: Ich habe im setList für den colorpicker den Bereich für die Color Temperature an meine Lampe angepasst (153-370), da ich dachte, dass dies die Ursache für das Problem sein könnte. Das Verhalten ist aber sowohl mit den Originalwerten (154-500) als auch mit meinen angepassten Werten identisch.

Wenn ich die Helligkeit in der GUI von Zigbee2MQTT ändere, wird diese auch korrekt in in fhem Web dargestellt - ändere ich die Color Temperature bleibt der slider in fhem unbeeindruckt auf der 153 stehen - die Lampe reagiert aber sehr wohl.

Hat jemand eine Idee, woran das liegen kann / wie es zu beheben ist?



Beste Grüße
Sascha

Beta-User

Eine Idee habe ich nicht, das klingt so, als würde zigbee2mqtt den color_temp-Wert nicht wieder zurückliefern, warum auch immer. Das könnte man ggf. besser erkennen an den Readings, die nach so einer Aktion aus FHEM heraus entstehen (vermutlich steht ct dann auf "set xxx").

Vielleicht frickelst du mal testweise ein zusätzliches
"state":"on",mit in die setList-Zeile für ct?
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

HomeAlone

Das mit dem Color-Temp Wert ist denke ich nicht der Grund. Hier die MQTT-Message, wenn ich in der Zigbee2MQTT-GUI den color temperature Schalter verschiebe:


Topic: zigbee2mqtt/wz_Sofatisch_Licht/set
{
  "brightness": 184,
  "color_mode": "color_temp",
  "color_temp": 208,
  "color_temp_startup": 65535,
  "device": {
    "applicationVersion": 1,
    "dateCode": "20190110",
    "friendlyName": "wz_Sofatisch_Licht",
    "hardwareVersion": 1,
    "ieeeAddr": "0x00158d00028eb97a",
    "manufacturerID": 4151,
    "manufacturerName": "Neuhaus Lighting Group",
    "model": "NLG-TW light",
    "networkAddress": 16444,
    "powerSource": "Mains (single phase)",
    "softwareBuildID": "V1.1",
    "stackVersion": 1,
    "type": "Router",
    "zclVersion": 2
  },
  "last_seen": 1664542321923,
  "linkquality": 40,
  "state": "ON"
}


Auch wenn ich über einen MQTT-Client ein
{
  "color_temp":"300"
}

Versende, wird dies in Zigbee2MQTT korrekt angezeigt und die Farbtemperatur an der Lampe ändert sich.

Daher denke ich, kann man die Ursache auf fhem herunterbrechen.

Zu den Readings: Hier ein list des devices (mit Deinem "Frickel"-Vorschlag :)

Internals:
   CID        zigbee_wz_Sofatisch_Licht
   DEF        zigbee_wz_Sofatisch_Licht
   FUUID      63356652-f33f-2afc-45ac-13c52d15260bf338
   IODev      mosquittoATnucgulp
   LASTInputDev mosquittoATnucgulp
   MSGCNT     242
   NAME       MQTT2_zigbee_wz_Sofatisch_Licht
   NR         276
   STATE      on
   TYPE       MQTT2_DEVICE
   eventCount 263
   mosquittoATnucgulp_MSGCNT 242
   mosquittoATnucgulp_TIME 2022-09-30 15:00:10
   JSONMAP:
     color_temp ct
     color_temp_startup ct_startup
   READINGS:
     2022-09-30 08:09:50   IODev           mosquittoATnucgulp
     2022-09-29 13:09:50   associatedWith  MQTT2_zigbee2mqtt
     2022-09-29 11:38:26   attrTemplateVersion 20220909
     2022-09-30 14:51:37   availability    online
     2022-09-30 15:00:10   brightness      184
     2022-09-30 15:00:10   color_mode      color_temp
     2022-09-30 15:00:10   color_temp      273
     2022-09-30 15:00:10   color_temp_startup 65535
     2022-09-30 15:00:10   device_applicationVersion 1
     2022-09-30 15:00:10   device_dateCode 20190110
     2022-09-30 15:00:10   device_friendlyName wz_Sofatisch_Licht
     2022-09-30 15:00:10   device_hardwareVersion 1
     2022-09-30 15:00:10   device_ieeeAddr 0x00158d00028eb97a
     2022-09-30 15:00:10   device_manufacturerID 4151
     2022-09-30 15:00:10   device_manufacturerName Neuhaus Lighting Group
     2022-09-30 15:00:10   device_model    NLG-TW light
     2022-09-30 15:00:10   device_networkAddress 16444
     2022-09-30 15:00:10   device_powerSource Mains (single phase)
     2022-09-30 15:00:10   device_softwareBuildID V1.1
     2022-09-30 15:00:10   device_stackVersion 1
     2022-09-30 15:00:10   device_type     Router
     2022-09-30 15:00:10   device_zclVersion 2
     2022-09-30 08:43:21   json2nameValueErrorText error parsing (#1) 'state: "ON"'
     2022-09-30 08:43:21   json2nameValueInput {state: "ON"}
     2022-09-30 15:00:10   last_seen       1664542809964
     2022-09-30 15:00:10   linkquality     40
     2022-09-30 15:00:10   state           on
Attributes:
   alias      MQTT2_zigbee_wz_Sofatisch_Licht
   devicetopic zigbee2mqtt/wz_Sofatisch_Licht
   genericDeviceType light
   homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
   icon       light_control
   jsonMap    color_temp:ct color_temp_startup:ct_startup
   model      zigbee2mqtt_light_cct
   readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }
zigbee2mqtt/wz_Sofatisch_Licht/availability:.* availability
   room       MQTT2_DEVICE,Wohnzimmer
   setList    on:noArg $DEVICETOPIC/set {"state":"ON"}
  off:noArg $DEVICETOPIC/set {"state":"OFF"}
  brightness:colorpicker,BRI,0,5,255 $DEVICETOPIC/set {"state":"on","$EVTPART0":"$EVTPART1"}
  ct:colorpicker,CT,153,2,370 $DEVICETOPIC/set {"state":"on","color_temp":"$EVTPART1"}
  ct_startup:coolest,cool,neutral,warmest,previous $DEVICETOPIC/set {"color_temp_startup":"$EVTPART1"}
   webCmd     toggle:on:off:brightness:ct

In den Readings steht ct auf 273 - was dem korrekten Wert aus der GUI von Zigbee2MQTT entspricht.

TomLee

Änder mal die readingList auf:

Zitat$DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP ); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }

Beta-User

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

HomeAlone

#5
Magic! :)

Das hat geholfen, vielen Dank @TomLee!

@Beta-User: Jetzt weiß ich nicht, ob das spezifisch für diese Lampe ist, oder ob das generell im Template aktualisiert werden könnte/sollte? Wäre schön, wenn das noch jemand anderes mit einer Lampe, die Helligkeit und Farbtemperatur unterstützt ausprobieren könnte.

Auf jeden Fall schon mal eine Baustelle weniger.  :)

P.S.: Gelöst noch nicht im Titel, da ich nicht weiß, ob diese Änderung nicht Probleme bei anderen hervorruft :)

TomLee

ZitatGelöst noch nicht im Titel, da ich nicht weiß, ob diese Änderung nicht Probleme bei anderen hervorruft :)

Zum Verständnis (weil ich mags auch nicht wenn man mich mit meinem Unverständnis einfach hängen lässt), die Angabe des dritten Parameter bei json2namevalue ($JSONMAP) wurde beim letzten update des Template schlicht übersehen wieder mit anzugeben (zuvor war er auch vorhanden), ohne diesen Parameter greift das Attribut jsonMap nicht, also keine Magie und Thema gelöst.