Koenkk / zigbee-herdsman-converters

Collection of device converters to be used with zigbee-herdsman
MIT License
939 stars 3.09k forks source link

eWeLight #8026

Open Imaginous opened 2 months ago

Imaginous commented 2 months ago

I have an unsupported eWeLight device.

But zigbee2mqtt doesn't show a model name.

I tried adding an external converter:

const {light} = require('zigbee-herdsman-converters/lib/modernExtend');

const definition = {
    zigbeeModel: [''],
    model: '',
    vendor: 'eWeLight',
    description: 'Smart Light Strip Controller (C+W)',
    extend: [light({colorTemp: {range: [153, 500]}})],
    configure: async (device, coordinatorEndpoint) => {
        device.getEndpoint(1).saveClusterAttributeKeyValue('lightingColorCtrl', {colorCapabilities: 0x10});
    },
};

module.exports = definition;

This doensn't work, probably because there is no model name. Is there an other way to indentify a zigbee device with the herdsman converters?

Koenkk commented 2 months ago

Could you provide the data/database.db entry of this device?

Imaginous commented 2 months ago

{"id":43,"type":"Router","ieeeAddr":"0xa4c138a0282c95ff","nwkAddr":9419,"manufId":4107,"manufName":"eWeLight","powerSource":"Mains` (single phase)","epList":[1],"endpoints":{"1":{"profId":260,"epId":1,"devId":268,"inClusterList":[0,3,4,5,6,8,768,4096],"outClusterList":[],"clusters":{"genBasic":{"attributes":{"manufacturerName":"eWeLight","powerSource":1,"zclVersion":3,"appVersion":1,"stackVersion":2,"hwVersion":0,"dateCode":"20210907","swBuildId":"2.0.1"}},"lightingColorCtrl":{"attributes":{"colorCapabilities":16,"colorTempPhysicalMin":250,"colorTempPhysicalMax":454}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":1,"stackVersion":2,"hwVersion":0,"dateCode":"20210907","swBuildId":"2.0.1","zclVersion":3,"interviewCompleted":true,"meta":{},"lastSeen":1727288026940}

Imaginous commented 2 months ago

The device is not a router, nor a mains device.

It's a LED strip controller for controlling warm/cold white LED strips running between 5-24V

Imaginous commented 2 months ago

I think it's a clone of this controller:

YSR-MINI-01_wwcw

Koenkk commented 2 months ago

You can use a fingerprint (example), the modelID can be omitted.

Imaginous commented 2 months ago

Using the following converter code makes the device work fine. Maybe it can be implemented in a upcomming release.

const tuya = require('zigbee-herdsman-converters/lib/tuya');

const definition = {
    fingerprint: [
        {
            type: 'Router',
            manufacturerName: 'eWeLight',
            endpoints: [
                {ID: 1, profileID: 260, deviceID: 268, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096], outputClusters: []},
            ],
        },
    ],
    model: 'YSR-MINI-01_wwcw',
    vendor: 'eWeLight',
    description: 'Smart Light Strip Controller (C+W)',
    extend: [tuya.modernExtend.tuyaLight({colorTemp: {range: [153, 500]}})],
    configure: async (device, coordinatorEndpoint) => {
        device.getEndpoint(1).saveClusterAttributeKeyValue('lightingColorCtrl', {colorCapabilities: 0x10});
    },
};

module.exports = definition;
Imaginous commented 2 months ago

I thought it worked fine, but increasing brightness works, but when going to a lower value the light turns off completely until you raise the brightness or turn the light off/on.

Any idea on this?

Imaginous commented 2 months ago

It seems only to go wrong when you send a set command with state and brightness in one JSON.

I don't know if it's even "allowed" by zigbee2mqtt.

Koenkk commented 2 months ago

It seems only to go wrong when you send a set command with state and brightness in one JSON.

could you provide the debug log of both without the state and with?

See this on how to enable debug logging.

Imaginous commented 2 months ago

I will do that, probably Friday or Saturday.

Imaginous commented 1 month ago

On october second I upgraded to the latest version.

I did some testing today with different packages and now seems to keep working.

Also the parsed messages are all the same, so correct.

Oct 07 13:49:31 domoticapi1 npm[22809]: [2024-10-07 13:49:31] debug:         zh:controller: Received payload: clusterID=8, address=9419, groupID=0, endpoint=1, destinationEndpoint=1, wasBroadcast=false, linkQuality=255, frame={"header":{"frameControl":{"frameType":0,"manufacturerSpecific":false,"direction":1,"disableDefaultResponse":true,"reservedBits":0},"transactionSequenceNumber":33,"commandIdentifier":11},"payload":{"cmdId":4,"statusCode":0},"command":{"ID":11,"name":"defaultRsp","parameters":[{"name":"cmdId","type":32},{"name":"statusCode","type":32}]}}
Oct 07 13:49:31 domoticapi1 npm[22809]: [2024-10-07 13:49:31] info:         z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Zolder_3D_Printer_Licht', payload '{"brightness":128,"color_mode":"color_temp","color_temp":250,"color_temp_startup":250,"do_not_disturb":false,"last_seen":"2024-10-07T13:49:31+02:00","linkquality":255,"power_on_behavior":"off","state":"ON"}'
Oct 07 13:49:31 domoticapi1 npm[22809]: [2024-10-07 13:49:31] debug:         zh:deconz: response received (33)
Oct 07 13:49:31 domoticapi1 npm[22809]: [2024-10-07 13:49:31] info:         z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Zolder_3D_Printer_Licht', payload '{"brightness":201,"color_mode":"color_temp","color_temp":250,"color_temp_startup":250,"do_not_disturb":false,"last_seen":"2024-10-07T13:49:31+02:00","linkquality":255,"power_on_behavior":"off","state":"ON"}'

Oct 07 13:50:48 domoticapi1 npm[22809]: [2024-10-07 13:50:48] debug:         zh:controller: Received payload: clusterID=8, address=9419, groupID=0, endpoint=1, destinationEndpoint=1, wasBroadcast=false, linkQuality=255, frame={"header":{"frameControl":{"frameType":0,"manufacturerSpecific":false,"direction":1,"disableDefaultResponse":true,"reservedBits":0},"transactionSequenceNumber":55,"commandIdentifier":11},"payload":{"cmdId":4,"statusCode":0},"command":{"ID":11,"name":"defaultRsp","parameters":[{"name":"cmdId","type":32},{"name":"statusCode","type":32}]}}
Oct 07 13:50:48 domoticapi1 npm[22809]: [2024-10-07 13:50:48] info:         z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Zolder_3D_Printer_Licht', payload '{"brightness":201,"color_mode":"color_temp","color_temp":250,"color_temp_startup":250,"do_not_disturb":false,"last_seen":"2024-10-07T13:50:48+02:00","linkquality":255,"power_on_behavior":"off","state":"ON"}'
Oct 07 13:50:48 domoticapi1 npm[22809]: [2024-10-07 13:50:48] debug:         zh:deconz: response received (55)
Oct 07 13:50:48 domoticapi1 npm[22809]: [2024-10-07 13:50:48] info:         z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Zolder_3D_Printer_Licht', payload '{"brightness":128,"color_mode":"color_temp","color_temp":250,"color_temp_startup":250,"do_not_disturb":false,"last_seen":"2024-10-07T13:50:48+02:00","linkquality":255,"power_on_behavior":"off","state":"ON"}'

Oct 07 13:52:22 domoticapi1 npm[22809]: [2024-10-07 13:52:22] info:         z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Zolder_3D_Printer_Licht', payload '{"brightness":128,"color_mode":"color_temp","color_temp":250,"color_temp_startup":250,"do_not_disturb":false,"last_seen":"2024-10-07T13:52:22+02:00","linkquality":255,"power_on_behavior":"off","state":"ON"}'
Oct 07 13:52:22 domoticapi1 npm[22809]: [2024-10-07 13:52:22] debug:         zh:deconz: response received (74)
Oct 07 13:52:22 domoticapi1 npm[22809]: [2024-10-07 13:52:22] info:         z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Zolder_3D_Printer_Licht', payload '{"brightness":201,"color_mode":"color_temp","color_temp":250,"color_temp_startup":250,"do_not_disturb":false,"last_seen":"2024-10-07T13:52:22+02:00","linkquality":255,"power_on_behavior":"off","state":"ON"}'

Oct 07 13:53:40 domoticapi1 npm[22809]: [2024-10-07 13:53:40] debug:         zh:controller: Received payload: clusterID=8, address=9419, groupID=0, endpoint=1, destinationEndpoint=1, wasBroadcast=false, linkQuality=255, frame={"header":{"frameControl":{"frameType":0,"manufacturerSpecific":false,"direction":1,"disableDefaultResponse":true,"reservedBits":0},"transactionSequenceNumber":96,"commandIdentifier":11},"payload":{"cmdId":4,"statusCode":0},"command":{"ID":11,"name":"defaultRsp","parameters":[{"name":"cmdId","type":32},{"name":"statusCode","type":32}]}}
Oct 07 13:53:40 domoticapi1 npm[22809]: [2024-10-07 13:53:40] info:         z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Zolder_3D_Printer_Licht', payload '{"brightness":201,"color_mode":"color_temp","color_temp":250,"color_temp_startup":250,"do_not_disturb":false,"last_seen":"2024-10-07T13:53:40+02:00","linkquality":255,"power_on_behavior":"off","state":"ON"}'
Oct 07 13:53:40 domoticapi1 npm[22809]: [2024-10-07 13:53:40] debug:         zh:deconz: response received (96)
Oct 07 13:53:40 domoticapi1 npm[22809]: [2024-10-07 13:53:40] info:         z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Zolder_3D_Printer_Licht', payload '{"brightness":65,"color_mode":"color_temp","color_temp":250,"color_temp_startup":250,"do_not_disturb":false,"last_seen":"2024-10-07T13:53:40+02:00","linkquality":255,"power_on_behavior":"off","state":"ON"}'

This is the final (temporary) converter I use (YSR-MINI-01_wwcw.js):

const tuya = require('zigbee-herdsman-converters/lib/tuya');

const definition = {
    fingerprint: [
        {
            type: 'Router',
            manufacturerName: 'eWeLight',
            endpoints: [
                {ID: 1, profileID: 260, deviceID: 268, inputClusters: [0, 3, 4, 5, 6, 8, 768, 4096], outputClusters: []},
            ],
        },
    ],
    model: 'YSR-MINI-01_wwcw',
    vendor: 'eWeLight',
    description: 'Smart Light Strip Controller (C+W)',
    extend: [tuya.modernExtend.tuyaLight({colorTemp: {range: [250, 454]}, color: false})],
    configure: async (device, coordinatorEndpoint) => {
        device.getEndpoint(1).saveClusterAttributeKeyValue('lightingColorCtrl', {colorCapabilities: 0x10});
    },
};

module.exports = definition;