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
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?
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.
Änder mal die readingList auf:
Zitat$DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP ); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }
Danke für's Schauen, fix ist eingecheckt!
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 :)
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.