Koenkk / zigbee2mqtt

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

Support for lumi.curtain.acn002 - Aqara Roller Shade Driver E1 (Europe-version?) #9447

Closed wisekki closed 1 year ago

wisekki commented 2 years ago

Finally I received the Aqara Roller Shade Driver E1, but it seems this one doesn't work out of the box with zigbee2mqtt. I'm using zigbee2mqtt 1.22.0-dev. The device joins the network and is interviewed as:

ZNJLBL01LM - Xiaomi Aqara roller shade companion E1 (EndDevice)

Problem is that it doesn't react to anything and keeps flooding the logs:

'{"battery":null,"last_seen":"2021-11-01T20:07:44+02:00","linkquality":48,"position":0,"running":false,"update_available":null}'

Only thing that changes is the link quality, nothing else.

On the device back it says Model: RSD-M01 and it's manufactured last month 10/2021. So I think this would be a new device perhaps but it joins as ZNJLBL01LM. What can I do?

When googling RSD-M01 the first result goes to Aqara's Europe site of Roller Shade Driver E1.

Information about the device + link

Aqara Roller Shade Driver E1 Model: RSD-M01 https://www.aqara.com/eu/product/roller-shade-driver-e1

data/database.db entry of the device

{"id":12,"type":"EndDevice","ieeeAddr":"0x54ef4410002e066a","nwkAddr":62470,"manufId":4447,"manufName":"LUMI","powerSource":"Unknown","modelId":"lumi.curtain.acn002","epList":[1,242],"endpoints":{"1":{"profId":260,"epId":1,"devId":256,"inClusterList":[0,2,3,4,5,6,9,13,19,258],"outClusterList":[10,25],"clusters":{"genBasic":{"attributes":{"modelId":"lumi.curtain.acn002","manufacturerName":"LUMI","powerSource":0,"zclVersion":3,"appVersion":25,"stackVersion":2,"hwVersion":1,"dateCode":"05-18-2021"}}},"binds":[],"configuredReportings":[],"meta":{}},"242":{"profId":41440,"epId":242,"devId":97,"inClusterList":[],"outClusterList":[33],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":25,"stackVersion":2,"hwVersion":1,"dateCode":"05-18-2021","zclVersion":3,"interviewCompleted":true,"meta":{},"lastSeen":1635787960439}

AndyKassell commented 2 years ago

Hi,

I have same issue with same device. It is a supported device but it just doesn't work correctly. I have debug logs turned on also and see it does an OTA request, but yes it is constantly sending this in.

Info MQTT publish: topic 'zigbee2mqtt/Bed 3 Blind', payload 
'{"battery":null,"last_seen":1636097972251,"linkquality":54,"position":20,"running":false,"update_available":null}'
Debug Received Zigbee message from 'Bed 3 Blind', type 'commandQueryNextImageRequest', cluster 'genOta', data '{"fieldControl":0,"fileVersion":3608,"imageType":14976,"manufacturerCode":4447}' from endpoint 1 with groupID 0
Debug Device 'Bed 3 Blind' requested OTA

Whilst the device does not report battery or current position correctly I can control the blind using the controls, however they do not update to reflect the current position you need to do a manual refresh. I have linked a video review below which shows the exact issue starting for the 8 minute mark.

Aqara Blind Driver Unbox + Setup in Home Assistant without a hub

SchoutenHans commented 2 years ago

Hi,

I have same issue with this device. (Model: RSD-M01). Also same problems mentioned by Andy Kassell.

HenriMatthijssen commented 2 years ago

Same here. It would also be nice to see the battery status.

Koenkk commented 2 years ago

Similar to the E1 contact sensor, it might be that this sensor requires a small change in the coordinator firmware to work:

CC2531/CC2530 fws: https://github.com/Koenkk/zigbee2mqtt/issues/9274#issuecomment-959505298 CC2652/CC1352: https://github.com/Koenkk/zigbee2mqtt/issues/9274#issuecomment-958146099

daenny commented 2 years ago

Thanks @Koenkk! I had the same problem.

I just tested with latest 1.22.1 HassIO addon and your patched firmware on slaesh's stick and it works!

Screenshot 2021-11-10 231116

Except battery reporting is not working. Do you have any idea how to fix that?

Koenkk commented 2 years ago

Could you check if battery works with the following report:

const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const extend = require('zigbee-herdsman-converters/lib/extend');
const e = exposes.presets;
const ea = exposes.access;

const definition = {
    zigbeeModel: ['lumi.curtain.acn002'],
    model: 'ZNJLBL01LM',
    description: 'Aqara roller shade companion E1',
    vendor: 'Xiaomi',
    fromZigbee: [fz.xiaomi_curtain_position, fz.battery, fz.cover_position_tilt, fz.ignore_basic_report, fz.xiaomi_curtain_options, fz.aqara_opple_report],
    toZigbee: [tz.xiaomi_curtain_position_state, tz.xiaomi_curtain_options],
    exposes: [e.cover_position().setAccess('state', ea.ALL), e.battery()],
    ota: ota.zigbeeOTA,
};

module.exports = definition;

See https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html#instructions how to use it, make sure you are on z2m 1.22.0

daenny commented 2 years ago

Thanks for your help! I get the following issue:

[23:00:48] INFO: Handing over control to Zigbee2mqtt Core ...
> zigbee2mqtt@1.22.0 start
> node index.js
(node:1445) UnhandledPromiseRejectionWarning: ReferenceError: ota is not defined
(Use `node --trace-warnings ...` to show where the warning was created)
(node:1445) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:1445) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

I went on and removed the line with ota and I got some state update with battery :tada: :

Zigbee2MQTT:info  2021-11-11 23:03:22: MQTT publish: topic 'zigbee2mqtt/Entrance Roller Rechts', payload '{"battery":0,"last_seen":"2021-11-11T22:03:22.425Z","linkquality":102,"position":100,"running":false,"voltage":1297}

And the state is shown as:

{
    "battery": 0,
    "last_seen": "2021-11-11T22:03:22.425Z",
    "linkquality": 102,
    "position": 100,
    "running": false,
    "voltage": 1297
}

However, I think the battery which is included is a LiPO, which should have ~3.7V-4.2V. But it's definitely an improvement.

Koenkk commented 2 years ago

And with:

const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const extend = require('zigbee-herdsman-converters/lib/extend');
const e = exposes.presets;
const ea = exposes.access;

const definition = {
    zigbeeModel: ['lumi.curtain.acn002'],
    model: 'ZNJLBL01LM',
    description: 'Aqara roller shade companion E1',
    vendor: 'Xiaomi',
    fromZigbee: [fz.xiaomi_curtain_position, fz.battery, fz.cover_position_tilt, fz.ignore_basic_report, fz.xiaomi_curtain_options],
    toZigbee: [tz.xiaomi_curtain_position_state, tz.xiaomi_curtain_options],
    exposes: [e.cover_position().setAccess('state', ea.ALL), e.battery()],
    ota: ota.zigbeeOTA,
    configure: async (device, coordinatorEndpoint, logger) => {
        const endpoint = device.getEndpoint(1);
        await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
    },
};

module.exports = definition;

??

Note: wait one day to make sure device reports the new voltage.

HenriMatthijssen commented 2 years ago

Tried it out with patched firmware for CC2652R and above change (directly in file 'xiaomi.js') and this is definitely an improvement. Progress is instantly shown now. However I have inverted my roller and this is not taken into account yet (position should be (100 - position)).

Battery still shows N/A. I also see battery not reported in the logging:

info 2021-11-13 13:19:31: MQTT publish: topic 'zigbee2mqtt/Rolgordijn Keuken', payload '{"linkquality":99,"position":86,"running":false}'

State shows:

{
    "linkquality": 105,
    "position": 86,
    "running": false
}
Koenkk commented 2 years ago

@HenriMatthijssen

HenriMatthijssen commented 2 years ago

See above, It shows N/A for Battery.

I have inverted the roller on the device itself (pressing reset button 3 times in a row).

Koenkk commented 2 years ago

@HenriMatthijssen

SchoutenHans commented 2 years ago

@Koenkk , I have two Aqara Roler Shade drivers E1. I'm running the docker-compose version 1.22 on a Raspberry Pi 4. Also I installed the CC2652/CC1352: #9274 (comment) Firmware.

My Rolers working fine. The position is updated after you modify the position. The battery value is in the payload. Zigbee2MQTT:info 2021-11-14 17:47:28: MQTT publish: topic 'zigbee2mqtt/Blind-3', payload '{"battery":0,"last_seen":1636908448351,"linkquality":72,"position":0,"running":false,"voltage":1297}'

The voltage reported is 1297mv. The Battery stay's at 0% after more that 24 hours. State { "battery": 0, "last_seen": 1636908221702, "linkquality": 75, "position": 0, "running": false, "voltage": 1298 } I don't now if the voltage is ok. I read some ware that the device has a 7,4V 1000ma battery. So, it's working with the 1.22 docker compose version and the firmware update of the CC2652 Slaesh stick

p.s. you have to rejoin the roler again after updating the firmware on the CC2562 stick.

Regards, Hans Schouten

daenny commented 2 years ago

Yes, I think something is different in the voltage reporting. It's a 7.4V two cell lipo (according to https://notenoughtech.com/home-automation/aqara-roller-shade-driver-e1-zigbee2mqtt/). I also get voltage reading in the range of 1260-1330 at the moment with:

const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const extend = require('zigbee-herdsman-converters/lib/extend');
const ota = require('zigbee-herdsman-converters/lib/ota');
const e = exposes.presets;
const ea = exposes.access;

const definition = {
    zigbeeModel: ['lumi.curtain.acn002'],
    model: 'ZNJLBL01LM',
    description: 'Aqara roller shade companion E1',
    vendor: 'Xiaomi',
    fromZigbee: [fz.xiaomi_curtain_position, fz.battery, fz.cover_position_tilt, fz.ignore_basic_report, fz.xiaomi_curtain_options, fz.aqara_opple_report],
    toZigbee: [tz.xiaomi_curtain_position_state, tz.xiaomi_curtain_options],
    exposes: [e.cover_position().setAccess('state', ea.ALL), e.battery(), e.battery_voltage()],
    ota: ota.zigbeeOTA,
};

module.exports = definition;

The value does update and change. Battery stays at 0. which makes sense, as all other battery templates expects at least a 3V battery if I read (https://github.com/Koenkk/zigbee-herdsman-converters/blob/cc45f434e7b867b404a7c2c4c005925b19163427/lib/utils.js#L132) correctly.

HenriMatthijssen commented 2 years ago

Using above from @daenny I now get Voltage reporting. Further with setting invert_cover option the position seems reported fine now.

I get for state :

{
    "battery": 0,
    "linkquality": 93,
    "position": 0,
    "running": false,
    "voltage": 1301
}

However battery percentage is still not correctly shown (as 0%).

Koenkk commented 2 years ago

Then the only thing left here is to define a calculation to convert the voltage to battery (%). This is done by zigbee2mqtt here: https://github.com/Koenkk/zigbee-herdsman-converters/blob/8f2aed87bdfd3215de72cd10e761dd2e8504ae77/converters/fromZigbee.js#L5534

Which boils down to:

wisekki commented 2 years ago

Thanks for the great work! I've been sick and wasn't able to participate. After a lot of repairing I was finally able to actually move the roller shades up and down :) but that's about it. So what do I need to do in order to get it work better? Flash the slaesh's stick? And modify scripts?

redphx commented 2 years ago

I have the Aqara Hub. Aqara app shows the battery at 55%. I tried to use the code above to get the voltage value but it didn't work. Z2M loaded the custom script but the exposed values are still the same (no voltage property, battery is null). I'm new to Z2M so not sure if I did anything wrong.

daenny commented 2 years ago

I charged my two motor drivers to 100% toady. But the battery voltage is still reported as 1298-1300. So I am afraid that there is some more work left to figure out how to get a proper reading (voltage or percentage).

Gortosch commented 2 years ago

Hello all, I also have the problem that no battery status is displayed. Everything else works fine. Thanks for this. Any news on the battery problem yet?

Is there anything I can do to help?

Greetings Sven

EDIT: I have a conbee II stick with the latest FW.

xnextx commented 2 years ago

+1

fewdji commented 2 years ago

Hi! Battery state not working. Got error: ERROR (MainThread) [homeassistant.helpers.template] Error parsing value: access to attribute 'update' of 'dict' object is unsafe. (value: {"battery":null,"linkquality":69,"position":0,"running":false,"update_available":null}, template: {{ value_json['update']['state'] == "available" }})

totalitarian commented 2 years ago

Same issue here, all works except battery

jeroenvdd commented 2 years ago

Same issue here, all works except battery

what is your firmware date is it 05-18-2021 ? for the roller

Gortosch commented 2 years ago

Hello,

i have the same issue. My firmware version is 05-18-2021. image

Is there anything I can do to help?

Greetings Sven

totalitarian commented 2 years ago

Same issue here, all works except battery

what is your firmware date is it 05-18-2021 ? for the roller

05-18-2021

EloB commented 2 years ago

I also have problem with battery. Apart from that I can Open/Close the blind but I've lost the ability to set position. I can still set min/max with 5 button click technic. It was working and I had it connected to HB and was showing of that position feature and suddenly it stopped working. Even if I remove the device from zigbee2mqtt and repair it doesn't reset that functionality. After I setup it again.

Here is an error that I get in log.

Error Publish 'get' 'state' to 'Rullgardin 1' failed: 'Error: Read 0x54ef4410002e1826/1 genAnalogOutput([85], {"timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":true,"direction":0,"srcEndpoint":null,"reservedBits":0,"manufacturerCode":null,"transactionSequenceNumber":null,"writeUndiv":false}) failed (no response received)'
jb123567 commented 2 years ago

I have two of these, seem to working well, however like others battery is just displaying a question mark. Anything I can do to help? Realistically these devices are the only zigbee devices I need to regularly charge, so it would be great to know when they need it.

invis-z commented 2 years ago

With a lot of trial and error, I was able to find another possible place where the battery percentage is provided. It is in the aqaraOpple cluster. Attribute 1033(0x0409) is the charging state, 1034 is (presumably) battery percentage, I am 90% convinced that 1034 is battery but it would be great if someone can check/prove it with official app and hub.

I was able to expose the data, but on the dashboard, the power column is still showing a question mark. I don't have much experience tweaking underhood stuff of z2m so I don't really know how to fix that.

Also, some other stuff found during this process. 1026 is curtain-range-flag 1032 is curtian-motor-speed. Referencing this page

P.S. The page above shows the charging state 2 is not chargable, I am understanding it as battery full, and is the only state I had every seen while not charging(I got the device about only 3-4 days ago). So, maybe check if anyone got a 0 (not charging)

Also, the attribute 247 includes a lot of the same information, position 101 seems to be battery. (This might help with what I am talking about: https://github.com/Koenkk/zigbee-herdsman-converters/blob/8a29cd0f2a9bf5243fdfe1623a647b612b66dd52/converters/fromZigbee.js#L5132 )

I don't really know how to add another option to the device. But apart from #10971 , most of the functionalities should be accessible with this new information.

Below is a very rough version of the converter that I am using, it still needs a lot of work, try to just use it for reference.

const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const extend = require('zigbee-herdsman-converters/lib/extend');
const ota = require('zigbee-herdsman-converters/lib/ota');
const e = exposes.presets;
const ea = exposes.access;
const herdsman = require('zigbee-herdsman');
const manufacturerOptions = {
    xiaomi: { manufacturerCode: herdsman.Zcl.ManufacturerCode.LUMI_UNITED_TECH, disableDefaultResponse: true },
};

const getKey = (object, value) => {
    for (const key in object) {
        if (object[key] == value) return key;
    }
};

const fzLocal = {
    lumi_curtain_acn002_power: {
        cluster: 'aqaraOpple',
        type: ['readResponse', 'attributeReport'],
        convert: (model, msg, publish, options, meta) => {
            const data = msg.data;
            const lookup = {
                0: 'not_charging',
                1: 'charging',
                2: 'fully_charged',
                3: 'what',
            };
            if (data && data.hasOwnProperty('1033')) {
                const value = data['1033'];
                return {
                    charging_state: lookup[value],
                };
            }
            if (data && data.hasOwnProperty('1034')) {
                const value = data['1034'];
                return {
                    battery: value,
                };
            }

        },
    },
    lumi_curtain_acn002_options: {
        cluster: 'aqaraOpple',
        type: ['readResponse', 'attributeReport'],
        convert: (model, msg, publish, options, meta) => {
            const data = msg.data;
            const lookup = {
                0: 'low',
                1: 'mid',
                2: 'high',
            };
            if (data && data.hasOwnProperty('1030')) {
                const value = data['1030'];
                return {
                    speed: lookup[value],
                };
            }

        },
    },
    aqara_opple: {
        cluster: 'aqaraOpple',
        type: ['attributeReport', 'readResponse'],
        options: [],
        convert: (model, msg, publish, options, meta) => {
            const payload = {};
            if (msg.data.hasOwnProperty('247')) {
                const data = msg.data['247'];
                // Xiaomi struct parsing
                const length = data.length;
                for (let i = 0; i < length; i++) {
                    const index = data[i];
                    let value = null;
                    switch (data[i + 1]) {
                        case 16:
                            // 0x10 ZclBoolean
                            value = data.readUInt8(i + 2);
                            i += 2;
                            break;
                        case 32:
                            // 0x20 Zcl8BitUint
                            value = data.readUInt8(i + 2);
                            i += 2;
                            break;
                        case 33:
                            // 0x21 Zcl16BitUint
                            value = data.readUInt16LE(i + 2);
                            i += 3;
                            break;
                        case 34:
                            // 0x22 Zcl24BitUint
                            value = data.readUIntLE(i + 2, 3);
                            i += 4;
                            break;
                        case 35:
                            // 0x23 Zcl32BitUint
                            value = data.readUInt32LE(i + 2);
                            i += 5;
                            break;
                        case 36:
                            // 0x24 Zcl40BitUint
                            value = data.readUIntLE(i + 2, 5);
                            i += 6;
                            break;
                        case 37:
                            // 0x25 Zcl48BitUint
                            value = data.readUIntLE(i + 2, 6);
                            i += 7;
                            break;
                        case 38:
                            // 0x26 Zcl56BitUint
                            value = data.readUIntLE(i + 2, 7);
                            i += 8;
                            break;
                        case 39:
                            // 0x27 Zcl64BitUint
                            value = data.readBigUInt64BE(i + 2);
                            i += 9;
                            break;
                        case 40:
                            // 0x28 Zcl8BitInt
                            value = data.readInt8(i + 2);
                            i += 2;
                            break;
                        case 41:
                            // 0x29 Zcl16BitInt
                            value = data.readInt16LE(i + 2);
                            i += 3;
                            break;
                        case 42:
                            // 0x2A Zcl24BitInt
                            value = data.readIntLE(i + 2, 3);
                            i += 4;
                            break;
                        case 43:
                            // 0x2B Zcl32BitInt
                            value = data.readInt32LE(i + 2);
                            i += 5;
                            break;
                        case 44:
                            // 0x2C Zcl40BitInt
                            value = data.readIntLE(i + 2, 5);
                            i += 6;
                            break;
                        case 45:
                            // 0x2D Zcl48BitInt
                            value = data.readIntLE(i + 2, 6);
                            i += 7;
                            break;
                        case 46:
                            // 0x2E Zcl56BitInt
                            value = data.readIntLE(i + 2, 7);
                            i += 8;
                            break;
                        case 47:
                            // 0x2F Zcl64BitInt
                            value = data.readBigInt64BE(i + 2);
                            i += 9;
                            break;
                        case 57:
                            // 0x39 ZclSingleFloat
                            value = data.readFloatLE(i + 2);
                            i += 5;
                            break;
                        case 58:
                            // 0x3a ZclDoubleFloat
                            value = data.readDoubleLE(i + 2);
                            i += 5;
                            break;
                        default:
                            if (meta.logger) meta.logger.debug(`${model.zigbeeModel}: unknown vtype=${data[i + 1]}, pos=${i + 1}`);
                    }

                    // if (index == 1) {
                    //     payload.voltage = value;
                    //     payload.battery = batteryVoltageToPercentage(value, '3V_2100');
                    // } else if (index === 3) payload.temperature = value; // 0x03
                    // else 
                    if (index === 101) payload.battery = value;
                    else if (meta.logger) meta.logger.debug(`${model.zigbeeModel}: unknown index ${index} with value ${value}`);
                }
            }
            if (msg.data['mode'] !== undefined) payload.operation_mode = ['command', 'event'][msg.data['mode']];
            return payload;
        },
    },
};
const tzLocal = {
    ZNJLBL01LM_charging_state: {
        key: ['charging_state'],
        convertGet: async (entity, key, meta) => {
            await entity.read('aqaraOpple', [0x0409], manufacturerOptions.xiaomi);
        },
    },
    ZNJLBL01LM_battery: {
        key: ['battery'],
        convertGet: async (entity, key, meta) => {
            await entity.read('aqaraOpple', [0x040a], manufacturerOptions.xiaomi);
        },
    },
    // ZNJLBL01LM__options: {
    //     key: ['speed'],
    //     convertGet: async (entity, key, meta) => {
    //         await entity.write('aqaraOpple', {0x0408: {value: 2, type: 0x20}}, manufacturerOptions.xiaomi);
    //     },
    // },
}

const definition = {
    zigbeeModel: ['lumi.curtain.acn002'],
    model: 'ZNJLBL01LM',
    description: 'Aqara roller shade companion E1',
    vendor: 'Xiaomi',
    fromZigbee: [fzLocal.lumi_curtain_acn002_power, fz.xiaomi_curtain_position, fz.cover_position_tilt, fz.ignore_basic_report, fz.xiaomi_curtain_options, fzLocal.aqara_opple],
    toZigbee: [tzLocal.ZNJLBL01LM_charging_state, tzLocal.ZNJLBL01LM_battery, tz.xiaomi_curtain_position_state, tz.xiaomi_curtain_options],
    exposes: [e.cover_position().setAccess('state', ea.ALL), e.battery(),
    exposes.numeric('battery', ea.STATE_GET).withValueMin(0).withValueMax(100).withUnit('%').withDescription('Battery percentage'),
    exposes.enum('charging_state', ea.STATE_GET, ['not_charging', 'charging', 'fully_charged', 'what']),
    ],
    ota: ota.zigbeeOTA,
    configure: async (device, coordinatorEndpoint, logger) => {
        const endpoint = device.endpoints[0];
        // await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
    },

};

module.exports = definition;
totalitarian commented 2 years ago

Excellent work. Being able to set motor speed is a new option in the aqara app, so it would be great if we could also configure that in z2m.

Pete1979 commented 2 years ago

Hi, Hoping this is the place to get help with my small issue. I have one of these rollers and i have inverted it with the reset button. And when i toggle the invert setting in z2m for the unit, the slider is inverted, but not the buttons. So for it to work i need to toggle off the invert setting on the device in z2m, but then the slider is at 100 when the blind is open.

Gortosch commented 2 years ago

Hello,

thanks invis-z for your great work. 👍 I hope someone from the developers can implement your information in the official version.

Grüße Sven

Mustang1966 commented 2 years ago

Great work @invis-z . Batterystats are working in the edge version!

jb123567 commented 2 years ago

Battery state working perfectly (it appears). Has anyone been able to update the firmware? Mine is showing 05-18-2021, I believe reading online there is newer out there?

Gortosch commented 2 years ago

Hi,

when is the "official" version supposed to come out? Does anyone know a date?

Grüße Sven

Koenkk commented 2 years ago

Next release is tomorrow

jeroenvdd commented 2 years ago

Next release is tomorrow

Hi Koen! when the update is released (later today?) will we have to do anything to this shader to get updated stats?

Koenkk commented 2 years ago

Update has just been released (1.23.0)

will we have to do anything to this shader to get updated stats?

No, just wait till the device reports this

jeroenvdd commented 2 years ago

Update has just been released (1.23.0)

will we have to do anything to this shader to get updated stats?

No, just wait till the device reports this

super thx (btw is there a way to force check the version of z2m ? :D i see you github has new version but my HA doesn't see it (nvm found it :D) updating as a type! :D

FlatulentCow commented 2 years ago

Just a bit of thanks/feedback. Had to rebind but that took a few seconds, now battery shows up and as a bonus it even reports the positioning without having to refresh. Brilliant, big thanks to everyone involved.


zzh (CC2652R Stick with latest firmware)

bimal12 commented 2 years ago

Decided to try and set my device up last night, and wanted to thank everyone for getting this set-up. Another device working smoothly.

Adzter commented 2 years ago

I'm running 1.23.0 with ConBee2/RaspBee2 (Coordinator revision 0x26720700) as per docs.

It seems to work, but the state doesn't update. I have to call up/down/stop a second time before it updates. I'm also not getting the battery info? Is there anything I need to change in the device settings, I'm very new to z2m.

EDIT: I should read the docs more carefully, after upgrading you have to re-pair the device. It's working fine now. Thank you for everyone that took the time to get this integration working.

hmoreau94 commented 2 years ago

Hey Guys,

I'm running 1.23.0 with Coinbee 2. I personally have tried everything with the roller driver and can't seem to have a state update (until I press the stop button to trigger a refresh)

As suggested by @Adzter I've tried to re-pair the device but it didn't change anything (also the battery still doesn't show)

Screenshot 2022-02-10 at 10 43 36
Adzter commented 2 years ago

Do you have the latest ConBee firmware? The documentation indicates only the latest supports this device (0x26720700)

https://www.zigbee2mqtt.io/devices/ZNJLBL01LM.html

hmoreau94 commented 2 years ago

@Adzter Here is a picture of the current firmware, not sure about how to check the last firmware version but mine seems to be 2.14.01. If it isn't the latest one, do you know any way I could update the firmware (either directly from HA or from my Mac) ?

kamildoleglo commented 2 years ago

@hmoreau94 you have to check the Conbee2 firmware version (in zigbee2mqtt frontend it's in settings -> about -> coordinator firmware). If it's older than 0x26720700, you'll have to upgrade the firmware, see https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/Update-deCONZ-manually

hmoreau94 commented 2 years ago

@kamildoleglo @Adzter Nope I checked and indeed it is the latest firmware for the coinbee 2:

Screenshot 2022-02-10 at 12 12 24
kamildoleglo commented 2 years ago

Strange, works fine for me and I seem to have the same FW versions of everything (I'm also using Conbee2). No idea what's wrong then

hmoreau94 commented 2 years ago

@kamildoleglo After some fiddling around I managed to have it working (some mix of restarting and re-pairing). Thanks for your help guys and sorry for others experiencing the same issue as I don't really have a way to proceed to manage to get it working

github-actions[bot] commented 2 years ago

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days