-
-
Save rclsilver/94bbdbf1711716919abd06af30c1432d to your computer and use it in GitHub Desktop.
Profalux support for zigbee2mqtt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fz = require('zigbee-herdsman-converters/converters/fromZigbee'); | |
const exposes = require('zigbee-herdsman-converters/lib/exposes'); | |
const utils = require('zigbee-herdsman-converters/lib/utils'); | |
const e = exposes.presets; | |
const ea = exposes.access; | |
let tzCover = { | |
key: ['position', 'state'], | |
options: [exposes.options.invert_cover()], | |
convertSet: async (entity, key, value, meta) => { | |
if (typeof value !== 'number') { | |
switch(value.toLowerCase()) { | |
case 'stop': | |
await entity.command( 'genLevelCtrl', 'stop', {}, utils.getOptions(meta.mapped, entity)); | |
return; | |
case 'open': | |
value = 100; | |
break; | |
case 'close': | |
value = 0; | |
break; | |
default: | |
return; | |
} | |
} | |
const invert = utils.getMetaValue(entity, meta.mapped, 'coverInverted', 'allEqual', false) | |
? !meta.options.invert_cover | |
: meta.options.invert_cover; | |
const position = invert ? 100 - value : value; | |
const level = utils.mapNumberRange(Number(position), 0, 100, 0, 255).toString(); | |
await entity.command( | |
'genLevelCtrl', | |
'moveToLevelWithOnOff', | |
{ | |
level: level, | |
transtime: 0 | |
}, | |
utils.getOptions(meta.mapped, entity), | |
); | |
return {state: {position: value}, readAfterWriteTime: 0}; | |
}, | |
convertGet: async (entity, key, meta) => { | |
await entity.read('genLevelCtrl', ['currentLevel']); | |
}, | |
}; | |
module.exports = [ | |
{ | |
fingerprint: [ | |
{ manufId: 4368, endpoints: [ { ID: 1, deviceID: 513 } ] }, | |
], | |
model: 'Remote', | |
vendor: 'Profalux', | |
description: 'Store profalux', | |
fromZigbee: [], | |
toZigbee: [], | |
exposes: [], | |
}, | |
{ | |
fingerprint: [ | |
{ manufId: 4368, endpoints: [ { ID: 1, deviceID: 512 } ] }, | |
], | |
model: 'Store', | |
vendor: 'Profalux', | |
description: 'Store profalux', | |
fromZigbee: [fz.cover_position_via_brightness, fz.cover_state_via_onoff], | |
toZigbee: [tzCover], | |
exposes: [e.cover_position().setAccess('state', ea.ALL)], | |
}, | |
]; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment