Update converters.

This commit is contained in:
Koen Kanters
2020-04-13 21:15:08 +02:00
parent 38acbb0234
commit 838cb6e702
11 changed files with 34 additions and 31 deletions
+1 -1
View File
@@ -47,7 +47,7 @@ class Availability extends Extension {
}
isPingable(device) {
if (pingableEndDevices.find((d) => d.zigbeeModel.includes(device.modelID))) {
if (pingableEndDevices.find((d) => d.hasOwnProperty('zigbeeModel') && d.zigbeeModel.includes(device.modelID))) {
return true;
}
+1 -1
View File
@@ -97,7 +97,7 @@ class EntityPublish extends Extension {
converters = groupConverters;
target = entity.group;
options = entity.settings;
mapped = entity.group.members.map((e) => zigbeeHerdsmanConverters.findByZigbeeModel(e.getDevice().modelID));
mapped = entity.group.members.map((e) => zigbeeHerdsmanConverters.findByDevice(e.getDevice()));
}
// Convert the MQTT message to a Zigbee message.
+4 -2
View File
@@ -1518,7 +1518,7 @@ const mapping = {
'511.040': [cfg.light_brightness_colortemp_colorxy],
'511.344': [cfg.sensor_battery, cfg.sensor_action, cfg.sensor_action_color],
'SMSZB-120': [cfg.binary_sensor_smoke, cfg.sensor_temperature, cfg.sensor_battery],
'HALIGHTDIMWWE14': [cfg.light_brightness],
'HALIGHTDIMWWE14': [cfg.light_brightness],
'GreenPower_On_Off_Switch': [cfg.sensor_action],
'GreenPower_7': [cfg.sensor_action],
'3RSL011Z': [cfg.light_brightness_colortemp],
@@ -1542,6 +1542,8 @@ const mapping = {
'MCLH-03': [cfg.switch, cfg.sensor_voltage, cfg.sensor_power, cfg.sensor_current],
'752189': [cfg.sensor_action, cfg.sensor_battery],
'676-00301024955Z': [cfg.light_brightness],
'1743030P7': [cfg.light_brightness_colortemp_colorxy],
'XBee': [],
};
/**
@@ -1572,7 +1574,7 @@ class HomeAssistant extends Extension {
}
onDeviceRemoved(device) {
const definition = zigbeeHerdsmanConverters.findByZigbeeModel(device.modelID);
const definition = zigbeeHerdsmanConverters.findByDevice(device);
if (definition) {
logger.info(`Clearing Home Assistant discovery topic for '${device.ieeeAddr}'`);
this.getConfigs(definition).forEach((config) => {
+1 -1
View File
@@ -150,7 +150,7 @@ class BridgeLegacy extends Extension {
};
if (device.type !== 'Coordinator') {
const definition = zigbeeHerdsmanConverters.findByZigbeeModel(device.modelID);
const definition = zigbeeHerdsmanConverters.findByDevice(device);
const friendlyDevice = settings.getDevice(device.ieeeAddr);
payload.model = definition ? definition.model : device.modelID;
payload.vendor = definition ? definition.vendor : '-';
+1 -1
View File
@@ -71,7 +71,7 @@ class NetworkMap extends Extension {
// Add the device model
if (device.type !== 'Coordinator') {
const definition = zigbeeHerdsmanConverters.findByZigbeeModel(device.modelID);
const definition = zigbeeHerdsmanConverters.findByDevice(device);
if (definition) {
labels.push(`${definition.vendor} ${definition.description} (${definition.model})`);
} else {
+2 -1
View File
@@ -43,7 +43,8 @@ function flatten(arr) {
const forceEndDevice = flatten(
['QBKG03LM', 'QBKG04LM', 'ZNMS13LM', 'ZNMS12LM']
.map((model) => zigbeeHerdsmanConverters.devices.find((d) => d.model === model))
.map((mappedModel) => mappedModel.zigbeeModel));
.filter((definition) => definition.hasOwnProperty('zigbeeModel'))
.map((definition) => definition.zigbeeModel));
async function getZigbee2mqttVersion() {
return new Promise((resolve, reject) => {
+2 -2
View File
@@ -182,7 +182,7 @@ class Zigbee extends events.EventEmitter {
return null;
}
const definition = zigbeeHerdsmanConverters.findByZigbeeModel(device.modelID);
const definition = zigbeeHerdsmanConverters.findByDevice(device);
const endpoints = definition && definition.endpoint ? definition.endpoint(device) : null;
let endpoint;
if (endpointKey) {
@@ -217,7 +217,7 @@ class Zigbee extends events.EventEmitter {
endpoint: key.endpoints[0],
settings: setting,
name: setting ? setting.friendlyName : (key.type === 'Coordinator' ? 'Coordinator' : key.ieeeAddr),
definition: zigbeeHerdsmanConverters.findByZigbeeModel(key.modelID),
definition: zigbeeHerdsmanConverters.findByDevice(key),
};
}
}
+13 -13
View File
@@ -942,13 +942,13 @@
"dev": true
},
"@typescript-eslint/experimental-utils": {
"version": "2.27.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.27.0.tgz",
"integrity": "sha512-vOsYzjwJlY6E0NJRXPTeCGqjv5OHgRU1kzxHKWJVPjDYGbPgLudBXjIlc+OD1hDBZ4l1DLbOc5VjofKahsu9Jw==",
"version": "2.28.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.28.0.tgz",
"integrity": "sha512-4SL9OWjvFbHumM/Zh/ZeEjUFxrYKtdCi7At4GyKTbQlrj1HcphIDXlje4Uu4cY+qzszR5NdVin4CCm6AXCjd6w==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.3",
"@typescript-eslint/typescript-estree": "2.27.0",
"@typescript-eslint/typescript-estree": "2.28.0",
"eslint-scope": "^5.0.0",
"eslint-utils": "^2.0.0"
},
@@ -965,9 +965,9 @@
}
},
"@typescript-eslint/typescript-estree": {
"version": "2.27.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.27.0.tgz",
"integrity": "sha512-t2miCCJIb/FU8yArjAvxllxbTiyNqaXJag7UOpB5DVoM3+xnjeOngtqlJkLRnMtzaRcJhe3CIR9RmL40omubhg==",
"version": "2.28.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.28.0.tgz",
"integrity": "sha512-HDr8MP9wfwkiuqzRVkuM3BeDrOC4cKbO5a6BymZBHUt5y/2pL0BXD6I/C/ceq2IZoHWhcASk+5/zo+dwgu9V8Q==",
"dev": true,
"requires": {
"debug": "^4.1.1",
@@ -5749,9 +5749,9 @@
}
},
"semver": {
"version": "7.2.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.2.2.tgz",
"integrity": "sha512-Zo84u6o2PebMSK3zjJ6Zp5wi8VnQZnEaCP13Ul/lt1ANsLACxnJxq4EEm1PY94/por1Hm9+7xpIswdS5AkieMA=="
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz",
"integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig=="
},
"set-blocking": {
"version": "2.0.0",
@@ -14996,9 +14996,9 @@
}
},
"zigbee-herdsman-converters": {
"version": "12.0.74",
"resolved": "https://registry.npmjs.org/zigbee-herdsman-converters/-/zigbee-herdsman-converters-12.0.74.tgz",
"integrity": "sha512-bQXEbCN9THlgeOjKM7IteOxVkl1vo/ho+9iTuZx98AferjF+l3zhDyEPGT6W8Ebh1KjECY2l+hkVyHewjxvPlA==",
"version": "12.0.75",
"resolved": "https://registry.npmjs.org/zigbee-herdsman-converters/-/zigbee-herdsman-converters-12.0.75.tgz",
"integrity": "sha512-zSQhR4FaHUBn1iDJX/xuuD4KB46BfuDoO1uMSY5ztQCB6bUOdoPuFCE/XmM/emfhC8zqKUYFX4d7Cz7bzTg0/g==",
"requires": {
"axios": "*",
"tar-stream": "*"
+1 -1
View File
@@ -46,7 +46,7 @@
"semver": "*",
"winston": "*",
"zigbee-herdsman": "0.12.81",
"zigbee-herdsman-converters": "12.0.74"
"zigbee-herdsman-converters": "12.0.75"
},
"devDependencies": {
"eslint": "*",
+1 -1
View File
@@ -13,7 +13,7 @@ const mocksClear = [MQTT.publish, logger.warn, logger.debug];
const zigbeeHerdsmanConverters = require('zigbee-herdsman-converters');
const mockOnEvent = jest.fn();
const mappedLivolo = zigbeeHerdsmanConverters.findByZigbeeModel(zigbeeHerdsman.devices.LIVOLO.modelID);
const mappedLivolo = zigbeeHerdsmanConverters.findByDevice(zigbeeHerdsman.devices.LIVOLO);
mappedLivolo.onEvent = mockOnEvent;
zigbeeHerdsmanConverters.onEvent = jest.fn();
+7 -7
View File
@@ -38,7 +38,7 @@ describe('OTA update', () => {
count++;
return {swBuildId: count, dateCode: '2019010' + count}
});
const mapped = zigbeeHerdsmanConverters.findByZigbeeModel(device.modelID)
const mapped = zigbeeHerdsmanConverters.findByDevice(device)
mockClear(mapped);
logger.info.mockClear();
logger.error.mockClear();
@@ -67,7 +67,7 @@ describe('OTA update', () => {
const device = zigbeeHerdsman.devices.bulb;
const endpoint = device.endpoints[0];
endpoint.read.mockImplementation(() => {return {swBuildId: 1, dateCode: '2019010'}});
const mapped = zigbeeHerdsmanConverters.findByZigbeeModel(device.modelID)
const mapped = zigbeeHerdsmanConverters.findByDevice(device)
mockClear(mapped);
logger.info.mockClear();
logger.error.mockClear();
@@ -84,7 +84,7 @@ describe('OTA update', () => {
it('Should be able to check if OTA update is available', async () => {
const device = zigbeeHerdsman.devices.bulb;
const mapped = zigbeeHerdsmanConverters.findByZigbeeModel(device.modelID)
const mapped = zigbeeHerdsmanConverters.findByDevice(device)
mockClear(mapped);
logger.info.mockClear();
@@ -106,7 +106,7 @@ describe('OTA update', () => {
it('Should handle if OTA update check fails', async () => {
const device = zigbeeHerdsman.devices.bulb;
const mapped = zigbeeHerdsmanConverters.findByZigbeeModel(device.modelID)
const mapped = zigbeeHerdsmanConverters.findByDevice(device)
mockClear(mapped);
logger.error.mockClear();
mapped.ota.isUpdateAvailable.mockImplementationOnce(() => {throw new Error('RF singals disturbed because of dogs barking')});
@@ -127,7 +127,7 @@ describe('OTA update', () => {
it('Should refuse to check/update when already in progress', async () => {
jest.useFakeTimers();
const device = zigbeeHerdsman.devices.bulb;
const mapped = zigbeeHerdsmanConverters.findByZigbeeModel(device.modelID)
const mapped = zigbeeHerdsmanConverters.findByDevice(device)
mockClear(mapped);
logger.info.mockClear();
@@ -154,7 +154,7 @@ describe('OTA update', () => {
return {swBuildId: 1, dateCode: '2019010'}
});
const mapped = zigbeeHerdsmanConverters.findByZigbeeModel(device.modelID)
const mapped = zigbeeHerdsmanConverters.findByDevice(device)
mockClear(mapped);
logger.info.mockClear();
MQTT.events.message('zigbee2mqtt/bridge/ota_update/update', 'bulb');
@@ -165,7 +165,7 @@ describe('OTA update', () => {
it('Should check for update when device requests it', async () => {
const device = zigbeeHerdsman.devices.bulb;
const data = {imageType: 12382};
const mapped = zigbeeHerdsmanConverters.findByZigbeeModel(device.modelID)
const mapped = zigbeeHerdsmanConverters.findByDevice(device)
mockClear(mapped);
mapped.ota.isUpdateAvailable.mockReturnValueOnce(true);
const payload = {data, cluster: 'genOta', device, endpoint: device.getEndpoint(1), type: 'commandQueryNextImageRequest', linkquality: 10};