Seite 2 von 3

Re: Handling von Nicht-Hue-RGB-Leuchtmitteln

Verfasst: 12. Dez 2023 14:13
von udo1toni
Was kommt denn von Zigbee2mqtt von der Lampe zurück? Es ist ja laut Anleitung möglich, die Lampe per rgb anzusteuern.
Ansonsten läuft es darauf hinaus, dass Die Lampe nur über Tricks vernünftig angesteuert werden kann (z.B. indem ein Color Item mit zwei Channels gleichzeitig verlinkt wird, im Link zum Brightness-Channel wird dann ein Script verwendet, um nur die Brightness-Information weiterzugeben. Naturgemäß ist das nicht schön, weil sich die beiden Topics vielleicht in die Quere kommen können.

Re: Handling von Nicht-Hue-RGB-Leuchtmitteln

Verfasst: 12. Dez 2023 15:37
von go1974
Hier das Json aus dem Topic der Lampe:

Code: Alles auswählen

{
"action":"on",
"brightness":185,
"color":{
	"h":241,
	"hue":241,
	"s":100,
	"saturation":100,
	"x":0.1401,
	"y":0.0232
	},	
"color_mode":"xy",	
"color_power_on_behavior":"previous",
"color_temp":582,
"do_not_disturb":true,
"last_seen":"2023-12-12T15:28:51+01:00",
"linkquality":117,
"state":"ON"
}
Das ist es doch was du sehen wolltest?

Re: Handling von Nicht-Hue-RGB-Leuchtmitteln

Verfasst: 12. Dez 2023 16:14
von go1974
Hmm, keine Ahnung ob es die Lampe ist, oder nur die Doku oder beides, aber ich habe gerade mal

Code: Alles auswählen

{"x":0.174900,"y":0.744600, "brightness":100}
gesendet und das klappt.

Code: Alles auswählen

{"r":255,"g":102,"b":150,"brightness":10}
oder

Code: Alles auswählen

{"h":150,"s":100,"brightness":155}
...klappt auch.

Allerdings ändern sich dann die values in den anderen Topics nicht. Also die Values in "Brightness" oder auch "State" ändern sich dann nicht. Ist das normal?! :lol:

Re: Handling von Nicht-Hue-RGB-Leuchtmitteln

Verfasst: 12. Dez 2023 16:32
von udo1toni
Ich habe gerade noch mal die Doku gelesen, es handelt sich in Wirklichkeit ja doch um das gleiche Topic...
Ich denke, die Formulierung ist nur etwas missverständlich. Meine Vermutung hinsichtlich der Konfiguration;

Code: Alles auswählen

UID: mqtt:topic:mosquitto:p3z
label: Nous P3Z
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:mosquitto
channels:
  - id: col
    channelTypeUID: mqtt:color
    label: Color
    description: null
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: '{"brightness": %3$d, {"color": {"x": %1d,"y": %2d}}}'
      commandTopic: zigbee2mqtt/p3z/set
      colorMode: XYY
Das ist erst mal nur zum Ansteuern. Für die Gegenrichtung muss noch das stateTopic gesetzt werden und es braucht ein Script, welches die drei Werte x, y und brightness als kommaseparierte Liste erzeugt. Leider habe ich diese Woche keine Zeit mehr, mich damit zu beschäftigen, aber vielleicht hilft das schon als Einstieg.

Re: Handling von Nicht-Hue-RGB-Leuchtmitteln

Verfasst: 12. Dez 2023 17:26
von go1974
Vielen Dank, Udo.
Das hat so leider nicht geklappt, aber immerhin konnte ich nach etwas fummelei ein Ergebnis erzielen:

Code: Alles auswählen

  - id: Nous_01_color
    channelTypeUID: mqtt:color
    label: Nous_01_color
    description: color
    configuration:
      commandTopic: zigbee2mqtt/nous_01/set/color
      retained: false
      postCommand: false
      colorMode: XYY
      formatBeforePublish: '{ "x": %s, "y": %s, "brightness": %s}'
      stateTopic: zigbee2mqtt/nous_01/color
Werde morgen wohl noch ein wenig weiter fummeln um auch mit der Antwort umgehen zu können.

Re: Handling von Nicht-Hue-RGB-Leuchtmitteln

Verfasst: 13. Dez 2023 15:45
von udo1toni
Das geht so aber nicht. %s ist immer der gesamte Status, Du musst die einzelnen Teile verwenden. Das Topic hätte ich auch anders erwartet (zumindest nach der Dokumentation). Oder hast Du separate Topics für die einzelnen Werte? Man kann das in zigbee2mqtt konfigurieren...

Re: Handling von Nicht-Hue-RGB-Leuchtmitteln

Verfasst: 14. Dez 2023 11:36
von go1974
Ich hattes es zuerst mit deiner Syntax probiert - ohne Erfolg.
Das es mit %s klappt, sehe ich im MQTT Explorer:

Code: Alles auswählen

{
  "x": 0.562,
  "y": 0.4047,
  "brightness": 100
}
Den Status der Lampen bekommen ich sowohl als einen Json:

Code: Alles auswählen

{
  "brightness": 27.94,
  "color": {
    "h": 25,
    "hue": 25,
    "s": 95,
    "saturation": 95,
    "x": 0.5267,
    "y": 0.4133
  },
  "color_mode": "color_temp",
  "color_power_on_behavior": "previous",
  "color_temp": 500,
  "do_not_disturb": true,
  "last_seen": "2023-12-14T11:30:18+01:00",
  "linkquality": 60,
  "state": "OFF"
}
..als auch als einzelne Werte unter den jeweiligen Topics.

In der Doku https://www.openhab.org/addons/bindings/mqtt.generic/ findet man unter dem Punkt formatBeforePublish den Hinweis:" Currently only "%s" is supported".

Re: Handling von Nicht-Hue-RGB-Leuchtmitteln

Verfasst: 14. Dez 2023 14:31
von udo1toni
Strange. Schau mal etwas weiter unten... https://www.openhab.org/addons/bindings ... re-publish dort wird explizit (allerdings nur für rgb und hsb) die Schreibweise mit den Einzelwerten beschrieben.
Aber umso besser, wenn es über ein einzelnes %s funktioniert, offensichtlich wird dann halt jeweils der nächste Einzelwert eingesetzt, statt des Gesamtstrings (der Status ist z.B. "0.5, 0.9, 23")

Was den Status betrifft, so wird es auf eine Script Transformation hinaus laufen, sowas:

Code: Alles auswählen

transformationPattern: DSL:|transform("JSONPATH","$.color.x",input)+", "+transform("JSONPATH","$.color.y",input)+", "transform("JSONPATH","$.brightness",input)
input ist in diesem Fall das komplette JSON Objekt, welches mittels dreier Transformations die drei Werte in korrekter Reihenfolge liefert.
Die Schreibweise ist ein Inline Script und als Scriptsprache kommt die DSL zum Einsatz. Geht genauso auch mit JavaScript, welches aber extra installiert sein muss. Wahlweise könnte man das Inline Script auch als Datei anlegen und auf die Datei verweisen

Re: Handling von Nicht-Hue-RGB-Leuchtmitteln

Verfasst: 18. Dez 2023 12:00
von go1974
Hey Toni, vielen Dank für die Hilfe. Leider klappt es noch nicht so ganz und ich habe keine Ahnung wo das Problem liegt. Es ist halt so, dass ich die Lampe zwar ansprechen kann, aber die Transformation anscheinend nicht beim Item ankommt. Zumindest ändert sich dieses nicht, obwohl sich auf dem Topic/Json die Werte ändern.

Hier mal die Channel konfig:

Code: Alles auswählen

  - id: Nous_01_color
    channelTypeUID: mqtt:color
    label: Nous_01_color
    description: color
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: '{ "x": %s, "y": %s, "brightness": %s}'
      commandTopic: zigbee2mqtt/nous_01/set/color
      colorMode: XYY
      stateTopic: zigbee2mqtt/nous_01/
      transformationPattern: DSL:|transform("JSONPATH","$.color.x",input)+",
        "+transform("JSONPATH","$.color.y",input)+",
        "transform("JSONPATH","$.brightness",input)
Ich sehe im Log auch ein paar Warnungen, allerdings nicht für "color", sonder für "color temperature" - hier kommen Werte im Bereich von um die 500, aber OH erwartet was zwischen 0-100 (Prozent). Ich glaube aber nicht das die beiden Probleme zusammenhängen.

Okay - das mit der CT hat sich aufgeklärt. Zwar sind dort Werte lt. doku zwischen 153-500 zu erwarten, aber wenn man mit der Farbe 'spielt', dann können diese zwischen 90 und 590 liegen - daher die Warnungen. Ganz sauber sind diese Nous-Dinger nicht programmiert. Schade.

Re: Handling von Nicht-Hue-RGB-Leuchtmitteln

Verfasst: 18. Dez 2023 20:49
von udo1toni
Ist JSONPATH installiert?