zigbee-herdsman-converters 14.0.573 → 14.0.576

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/devices/bitron.js CHANGED
@@ -186,7 +186,8 @@ module.exports = [
186
186
  vendor: 'SMaBiT (Bitron Video)',
187
187
  description: 'Wireless wall thermostat with relay',
188
188
  fromZigbee: [fz.legacy.bitron_thermostat_att_report, fz.battery, fz.hvac_user_interface],
189
- toZigbee: [tz.thermostat_occupied_heating_setpoint, tz.thermostat_local_temperature_calibration, tz.thermostat_local_temperature,
189
+ toZigbee: [tz.thermostat_control_sequence_of_operation, tz.thermostat_occupied_heating_setpoint,
190
+ tz.thermostat_occupied_cooling_setpoint, tz.thermostat_local_temperature_calibration, tz.thermostat_local_temperature,
190
191
  tz.thermostat_running_state, tz.thermostat_temperature_display_mode, tz.thermostat_keypad_lockout, tz.thermostat_system_mode],
191
192
  exposes: [e.battery(), exposes.climate().withSetpoint('occupied_heating_setpoint', 7, 30, 0.5).withLocalTemperature()
192
193
  .withSystemMode(['off', 'auto', 'heat']).withRunningState(['idle', 'heat', 'cool'])
@@ -201,6 +202,7 @@ module.exports = [
201
202
  await reporting.thermostatTemperature(endpoint);
202
203
  await reporting.thermostatTemperatureCalibration(endpoint);
203
204
  await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
205
+ await reporting.thermostatOccupiedCoolingSetpoint(endpoint);
204
206
  await reporting.thermostatRunningState(endpoint);
205
207
  await reporting.batteryAlarmState(endpoint);
206
208
  await reporting.batteryVoltage(endpoint);
@@ -435,19 +435,25 @@ module.exports = [
435
435
  zigbeeModel: ['EFEKTA_PWS'],
436
436
  model: 'EFEKTA_PWS',
437
437
  vendor: 'Custom devices (DiY)',
438
- description: '[Plant Wattering Sensor]',
439
- fromZigbee: [fz.temperature, fz.soil_moisture, fz.battery],
440
- toZigbee: [tz.factory_reset],
438
+ description: '[Plant Wattering Sensor, CR2450, CR2477 batteries, temperature ]',
439
+ fromZigbee: [fz.temperature, fz.humidity, fz.illuminance, fz.soil_moisture, fz.battery, fzLocal.node_config],
440
+ toZigbee: [tz.factory_reset, tzLocal.node_config],
441
441
  configure: async (device, coordinatorEndpoint, logger) => {
442
442
  const firstEndpoint = device.getEndpoint(1);
443
- await reporting.bind(firstEndpoint, coordinatorEndpoint, ['genPowerCfg', 'msTemperatureMeasurement', 'msSoilMoisture']);
443
+ await reporting.bind(firstEndpoint, coordinatorEndpoint, [
444
+ 'genPowerCfg', 'msTemperatureMeasurement', 'msSoilMoisture']);
444
445
  const overides = {min: 0, max: 21600, change: 0};
445
446
  await reporting.batteryVoltage(firstEndpoint, overides);
446
447
  await reporting.batteryPercentageRemaining(firstEndpoint, overides);
447
448
  await reporting.temperature(firstEndpoint, overides);
448
449
  await reporting.soil_moisture(firstEndpoint, overides);
450
+ const payload1 = [{attribute: {ID: 0x0201, type: 0x21},
451
+ minimumReportInterval: 0, maximumReportInterval: 21600, reportableChange: 0}];
452
+ await firstEndpoint.configureReporting('genPowerCfg', payload1);
449
453
  },
450
- exposes: [e.soil_moisture(), e.battery(), e.temperature()],
454
+ exposes: [e.soil_moisture(), e.battery(), e.temperature(),
455
+ exposes.numeric('report_delay', ea.STATE_SET).withUnit('Minutes').withValueMin(1).withValueMax(240)
456
+ .withDescription('Adjust Report Delay. Setting the time in minutes, by default 15 minutes')],
451
457
  },
452
458
  {
453
459
  zigbeeModel: ['EFEKTA_THP_LR'],
@@ -23,4 +23,12 @@ module.exports = [
23
23
  description: 'ZigBee Light Link wireless electronic ballast color temperature',
24
24
  extend: extend.light_onoff_brightness_colortemp(),
25
25
  },
26
+ {
27
+ zigbeeModel: ['Kobold'],
28
+ model: 'BN-600110',
29
+ vendor: 'Dresden Elektronik',
30
+ description: 'Zigbee 3.0 dimm actuator',
31
+ extend: extend.light_onoff_brightness(),
32
+ ota: ota.zigbeeOTA,
33
+ },
26
34
  ];
package/devices/heiman.js CHANGED
@@ -699,4 +699,21 @@ module.exports = [
699
699
  },
700
700
  exposes: [e.battery(), e.action(['pressed']), e.battery_low(), e.tamper()],
701
701
  },
702
+ {
703
+ zigbeeModel: ['HS3AQ-EFA-3.0'],
704
+ model: 'HS3AQ',
705
+ vendor: 'HEIMAN',
706
+ description: 'Smart air quality monitor',
707
+ fromZigbee: [fz.co2, fz.humidity, fz.battery, fz.temperature],
708
+ toZigbee: [],
709
+ configure: async (device, coordinatorEndpoint, logger) => {
710
+ const endpoint = device.getEndpoint(1);
711
+ await reporting.bind(endpoint, coordinatorEndpoint, ['msRelativeHumidity', 'genPowerCfg', 'msTemperatureMeasurement', 'msCO2']);
712
+ await reporting.batteryPercentageRemaining(endpoint);
713
+ await reporting.temperature(endpoint, {min: 1, max: constants.repInterval.MINUTES_5, change: 10}); // 0.1 degree change
714
+ await reporting.humidity(endpoint, {min: 1, max: constants.repInterval.MINUTES_5, change: 10}); // 0.1 % change
715
+ await reporting.co2(endpoint, {min: 5, max: constants.repInterval.MINUTES_5, change: 0.00005}); // 50 ppm change
716
+ },
717
+ exposes: [e.co2(), e.battery(), e.humidity(), e.temperature()],
718
+ },
702
719
  ];
@@ -0,0 +1,21 @@
1
+ const tz = require('../converters/toZigbee');
2
+ const exposes = require('../lib/exposes');
3
+ const extend = require('../lib/extend');
4
+ const e = exposes.presets;
5
+
6
+ const extendData = extend.light_onoff_brightness_colortemp_color({colorTempRange: [250, 454]});
7
+
8
+
9
+ module.exports = [
10
+ {
11
+ zigbeeModel: ['ZB-CL01'],
12
+ model: 'ZB-CL01',
13
+ vendor: 'KURVIA',
14
+ description: 'GU10 GRBWC built from AliExpress',
15
+ exposes: extendData.exposes.concat(e.power_on_behavior()),
16
+ toZigbee: [tz.on_off].concat(extendData.toZigbee),
17
+ fromZigbee: extendData.fromZigbee,
18
+ meta: {applyRedFix: true, enhancedHue: false},
19
+ },
20
+ ];
21
+
@@ -21,6 +21,31 @@ const fzLocal = {
21
21
  }
22
22
  },
23
23
  },
24
+ led_trading_9125: {
25
+ cluster: 'greenPower',
26
+ type: ['commandNotification', 'commandCommisioningNotification'],
27
+ convert: (model, msg, publish, options, meta) => {
28
+ const commandID = msg.data.commandID;
29
+ if (utils.hasAlreadyProcessedMessage(msg, msg.data.frameCounter, `${msg.device.ieeeAddr}_${commandID}`)) return;
30
+ if (commandID === 104) return; // Skip commisioning command.
31
+
32
+ // Button 1: A0 (top left)
33
+ // Button 2: A1 (bottom left)
34
+ // Button 3: B0 (top right)
35
+ // Button 4: B1 (bottom right)
36
+ const lookup = {
37
+ 0x10: 'press_1', 0x14: 'release_1', 0x11: 'press_2', 0x15: 'release_2', 0x13: 'press_3', 0x17: 'release_3',
38
+ 0x12: 'press_4', 0x16: 'release_4', 0x64: 'press_1_and_3', 0x65: 'release_1_and_3', 0x62: 'press_2_and_4',
39
+ 0x63: 'release_2_and_4',
40
+ };
41
+
42
+ if (!lookup.hasOwnProperty(commandID)) {
43
+ meta.logger.error(`LED Trading 9125: missing command '${commandID}'`);
44
+ } else {
45
+ return {action: lookup[commandID]};
46
+ }
47
+ },
48
+ },
24
49
  };
25
50
 
26
51
  module.exports = [
@@ -66,4 +91,15 @@ module.exports = [
66
91
  await reporting.bind(device.getEndpoint(5), coordinatorEndpoint, ['genOnOff']);
67
92
  },
68
93
  },
94
+ {
95
+ fingerprint: [{modelID: 'GreenPower_2', ieeeAddr: /^0x00000000017.....$/, manufId: null}],
96
+ model: '9125',
97
+ vendor: 'LED Trading',
98
+ description: 'FOH smart switch',
99
+ whiteLabel: [{vendor: 'Sunricher', model: 'SR-ZGP2801K4-FOH-E'}],
100
+ fromZigbee: [fzLocal.led_trading_9125],
101
+ toZigbee: [],
102
+ exposes: [e.action(['press_1', 'release_1', 'press_2', 'release_2', 'press_3', 'release_3', 'press_4', 'release_4',
103
+ 'press_1_and_3', 'release_1_and_3', 'press_2_and_4', 'release_2_and_4'])],
104
+ },
69
105
  ];
package/devices/lupus.js CHANGED
@@ -28,7 +28,7 @@ module.exports = [
28
28
  ota: ota.zigbeeOTA,
29
29
  },
30
30
  {
31
- zigbeeModel: ['PSMP5_00.00.03.11TC'],
31
+ zigbeeModel: ['PSMP5_00.00.03.11TC', 'PSMP5_00.00.05.12TC'],
32
32
  model: '12050',
33
33
  vendor: 'Lupus',
34
34
  description: 'LUPUSEC mains socket with power meter',
package/devices/osram.js CHANGED
@@ -83,7 +83,7 @@ module.exports = [
83
83
  model: 'AC03642',
84
84
  vendor: 'OSRAM',
85
85
  description: 'SMART+ CLASSIC A 60 TW',
86
- extend: extend.ledvance.light_onoff_brightness_colortemp(),
86
+ extend: extend.ledvance.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
87
87
  ota: ota.ledvance,
88
88
  },
89
89
  {
@@ -951,6 +951,13 @@ module.exports = [
951
951
  description: 'Hue white ambiance Adore wall light',
952
952
  extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
953
953
  },
954
+ {
955
+ zigbeeModel: ['929003056001'],
956
+ model: '929003056001',
957
+ vendor: 'Philips',
958
+ description: 'Hue white ambiance Adore bathroom mirror light with Bluetooth',
959
+ extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
960
+ },
954
961
  {
955
962
  zigbeeModel: ['LTW015'],
956
963
  model: '9290011998B',
@@ -2448,6 +2455,13 @@ module.exports = [
2448
2455
  description: 'Akari downlight',
2449
2456
  extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
2450
2457
  },
2458
+ {
2459
+ zigbeeModel: ['LCD004'],
2460
+ model: '8719514382350',
2461
+ vendor: 'Philips',
2462
+ description: 'Akari downlight',
2463
+ extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
2464
+ },
2451
2465
  {
2452
2466
  zigbeeModel: ['LCD006'],
2453
2467
  model: '9290031346',
package/devices/tuya.js CHANGED
@@ -467,6 +467,10 @@ module.exports = [
467
467
  return {'l1': 1, 'l2': 2};
468
468
  },
469
469
  meta: {multiEndpoint: true},
470
+ configure: async (device, coordinatorEndpoint, logger) => {
471
+ const endpoint = device.getEndpoint(1);
472
+ await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
473
+ },
470
474
  },
471
475
  {
472
476
  fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_rk2yzt0u'},
@@ -904,8 +908,7 @@ module.exports = [
904
908
  },
905
909
  {
906
910
  fingerprint: [{modelID: 'TS0215A', manufacturerName: '_TZ3000_4fsgukof'},
907
- {modelID: 'TS0215A', manufacturerName: '_TZ3000_wr2ucaj9'},
908
- {modelID: 'TS0215A', manufacturerName: '_TZ3000_tj4pwzzm'}],
911
+ {modelID: 'TS0215A', manufacturerName: '_TZ3000_wr2ucaj9'}],
909
912
  model: 'TS0215A_sos',
910
913
  vendor: 'TuYa',
911
914
  description: 'SOS button',
@@ -915,6 +918,7 @@ module.exports = [
915
918
  },
916
919
  {
917
920
  fingerprint: [{modelID: 'TS0215A', manufacturerName: '_TZ3000_p6ju8myv'},
921
+ {modelID: 'TS0215A', manufacturerName: '_TZ3000_tj4pwzzm'},
918
922
  {modelID: 'TS0215A', manufacturerName: '_TZ3000_fsiepnrh'}],
919
923
  model: 'TS0215A_remote',
920
924
  vendor: 'TuYa',
@@ -1022,8 +1026,8 @@ module.exports = [
1022
1026
  fingerprint: [
1023
1027
  {modelID: 'TS0201', manufacturerName: '_TZ3000_bguser20'},
1024
1028
  {modelID: 'TS0201', manufacturerName: '_TZ3000_fllyghyj'},
1025
- {modelID: 'TS0201', manufacturerName: '_TZ3000_dowj6gyi'},
1026
1029
  {modelID: 'TS0201', manufacturerName: '_TZ3000_yd2e749y'},
1030
+ {modelID: 'TS0201', manufacturerName: '_TZ3000_6uzkisv2'},
1027
1031
  ],
1028
1032
  model: 'WSD500A',
1029
1033
  vendor: 'TuYa',
@@ -1036,6 +1040,21 @@ module.exports = [
1036
1040
  await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
1037
1041
  },
1038
1042
  },
1043
+ {
1044
+ fingerprint: [
1045
+ {modelID: 'TS0201', manufacturerName: '_TZ3000_dowj6gyi'},
1046
+ ],
1047
+ model: 'IH-K009',
1048
+ vendor: 'TuYa',
1049
+ description: 'Temperature & humidity sensor',
1050
+ fromZigbee: [fzLocal.TS0201_battery, fz.temperature, fz.humidity],
1051
+ toZigbee: [],
1052
+ exposes: [e.battery(), e.temperature(), e.humidity(), e.battery_voltage()],
1053
+ configure: async (device, coordinatorEndpoint, logger) => {
1054
+ const endpoint = device.getEndpoint(1);
1055
+ await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
1056
+ },
1057
+ },
1039
1058
  {
1040
1059
  fingerprint: [{modelID: 'SM0201', manufacturerName: '_TYZB01_cbiezpds'}],
1041
1060
  model: 'SM0201',
package/lib/ota/ubisys.js CHANGED
@@ -1,5 +1,5 @@
1
- const firmwareHtmlPageUrl = 'https://www.ubisys.de/en/support/firmware/';
2
- const imageRegex = /[^"\s]*\/10F2-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{8})\S*ota1?\.zigbee/gi;
1
+ const firmwareHtmlPageUrl = 'http://fwu.ubisys.de/smarthome/OTA/release/index';
2
+ const imageRegex = /10F2-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{8})\S*ota1?\.zigbee/gi;
3
3
  const assert = require('assert');
4
4
  const url = require('url');
5
5
  const common = require('./common');
package/lib/reporting.js CHANGED
@@ -94,6 +94,10 @@ module.exports = {
94
94
  const p = payload('measuredValue', 10, repInterval.HOUR, 100, overrides);
95
95
  await endpoint.configureReporting('msTemperatureMeasurement', p);
96
96
  },
97
+ co2: async (endpoint, overrides) => {
98
+ const p = payload('measuredValue', 10, repInterval.HOUR, 1, overrides);
99
+ await endpoint.configureReporting('msCO2', p);
100
+ },
97
101
  deviceTemperature: async (endpoint, overrides) => {
98
102
  const p = payload('currentTemperature', 300, repInterval.HOUR, 1, overrides);
99
103
  await endpoint.configureReporting('genDeviceTempCfg', p);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.573",
3
+ "version": "14.0.576",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [