zigbee2mqtt icon indicating copy to clipboard operation
zigbee2mqtt copied to clipboard

[New device support]: Schneider Exxact 2-gang wireless switch

Open ferrix opened this issue 3 years ago • 0 comments

Link

https://www.se.com/ww/en/product/SDD111389/connected-wireless-switch-1gang-2gang-white/

Database entry

{"id":4,"type":"EndDevice","ieeeAddr":"0x04cd15fffeb91e0a","nwkAddr":30030,"manufId":4190,"manufName":"Schneider Electric","powerSource":"Battery","modelId":"FLS/SYSTEM-M/4","epList":[21,22,23,24],"endpoints":{"21":{"profId":260,"epId":21,"devId":260,"inClusterList":[0,1,3,32,65303],"outClusterList":[3,4,5,6,8,25,258],"clusters":{"genBasic":{"attributes":{"modelId":"FLS/SYSTEM-M/4","manufacturerName":"Schneider Electric","powerSource":3,"zclVersion":3,"appVersion":2,"stackVersion":6,"hwVersion":1,"dateCode":"","swBuildId":"002.009.001 R"}},"genPollCtrl":{"attributes":{"checkinInterval":86400}},"genPowerCfg":{"attributes":{"batteryPercentageRemaining":160}}},"binds":[{"cluster":32,"type":"endpoint","deviceIeeeAddress":"0x00124b00259068c1","endpointID":1},{"cluster":6,"type":"endpoint","deviceIeeeAddress":"0x00124b00259068c1","endpointID":1},{"cluster":8,"type":"endpoint","deviceIeeeAddress":"0x00124b00259068c1","endpointID":1},{"cluster":1,"type":"endpoint","deviceIeeeAddress":"0x00124b00259068c1","endpointID":1}],"configuredReportings":[{"cluster":1,"attrId":33,"minRepIntval":3600,"maxRepIntval":62000,"repChange":0}],"meta":{}},"22":{"profId":260,"epId":22,"devId":260,"inClusterList":[0,1,3,65303],"outClusterList":[3,4,5,6,8,258],"clusters":{"genBasic":{"attributes":{"dateCode":""}}},"binds":[{"cluster":6,"type":"endpoint","deviceIeeeAddress":"0x00124b00259068c1","endpointID":1},{"cluster":8,"type":"endpoint","deviceIeeeAddress":"0x00124b00259068c1","endpointID":1}],"configuredReportings":[],"meta":{}},"23":{"profId":260,"epId":23,"devId":260,"inClusterList":[0,1,3,65303],"outClusterList":[3,4,5,6,8,258],"clusters":{"genBasic":{"attributes":{"dateCode":""}}},"binds":[],"configuredReportings":[],"meta":{}},"24":{"profId":260,"epId":24,"devId":260,"inClusterList":[0,1,3,65303],"outClusterList":[3,4,5,6,8,258],"clusters":{"genBasic":{"attributes":{"dateCode":""}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":2,"stackVersion":6,"hwVersion":1,"dateCode":"","swBuildId":"002.009.001 R","zclVersion":3,"interviewCompleted":true,"meta":{"configured":-717026909},"lastSeen":1669719022765,"defaultSendRequestWhen":"active"}

Comments

This device gets identified as a 1-gang switch and works as such out of the box as 'FLS/SYSTEM-M/4'. The device itself can be reset and configured as a 1-gang or 2-gang switch through a factory reset and presumedly the only difference between is the 1-gang and 2-gang faceplate.

On the Zigbee side of things, it sends the left button as endpoint 21 on/off and the right button as endpoint 22 on/off.

The implementation for 'FLS/AIRLINK/4' works out of the box except top becomes left and bottom becomes right.

I pasted a replacement for the existing implementation below.

External converter

{
        zigbeeModel: ['FLS/SYSTEM-M/4'],
        model: 'WDE002906',
        vendor: 'Schneider Electric',
        description: 'Wiser wireless switch 1-gang or 2-gang',
        fromZigbee: [fz.command_on, fz.command_off, fz.command_move, fz.command_stop, fz.battery],
        toZigbee: [],
        endpoint: (device) => {
            return {'left': 21, 'right': 22};
        },
        meta: {multiEndpoint: true},
        exposes: [e.action(['on_left', 'off_top', 'on_right', 'off_bottom', 'brightness_move_up_top', 'brightness_stop_top',
            'brightness_move_down_left', 'brightness_stop_top', 'brightness_move_up_right', 'brightness_stop_bottom',
            'brightness_move_down_right', 'brightness_sleft_bottom'])],
        configure: async (device, coordinatorEndpoint, logger) => {
            // When in 2-gang operation mode, unit operates out of endpoints 21 and 22, otherwise just 21
            const leftButtonsEndpoint = device.getEndpoint(21);
            await reporting.bind(leftButtonsEndpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl', 'genPowerCfg'],);
            const rightButtonsEndpoint = device.getEndpoint(22);
            await reporting.bind(rightButtonsEndpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
            await reporting.batteryPercentageRemaining(endpoint);
        },
    },

Supported color modes

No response

Color temperature range

No response

ferrix avatar Nov 29 '22 11:11 ferrix