Koenkk / zigbee2mqtt

Zigbee 🐝 to MQTT bridge 🌉, get rid of your proprietary Zigbee bridges 🔨
https://www.zigbee2mqtt.io
GNU General Public License v3.0
11.76k stars 1.64k forks source link

Support for dresden elektronik FLS-A2 broken #22036

Open l-mb opened 5 months ago

l-mb commented 5 months ago

What happened?

Upgraded to 1.36.1 commit: ffc2ff1 today, and my FLS-A2 dropped to "Unsupported". (Originally introduced with https://github.com/Koenkk/zigbee-herdsman-converters/pull/4889)

I assume this is related to the recent changes to the extension mechanism, and I'll look towards re-submitting an update, but wanted to get this into the tracker.

What did you expect to happen?

Continued support or possibly an automated conversion to the new model, or maybe I missed a warning a few releases ago warning that the support would be depreciated?

How to reproduce it (minimal and precise)

Upgrade to latest release if having a FLS-A2 in your network.

Zigbee2MQTT version

1.36.1 commit: ffc2ff1

Adapter firmware version

20230507

Adapter

SonOff

Setup

Plain, containerized

Debug log

No response

Koenkk commented 5 months ago

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

l-mb commented 3 months ago

Sorry for getting back to this so late.

The automatic device definition generation didn't quite work (it detected them as onOff rather than light, and didn't pull in all the definitions), but it was easy enough to fix (the following restores it to the exact state it was pre-migration):

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

const definition = {
    zigbeeModel: ['FLS-A2 (1-10V)'],
    model: 'FLS-A2 (1-10V)',
    vendor: 'dresden elektronik',
    description: 'Zigbee controller for 1-10V/PWM',
    extend: [
        deviceEndpoints({"endpoints":{"l1":11,"l2":12,"l3":13,"l4":14}}),
        identify(),
        light({"powerOnBehavior":false,"endpointNames":["l1","l2","l3","l4"]})
    ],
    meta: {multiEndpoint: true, disableDefaultResponse: true },
};

module.exports = definition;

Since it's so much shorter than the other ones I saw in the collection I thought I'd run it by you before I create a new submit request :)

Koenkk commented 3 months ago

Could you try without the following line: meta: {multiEndpoint: true, disableDefaultResponse: true },? For the rest it looks good, please make a PR

l-mb commented 3 months ago

Ah, yes, the multiEndpoint is redundant (though it was suggested by the dev console), but the disableDefaultResponse is unfortunately still needed (see the original PR referenced). I'll create a PR. Thanks!