Merge branch 'master' of gitea.local:wagshome/garageDoorZigbee
commit
38d598ed2c
@ -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