I have been trying to setup these Enkin / Elesi Zigbee Smart Dimmers using the Z2M Support New Devices Guide.
Everything works well until the end of part 2, where when using the example ‘Bulb (Light)’ .js script:
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 legacy = require('zigbee-herdsman-converters/lib/legacy');
const extend = require('zigbee-herdsman-converters/lib/extend');
const ota = require('zigbee-herdsman-converters/lib/ota');
const tuya = require('zigbee-herdsman-converters/lib/tuya');
const utils = require('zigbee-herdsman-converters/lib/utils');
const globalStore = require('zigbee-herdsman-converters/lib/store');
const e = exposes.presets;
const ea = exposes.access;
const definition = {
zigbeeModel: ['ZDM150'],
model: 'ZDM150',
vendor: 'Enkin',
description: 'Elesi Dimmer',
extend: extend.light_onoff_brightness
};
module.exports = definition;
the addon won’t start and I get this error:
[18:06:51] INFO: Preparing to start...
[18:06:52] INFO: Socat not enabled
[18:06:54] INFO: Starting Zigbee2MQTT...
/app/node_modules/zigbee-herdsman-converters/index.js:69
definition.toZigbee.push(tz.scene_store, tz.scene_recall, tz.scene_add, tz.scene_remove, tz.scene_remove_all, tz.read, tz.write, tz.command, tz.factory_reset);
^
TypeError: Cannot read properties of undefined (reading 'push')
at Object.addDefinition [as addDeviceDefinition] (/app/node_modules/zigbee-herdsman-converters/index.js:69:25)
at new ExternalConverters (/app/lib/extension/externalConverters.ts:15:17)
at new Controller (/app/lib/controller.ts:84:58)
at start (/app/index.js:106:18)
I have got it working as just a switch, without the dimming using this example:
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: ['ZDM150'],
model: 'ZDM150',
vendor: 'Enkin',
description: 'Elesi Dimmer',
fromZigbee: [fz.on_off],
toZigbee: [tz.on_off],
exposes: [e.switch()],
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
await reporting.onOff(endpoint);
},
};
module.exports = definition;
The error seems to be coming from the zigbee-herdsman-converters library which is copied straight from the example code on the Z2M tutorial. Anyone encountered this and have a fix?
Thanks in advance for any help.