making device more than meets the nothign
parent
f0b9d51cda
commit
6d4472cd32
@ -0,0 +1,82 @@
|
|||||||
|
// https://www.nxp.com/docs/en/user-guide/JN-UG-3076.pdf
|
||||||
|
|
||||||
|
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 utils = require('zigbee-herdsman-converters/lib/utils');
|
||||||
|
const e = exposes.presets;
|
||||||
|
const ea = exposes.access;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const definition = {
|
||||||
|
zigbeeModel: ['Digi GarageDoor'],
|
||||||
|
model: 'Digi GarageDoor homemade',
|
||||||
|
vendor: 'Digi NathaF',
|
||||||
|
description: 'Garage door xbee unit',
|
||||||
|
fromZigbee: [fz.on_off, fzlocal.moving_state, fzlocal.barrier_position, fzlocal.open_period, fzlocal.close_period],
|
||||||
|
toZigbee: [tz.on_off, tzlocal.barrier_position, tzlocal.stop],
|
||||||
|
meta: {disableDefaultResponse: true},
|
||||||
|
exposes: [e.switch(),e.cover_position()],
|
||||||
|
configure: async (device, coordinatorEndpoint, logger) => {
|
||||||
|
const endpoint = device.getEndpoint(8);
|
||||||
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
||||||
|
await reporting.onOff(endpoint);
|
||||||
|
await reporting.bind(endpoint,coordinatorEndpoint,['barrierControl']);
|
||||||
|
await reporting.barrierPosition(endpoint);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const fzLocal = {
|
||||||
|
moving_state: {
|
||||||
|
cluster: 'barrierControl',
|
||||||
|
type: ['attributeReport', 'readResponse'],
|
||||||
|
convert: (model, msg, publish, options, meta) => {
|
||||||
|
const movingState = msg.data['movingState']
|
||||||
|
const lookup = {
|
||||||
|
0: 'Stopped',
|
||||||
|
1: 'Closing',
|
||||||
|
2: 'Opening',
|
||||||
|
};
|
||||||
|
return lookup[movingState];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
barrier_position: {
|
||||||
|
cluster: 'barrierControl',
|
||||||
|
type: ['attributeReport', 'readResponse'],
|
||||||
|
convert: (model, msg, publish, options, meta) => {
|
||||||
|
const barrierPosition = msg.data['barrierPosition']
|
||||||
|
return barrierPosition;
|
||||||
|
},
|
||||||
|
open_period: {
|
||||||
|
cluster: 'barrierControl',
|
||||||
|
type: ['attributeReport', 'readResponse'],
|
||||||
|
convert: (model, msg, publish, options, meta) => {
|
||||||
|
const openPeriod = msg.data['openPeriod']
|
||||||
|
return openPeriod
|
||||||
|
},
|
||||||
|
},
|
||||||
|
close_period: {
|
||||||
|
cluster: 'barrierControl',
|
||||||
|
type: ['attributeReport', 'readResponse'],
|
||||||
|
convert: (model, msg, publish, options, meta) => {
|
||||||
|
const closePeriod = msg.data['closePeriod']
|
||||||
|
return closePeriod
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
//entity is the end point object with a write function, first argument is the cluster
|
||||||
|
//I think it has a command function also, gonna try that, write is to write an attribute, command is for a command
|
||||||
|
//key is the value defined map of k:v for command
|
||||||
|
const tzlocal ={
|
||||||
|
go_to_percent: {
|
||||||
|
key: ['goToPercent'],
|
||||||
|
convertSet: async (entity, key, value, meta) => {
|
||||||
|
|
||||||
|
await entity.command('barrierControl','goToPercent',0x64,utils.getOptions(meta.mapped, entity))
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
module.exports = definition;
|
Loading…
Reference in New Issue