I did test with success (as a *.things definition):
Type color : col "Color" [ colorMode="XYY", commandTopic="test/zigbee2mqtt/p3z/set", stateTopic="test/zigbee2mqtt/p3z",
transformationPatternOut="DSL:|val col = input.split(',') var my = '{\"brightness\": ' + (Float.parseFloat(col.get(2))*255/100).toString + ', \"color\": {\"x\": ' + col.get(0) + ',\"y\": ' + col.get(1) + '}}' my",
transformationPattern="DSL:|transform('JSONPATH','$.color.x',input) + ',' + transform('JSONPATH','$.color.y',input) + ',' + (Integer.parseInt(transform('JSONPATH','$.brightness',input))*100/255)" ]
or (the same) as yaml code:
channels:
- id: col
channelTypeUID: mqtt:color
label: Color
description: null
configuration:
retained: false
postCommand: false
transformationPatternOut: "DSL:|val col = input.split(',') var my =
'{\"brightness\": ' + (Float.parseFloat(col.get(2))*255/100).toString +
', \"color\": {\"x\": ' + col.get(0) + ',\"y\": ' + col.get(1) + '}}'
my"
formatBeforePublish: "%s"
commandTopic: test/zigbee2mqtt/p3z/set
colorMode: XYY
stateTopic: test/zigbee2mqtt/p3z
transformationPattern: DSL:|transform('JSONPATH','$.color.x',input) + ',' +
transform('JSONPATH','$.color.y',input) + ',' +
(Integer.parseInt(transform('JSONPATH','$.brightness',input))*100/255)