Update zigbee-shepherd-converters to 2.0.0.

This commit is contained in:
Koenkk
2018-06-08 20:20:35 +02:00
parent ca27f9faf2
commit cf3775e0b8
3 changed files with 55 additions and 12 deletions
+28 -9
View File
@@ -32,7 +32,7 @@ class Controller {
this.zigbee = new Zigbee();
this.mqtt = new MQTT();
this.stateCache = {};
this.configuredReport = [];
this.configured = [];
this.handleZigbeeMessage = this.handleZigbeeMessage.bind(this);
this.handleMQTTMessage = this.handleMQTTMessage.bind(this);
}
@@ -140,11 +140,11 @@ class Controller {
}
configureDevice(device) {
// Configure reporting for this device.
const ieeeAddr = device.ieeeAddr;
if (ieeeAddr && device.modelId && !this.configuredReport.includes(ieeeAddr)) {
if (ieeeAddr && device.modelId && !this.configured.includes(ieeeAddr)) {
const mappedModel = zigbeeShepherdConverters.findByZigbeeModel(device.modelId);
// Call configure function of device.
if (mappedModel && mappedModel.configure) {
mappedModel.configure(ieeeAddr, this.zigbee.shepherd, this.zigbee.getCoordinator(), (ok, msg) => {
if (ok) {
@@ -155,7 +155,12 @@ class Controller {
});
}
this.configuredReport.push(ieeeAddr);
// Setup an OnAfIncomingMsg handler if needed.
if (mappedModel && mappedModel.onAfIncomingMsg) {
mappedModel.onAfIncomingMsg.forEach((ep) => this.zigbee.registerOnAfIncomingMsg(ieeeAddr, ep));
}
this.configured.push(ieeeAddr);
}
}
@@ -237,18 +242,32 @@ class Controller {
}
// After this point we cant handle message withoud cid anymore.
if (!message.data.cid) {
if (!message.data || (!message.data.cid && !message.data.cmdId)) {
return;
}
// Find a conveter for this message.
const cid = message.data.cid;
const converters = mappedModel.fromZigbee.filter((c) => c.cid === cid && c.type === message.type);
const cmdId = message.data.cmdId;
const converters = mappedModel.fromZigbee.filter((c) => {
if (cid) {
return c.cid === cid && c.type === message.type;
} else if (cmdId) {
return c.cmd === cmdId;
}
return false;
});
if (!converters.length) {
logger.warn(
`No converter available for '${mappedModel.model}' with cid '${cid}' and type '${message.type}'`
);
if (cid) {
logger.warn(
`No converter available for '${mappedModel.model}' with cid '${cid}' and type '${message.type}'`
);
} else if (cmdId) {
logger.warn(`No converter available for '${mappedModel.model}' with cmd '${cmdId}'`);
}
logger.warn(`Please see: https://github.com/Koenkk/zigbee2mqtt/wiki/How-to-support-new-devices.`);
return;
}
+16
View File
@@ -3,6 +3,7 @@ const logger = require('./util/logger');
const settings = require('./util/settings');
const data = require('./util/data');
const debug = require('debug')('zigbee2mqtt:zigbee');
const zclPacket = require('zcl-packet');
const advancedSettings = settings.get().advanced;
@@ -154,6 +155,21 @@ class Zigbee {
device.read(cid, attr, callback);
}
registerOnAfIncomingMsg(ieeeAddr, ep) {
const device = this._findDevice(ieeeAddr, ep);
device.onAfIncomingMsg = (message) => {
// Parse the message
zclPacket.parse(message.data, message.clusterid, (error, zclData) => {
const message = {
endpoints: [device],
data: zclData,
};
this.handleMessage(message);
});
};
}
_findDevice(deviceID, ep) {
// Find device in zigbee-shepherd
let device = this.getDevice(deviceID);
+11 -3
View File
@@ -2810,9 +2810,12 @@
}
},
"zigbee-shepherd-converters": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/zigbee-shepherd-converters/-/zigbee-shepherd-converters-1.0.3.tgz",
"integrity": "sha512-/VMKNW4h1c8VhjRpoQ4F2yjdd5Wj5eWt6bFqNIuwgFQwynfeZOYdgHRytLyaIRMQfJaVX9uGsthY4zpF+PG07A==",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/zigbee-shepherd-converters/-/zigbee-shepherd-converters-2.0.0.tgz",
"integrity": "sha512-GtQKwU0AD7os51bPdFLcunGvSt7c2kxrwEf+szGInGFwA5hibVgoXvLhFA0t8C8bRlxqy2FcXQDblS6i8LogiA==",
"requires": {
"debounce": "1.1.0"
},
"dependencies": {
"acorn": {
"version": "5.5.3",
@@ -3055,6 +3058,11 @@
"which": "1.3.0"
}
},
"debounce": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.1.0.tgz",
"integrity": "sha512-ZQVKfRVlwRfD150ndzEK8M90ABT+Y/JQKs4Y7U4MXdpuoUkkrr4DwKbVux3YjylA5bUMUj0Nc3pMxPJX6N2QQQ=="
},
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",