UNPKG

zigbee-herdsman-converters

Version:

Collection of device converters to be used with zigbee-herdsman

104 lines (102 loc) 4.61 kB
const exposes = require('../lib/exposes'); const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee}; const tz = require('../converters/toZigbee'); const reporting = require('../lib/reporting'); const e = exposes.presets; module.exports = [ { zigbeeModel: ['SZ-ESW01'], model: 'SZ-ESW01', vendor: 'Sercomm', description: 'Telstra smart plug', fromZigbee: [fz.on_off, fz.metering], exposes: [e.switch(), e.power()], toZigbee: [tz.on_off], configure: async (device, coordinatorEndpoint, logger) => { const endpoint = device.getEndpoint(1); await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']); await reporting.onOff(endpoint); await reporting.instantaneousDemand(endpoint); endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 1000000, multiplier: 1}); }, }, { zigbeeModel: ['SZ-ESW01-AU'], model: 'SZ-ESW01-AU', vendor: 'Sercomm', description: 'Telstra smart plug', exposes: [e.switch(), e.power()], fromZigbee: [fz.on_off, fz.metering], toZigbee: [tz.on_off], configure: async (device, coordinatorEndpoint, logger) => { const endpoint = device.getEndpoint(1); await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']); await reporting.onOff(endpoint); await reporting.instantaneousDemand(endpoint); endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 1000000, multiplier: 1}); }, }, { zigbeeModel: ['XHS2-SE'], model: 'XHS2-SE', vendor: 'Sercomm', description: 'Magnetic door & window contact sensor', fromZigbee: [fz.ias_contact_alarm_1, fz.temperature, fz.battery], toZigbee: [], meta: {battery: {voltageToPercentage: '3V_2100'}}, configure: async (device, coordinatorEndpoint, logger) => { const endpoint = device.getEndpoint(1); await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']); await reporting.temperature(endpoint); await reporting.batteryVoltage(endpoint); }, exposes: [e.contact(), e.battery_low(), e.tamper(), e.temperature(), e.battery()], }, { zigbeeModel: ['SZ-DWS04', 'SZ-DWS04N_SF'], model: 'SZ-DWS04', vendor: 'Sercomm', description: 'Magnetic door & window contact sensor', fromZigbee: [fz.ias_contact_alarm_1, fz.temperature, fz.battery], toZigbee: [], meta: {battery: {voltageToPercentage: '3V_2100'}}, configure: async (device, coordinatorEndpoint, logger) => { const endpoint = device.getEndpoint(1); await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']); await reporting.temperature(endpoint); await reporting.batteryVoltage(endpoint); }, exposes: [e.contact(), e.battery_low(), e.tamper(), e.temperature(), e.battery()], }, { zigbeeModel: ['SZ-DWS08N'], model: 'SZ-DWS08', vendor: 'Sercomm', description: 'Magnetic door & window contact sensor', fromZigbee: [fz.ias_contact_alarm_1, fz.temperature, fz.battery], toZigbee: [], meta: {battery: {voltageToPercentage: '3V_2100'}}, configure: async (device, coordinatorEndpoint, logger) => { const endpoint = device.getEndpoint(1); await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']); await reporting.temperature(endpoint); await reporting.batteryVoltage(endpoint); }, exposes: [e.contact(), e.battery_low(), e.tamper(), e.temperature(), e.battery()], }, { zigbeeModel: ['SZ-PIR02_SF', 'SZ-PIR02'], model: 'AL-PIR02', vendor: 'Sercomm', description: 'PIR motion sensor', fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery], toZigbee: [], meta: {battery: {voltageToPercentage: '3V_2100'}}, configure: async (device, coordinatorEndpoint, logger) => { const endpoint = device.getEndpoint(1); await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']); await reporting.batteryPercentageRemaining(endpoint); }, exposes: [e.occupancy(), e.battery_low(), e.tamper(), e.battery()], }, ];