zigbee-herdsman-converters 14.0.596 → 14.0.599

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/feibit.js CHANGED
@@ -22,6 +22,13 @@ module.exports = [
22
22
  await reporting.bind(device.getEndpoint(17), coordinatorEndpoint, ['genOnOff']);
23
23
  },
24
24
  },
25
+ {
26
+ zigbeeModel: ['FB56+ZSW1GKJ2.3'],
27
+ model: 'SKY01-TS1-101',
28
+ vendor: 'Feibit',
29
+ description: 'Smart light switch - 1 gang',
30
+ extend: extend.switch(),
31
+ },
25
32
  {
26
33
  zigbeeModel: ['FNB56-SOS03FB1.5'],
27
34
  model: 'SEB01ZB',
@@ -32,7 +39,7 @@ module.exports = [
32
39
  exposes: [e.sos(), e.battery_low(), e.tamper(), e.battery()],
33
40
  },
34
41
  {
35
- zigbeeModel: ['FNB56-BOT06FB2.3', 'FNB56-BOT06FB2.8', 'FB56-BOT02HM1.2'],
42
+ zigbeeModel: ['FNB56-BOT06FB2.3', 'FNB56-BOT06FB2.8', 'FB56-BOT02HM1.2', 'FNB56-BOT06FB2.8'],
36
43
  model: 'SBM01ZB',
37
44
  vendor: 'Feibit',
38
45
  description: 'Human body movement sensor',
@@ -47,7 +54,7 @@ module.exports = [
47
54
  exposes: [e.occupancy(), e.battery_low(), e.tamper(), e.battery()],
48
55
  },
49
56
  {
50
- zigbeeModel: ['FNB56-THM14FB2.4', 'FNB54-THM17ML1.1', 'FB56-THM12HM1.2'],
57
+ zigbeeModel: ['FNB56-THM14FB2.4', 'FNB54-THM17ML1.1', 'FB56-THM12HM1.2', 'FNB56-THM14FB2.5'],
51
58
  model: 'STH01ZB',
52
59
  vendor: 'Feibit',
53
60
  description: 'Smart temperature & humidity Sensor',
@@ -57,7 +64,7 @@ module.exports = [
57
64
  exposes: [e.temperature(), e.humidity(), e.battery()],
58
65
  },
59
66
  {
60
- zigbeeModel: ['FNB56-SMF06FB1.6'],
67
+ zigbeeModel: ['FNB56-SMF06FB1.6', 'FNB56-SMF06FB2.0'],
61
68
  model: 'SSA01ZB',
62
69
  vendor: 'Feibit',
63
70
  description: 'Smoke detector',
@@ -72,7 +79,7 @@ module.exports = [
72
79
  exposes: [e.smoke(), e.battery_low(), e.tamper(), e.battery()],
73
80
  },
74
81
  {
75
- zigbeeModel: ['FNB56-COS06FB1.7'],
82
+ zigbeeModel: ['FNB56-COS06FB1.7', 'FNB56-COS06FB2.1'],
76
83
  model: 'SCA01ZB',
77
84
  vendor: 'Feibit',
78
85
  description: 'Smart carbon monoxide sensor',
@@ -87,7 +94,7 @@ module.exports = [
87
94
  exposes: [e.carbon_monoxide(), e.battery_low(), e.tamper(), e.battery()],
88
95
  },
89
96
  {
90
- zigbeeModel: ['FNB56-GAS05FB1.4'],
97
+ zigbeeModel: ['FNB56-GAS05FB1.4', 'FNB56-GAS05FB1.8'],
91
98
  model: 'SGA01ZB',
92
99
  vendor: 'Feibit',
93
100
  description: 'Combustible gas sensor',
@@ -96,7 +103,7 @@ module.exports = [
96
103
  exposes: [e.gas()],
97
104
  },
98
105
  {
99
- zigbeeModel: ['FNB56-WTS05FB2.0'],
106
+ zigbeeModel: ['FNB56-WTS05FB2.0', 'FNB56-WTS05FB2.4'],
100
107
  model: 'SWA01ZB',
101
108
  vendor: 'Feibit',
102
109
  description: 'Water leakage sensor',
@@ -114,7 +121,7 @@ module.exports = [
114
121
  exposes: [e.contact(), e.battery_low(), e.tamper(), e.battery()],
115
122
  },
116
123
  {
117
- zigbeeModel: ['FB56+SKT14AL2.1'],
124
+ zigbeeModel: ['FB56+SKT14AL2.1', 'FTB56+SKT1BCW1.0'],
118
125
  model: 'SFS01ZB',
119
126
  vendor: 'Feibit',
120
127
  description: 'Power plug',
package/devices/heiman.js CHANGED
@@ -211,7 +211,7 @@ module.exports = [
211
211
  description: 'Smart remote controller',
212
212
  fromZigbee: [fz.battery, fz.command_arm, fz.command_emergency],
213
213
  toZigbee: [],
214
- exposes: [e.battery(), e.action(['emergency', 'disarm', 'arm_partial_zones', 'arm_all_zones'])],
214
+ exposes: [e.battery(), e.action(['emergency', 'disarm', 'arm_day_zones', 'arm_all_zones'])],
215
215
  configure: async (device, coordinatorEndpoint, logger) => {
216
216
  const endpoint = device.getEndpoint(1);
217
217
  await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
@@ -162,13 +162,17 @@ module.exports = [
162
162
  exposes: [e.battery(), e.action([
163
163
  'color_move', 'color_temperature_move', 'hue_move', 'hue_stop', 'brightness_step_up', 'brightness_step_down',
164
164
  'recall_*', 'on', 'off']),
165
- // exposes.composite('action_color', 'action_color') * At the moment not shown in Frontend correctly
166
- // .withFeature(exposes.numeric('x', ea.STATE)) see: https://github.com/nurikk/zigbee2mqtt-frontend/issues/1535
167
- // .withFeature(exposes.numeric('y', ea.STATE)),
168
- exposes.numeric('action_color_temperature', ea.STATE).withUnit('mired'),
169
- exposes.numeric('action_group', ea.STATE),
165
+ exposes.composite('action_color', 'action_color')
166
+ .withFeature(exposes.numeric('x', ea.STATE))
167
+ .withFeature(exposes.numeric('y', ea.STATE))
168
+ .withDescription('Only shows the transmitted color in X7Y-Mode. Noch changes possible.'),
169
+ exposes.numeric('action_color_temperature', ea.STATE).withUnit('mired')
170
+ .withDescription('color temperature value. Fixed values for each key press: 145, 175, 222, 304, 480 mired'),
171
+ exposes.numeric('action_group', ea.STATE)
172
+ .withDescription('Shows the zigbee2mqtt group bound to the active data point EP(1-4).'),
170
173
  exposes.numeric('action_transition_time', ea.STATE),
171
- exposes.text('action_color', ea.STATE)],
174
+ exposes.numeric('action_step_size', ea.STATE),
175
+ exposes.numeric('action_rate', ea.STATE)],
172
176
  toZigbee: [],
173
177
  meta: {multiEndpoint: true},
174
178
  endpoint: (device) => {
package/devices/namron.js CHANGED
@@ -3,6 +3,7 @@ const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/lega
3
3
  const tz = require('../converters/toZigbee');
4
4
  const constants = require('../lib/constants');
5
5
  const reporting = require('../lib/reporting');
6
+ const globalStore = require('../lib/store');
6
7
  const extend = require('../lib/extend');
7
8
  const ea = exposes.access;
8
9
  const e = exposes.presets;
@@ -340,6 +341,25 @@ module.exports = [
340
341
  .withValueMin(20).withValueMax(60)
341
342
  .withDescription('Room temperature alarm threshold, between 20 and 60 in °C. 0 means disabled. Default: 45.'),
342
343
  ],
344
+ onEvent: async (type, data, device, options) => {
345
+ const endpoint = device.getEndpoint(1);
346
+ if (type === 'stop') {
347
+ clearInterval(globalStore.getValue(device, 'time'));
348
+ globalStore.clearValue(device, 'time');
349
+ } else if (!globalStore.hasValue(device, 'time')) {
350
+ const hours24 = 1000 * 60 * 60 * 24;
351
+ const interval = setInterval(async () => {
352
+ try {
353
+ // Device does not asks for the time with binding, therefore we write the time every 24 hours
354
+ const time = Math.round(((new Date()).getTime() - constants.OneJanuary2000) / 1000 + ((new Date())
355
+ .getTimezoneOffset() * -1) * 60);
356
+ const values = {time: time};
357
+ endpoint.write('genTime', values);
358
+ } catch (error) {/* Do nothing*/}
359
+ }, hours24);
360
+ globalStore.putValue(device, 'time', interval);
361
+ }
362
+ },
343
363
  configure: async (device, coordinatorEndpoint, logger) => {
344
364
  const endpoint = device.getEndpoint(1);
345
365
  const binds = [
@@ -474,11 +494,6 @@ module.exports = [
474
494
  reportableChange: null}],
475
495
  options);
476
496
 
477
- // Device does not asks for the time with binding, we need to write time during configure
478
- const time = Math.round(((new Date()).getTime() - constants.OneJanuary2000) / 1000);
479
- const values = {time: time};
480
- endpoint.write('genTime', values);
481
-
482
497
  // Trigger initial read
483
498
  await endpoint.read('hvacThermostat', ['systemMode', 'runningState', 'occupiedHeatingSetpoint']);
484
499
  await endpoint.read('hvacThermostat', [0x1000, 0x1001, 0x1002, 0x1003], options);
package/devices/osram.js CHANGED
@@ -227,7 +227,7 @@ module.exports = [
227
227
  model: '4052899926110',
228
228
  vendor: 'OSRAM',
229
229
  description: 'Flex RGBW',
230
- extend: extend.ledvance.light_onoff_brightness_colortemp_color({colorTempRange: [125, 666]}),
230
+ extend: extend.ledvance.light_onoff_brightness_colortemp_color({colorTempRange: [125, 666], supportsHS: true, preferHS: true}),
231
231
  ota: ota.ledvance,
232
232
  },
233
233
  {
@@ -966,6 +966,13 @@ module.exports = [
966
966
  description: 'Hue Outdoor Econic wall lantern',
967
967
  extend: hueExtend.light_onoff_brightness_colortemp_color(),
968
968
  },
969
+ {
970
+ zigbeeModel: ['929003053001'],
971
+ model: '929003053001',
972
+ vendor: 'Philips',
973
+ description: 'Hue Sana wall light',
974
+ extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
975
+ },
969
976
  {
970
977
  zigbeeModel: ['LCE001'],
971
978
  model: '929002294101',
@@ -213,7 +213,7 @@ module.exports = [
213
213
  fz.legacy.wiser_thermostat, fz.legacy.wiser_itrv_battery, fz.hvac_user_interface, fz.wiser_device_info],
214
214
  toZigbee: [tz.thermostat_occupied_heating_setpoint, tz.thermostat_keypad_lockout],
215
215
  exposes: [exposes.climate().withSetpoint('occupied_heating_setpoint', 7, 30, 1).withLocalTemperature(ea.STATE)
216
- .withSystemMode(['off', 'auto', 'heat'], ea.STATE).withRunningState(['idle', 'heat'], ea.STATE).withPiHeatingDemand()],
216
+ .withRunningState(['idle', 'heat'], ea.STATE).withPiHeatingDemand()],
217
217
  configure: async (device, coordinatorEndpoint, logger) => {
218
218
  const endpoint = device.getEndpoint(1);
219
219
  const binds = ['genBasic', 'genPowerCfg', 'hvacThermostat', 'haDiagnostic'];
@@ -9,7 +9,12 @@ const ea = exposes.access;
9
9
 
10
10
  module.exports = [
11
11
  {
12
- zigbeeModel: ['CSM-300Z'],
12
+ fingerprint: [
13
+ {modelID: 'CSM-300Z', applicationVersion: 1},
14
+ {modelID: 'CSM-300Z', applicationVersion: 2},
15
+ {modelID: 'CSM-300Z', applicationVersion: 3},
16
+ {modelID: 'CSM-300Z', applicationVersion: 4},
17
+ ],
13
18
  model: 'CSM-300ZB',
14
19
  vendor: 'ShinaSystem',
15
20
  description: 'SiHAS multipurpose sensor',
@@ -24,7 +29,27 @@ module.exports = [
24
29
  const payload = reporting.payload('presentValue', 1, 600, 0);
25
30
  await endpoint.configureReporting('genAnalogInput', payload);
26
31
  },
32
+ exposes: [e.battery(), e.battery_voltage(),
33
+ exposes.enum('status', ea.STATE, ['idle', 'in', 'out']).withDescription('Currently status'),
34
+ exposes.numeric('people', ea.ALL).withValueMin(0).withValueMax(50).withDescription('People count')],
35
+ },
36
+ {
37
+ zigbeeModel: ['CSM-300Z'],
38
+ model: 'CSM-300ZB_V2',
39
+ vendor: 'ShinaSystem',
27
40
  ota: ota.zigbeeOTA,
41
+ description: 'SiHAS multipurpose ToF sensor',
42
+ meta: {battery: {voltageToPercentage: 'Add_1V_42V_CSM300z2v2'}},
43
+ fromZigbee: [fz.battery, fz.sihas_people_cnt],
44
+ toZigbee: [tz.sihas_set_people],
45
+ configure: async (device, coordinatorEndpoint, logger) => {
46
+ const endpoint = device.getEndpoint(1);
47
+ const binds = ['genPowerCfg', 'genAnalogInput'];
48
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
49
+ await reporting.batteryVoltage(endpoint);
50
+ const payload = reporting.payload('presentValue', 1, 600, 0);
51
+ await endpoint.configureReporting('genAnalogInput', payload);
52
+ },
28
53
  exposes: [e.battery(), e.battery_voltage(),
29
54
  exposes.enum('status', ea.STATE, ['idle', 'in', 'out']).withDescription('Currently status'),
30
55
  exposes.numeric('people', ea.ALL).withValueMin(0).withValueMax(50).withDescription('People count')],
package/devices/xiaomi.js CHANGED
@@ -101,6 +101,7 @@ module.exports = [
101
101
  e.light_brightness_colortemp([153, 370]).removeFeature('color_temp_startup').withEndpoint('l2'),
102
102
  exposes.enum('dimmer_mode', ea.ALL, ['rgbw', 'dual_ct'])
103
103
  .withDescription('Switch between rgbw mode or dual color temperature mode')],
104
+ ota: ota.zigbeeOTA,
104
105
  },
105
106
  {
106
107
  zigbeeModel: ['lumi.light.aqcn02'],
@@ -1877,6 +1878,7 @@ module.exports = [
1877
1878
  configure: async (device, coordinatorEndpoint, logger) => {
1878
1879
  await device.getEndpoint(1).write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
1879
1880
  },
1881
+ ota: ota.zigbeeOTA,
1880
1882
  },
1881
1883
  {
1882
1884
  zigbeeModel: ['lumi.switch.b2lc04'],
@@ -1908,6 +1910,7 @@ module.exports = [
1908
1910
  configure: async (device, coordinatorEndpoint, logger) => {
1909
1911
  await device.getEndpoint(1).write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
1910
1912
  },
1913
+ ota: ota.zigbeeOTA,
1911
1914
  },
1912
1915
  {
1913
1916
  zigbeeModel: ['lumi.airmonitor.acn01'],
package/lib/utils.js CHANGED
@@ -170,6 +170,12 @@ function batteryVoltageToPercentage(voltage, option) {
170
170
  percentage = toPercentage(voltage, 2850, 3200);
171
171
  } else if (option === '4LR6AA1_5v') {
172
172
  percentage = toPercentage(voltage, 3000, 4200);
173
+ } else if (option === '3V_add 1V') {
174
+ voltage = voltage + 1000;
175
+ percentage = toPercentage(voltage, 3200, 4200);
176
+ } else if (option === 'Add_1V_42V_CSM300z2v2') {
177
+ voltage = voltage + 1000;
178
+ percentage = toPercentage(voltage, 2900, 4100);
173
179
  } else {
174
180
  throw new Error(`Not batteryVoltageToPercentage type supported: ${option}`);
175
181
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.596",
3
+ "version": "14.0.599",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [