zigbee-herdsman-converters 14.0.293 → 14.0.294
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/converters/fromZigbee.js +15 -2
- package/converters/toZigbee.js +9 -4
- package/devices/shinasystem.js +72 -8
- package/devices/tuya.js +7 -5
- package/npm-shrinkwrap.json +1 -1
- package/package.json +1 -1
package/converters/fromZigbee.js
CHANGED
|
@@ -6865,10 +6865,10 @@ const converters = {
|
|
|
6865
6865
|
}
|
|
6866
6866
|
break;
|
|
6867
6867
|
case tuya.dataPoints.tvWindowDetection:
|
|
6868
|
-
result = {window_detection: {1:
|
|
6868
|
+
result = {window_detection: {1: true, 0: false}[value]};
|
|
6869
6869
|
break;
|
|
6870
6870
|
case tuya.dataPoints.tvFrostDetection:
|
|
6871
|
-
result = {frost_detection: {1:
|
|
6871
|
+
result = {frost_detection: {1: true, 0: false}[value]};
|
|
6872
6872
|
break;
|
|
6873
6873
|
case tuya.dataPoints.tvHeatingSetpoint:
|
|
6874
6874
|
result = {current_heating_setpoint: (value / 10).toFixed(1)};
|
|
@@ -6931,6 +6931,19 @@ const converters = {
|
|
|
6931
6931
|
return {people: msg.data.presentValue};
|
|
6932
6932
|
},
|
|
6933
6933
|
},
|
|
6934
|
+
sihas_action: {
|
|
6935
|
+
cluster: 'genOnOff',
|
|
6936
|
+
type: ['commandOn', 'commandOff', 'commandToggle'],
|
|
6937
|
+
convert: (model, msg, publish, options, meta) => {
|
|
6938
|
+
const lookup = {'commandToggle': 'long', 'commandOn': 'double', 'commandOff': 'single'};
|
|
6939
|
+
let buttonMapping = null;
|
|
6940
|
+
if (model.model === 'MSM-300ZB') {
|
|
6941
|
+
buttonMapping = {1: '1', 2: '2', 3: '3', 4: '4'};
|
|
6942
|
+
}
|
|
6943
|
+
const button = buttonMapping ? `${buttonMapping[msg.endpoint.ID]}_` : '';
|
|
6944
|
+
return {action: `${button}${lookup[msg.type]}`};
|
|
6945
|
+
},
|
|
6946
|
+
},
|
|
6934
6947
|
hoch_din: {
|
|
6935
6948
|
cluster: 'manuSpecificTuya',
|
|
6936
6949
|
type: ['commandGetData', 'commandSetDataResponse'],
|
package/converters/toZigbee.js
CHANGED
|
@@ -5868,7 +5868,7 @@ const converters = {
|
|
|
5868
5868
|
key: [
|
|
5869
5869
|
'system_mode', 'window_detection', 'frost_detection', 'child_lock',
|
|
5870
5870
|
'current_heating_setpoint', 'local_temperature_calibration',
|
|
5871
|
-
'holiday_temperature', 'comfort_temperature', 'eco_temperature',
|
|
5871
|
+
'holiday_temperature', 'comfort_temperature', 'eco_temperature',
|
|
5872
5872
|
'open_window_temperature', 'heating_stop', 'preset',
|
|
5873
5873
|
],
|
|
5874
5874
|
convertSet: async (entity, key, value, meta) => {
|
|
@@ -5882,13 +5882,18 @@ const converters = {
|
|
|
5882
5882
|
}
|
|
5883
5883
|
break;
|
|
5884
5884
|
case 'window_detection':
|
|
5885
|
-
await tuya.
|
|
5885
|
+
await tuya.sendDataPointBool(entity, tuya.dataPoints.tvWindowDetection, value);
|
|
5886
5886
|
break;
|
|
5887
5887
|
case 'frost_detection':
|
|
5888
|
-
|
|
5888
|
+
if (value == false) {
|
|
5889
|
+
await tuya.sendDataPointBool(entity, tuya.dataPoints.tvFrostDetection, 0);
|
|
5890
|
+
await tuya.sendDataPointEnum(entity, tuya.dataPoints.tvMode, 1);
|
|
5891
|
+
} else {
|
|
5892
|
+
await tuya.sendDataPointBool(entity, tuya.dataPoints.tvFrostDetection, 1);
|
|
5893
|
+
}
|
|
5889
5894
|
break;
|
|
5890
5895
|
case 'child_lock':
|
|
5891
|
-
await tuya.
|
|
5896
|
+
await tuya.sendDataPointBool(entity, tuya.dataPoints.tvChildLock, value === 'LOCK');
|
|
5892
5897
|
break;
|
|
5893
5898
|
case 'local_temperature_calibration':
|
|
5894
5899
|
value = Math.round(value * 10);
|
package/devices/shinasystem.js
CHANGED
|
@@ -11,7 +11,7 @@ module.exports = [
|
|
|
11
11
|
zigbeeModel: ['CSM-300Z'],
|
|
12
12
|
model: 'CSM-300ZB',
|
|
13
13
|
vendor: 'ShinaSystem',
|
|
14
|
-
description: '
|
|
14
|
+
description: 'SiHAS multipurpose sensor',
|
|
15
15
|
meta: {battery: {voltageToPercentage: '3V_2100'}},
|
|
16
16
|
fromZigbee: [fz.battery, fz.sihas_people_cnt],
|
|
17
17
|
toZigbee: [tz.sihas_set_people],
|
|
@@ -30,7 +30,7 @@ module.exports = [
|
|
|
30
30
|
zigbeeModel: ['USM-300Z'],
|
|
31
31
|
model: 'USM-300ZB',
|
|
32
32
|
vendor: 'ShinaSystem',
|
|
33
|
-
description: '
|
|
33
|
+
description: 'SiHAS multipurpose sensor',
|
|
34
34
|
meta: {battery: {voltageToPercentage: '3V_2100'}},
|
|
35
35
|
fromZigbee: [fz.battery, fz.temperature, fz.humidity, fz.occupancy, fz.illuminance],
|
|
36
36
|
toZigbee: [],
|
|
@@ -51,7 +51,7 @@ module.exports = [
|
|
|
51
51
|
zigbeeModel: ['SBM300Z1'],
|
|
52
52
|
model: 'SBM300Z1',
|
|
53
53
|
vendor: 'ShinaSystem',
|
|
54
|
-
description: 'IOT smart switch 1 gang',
|
|
54
|
+
description: 'SiHAS IOT smart switch 1 gang',
|
|
55
55
|
extend: extend.switch(),
|
|
56
56
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
57
57
|
const endpoint = device.getEndpoint(1);
|
|
@@ -63,7 +63,7 @@ module.exports = [
|
|
|
63
63
|
zigbeeModel: ['SBM300Z2'],
|
|
64
64
|
model: 'SBM300Z2',
|
|
65
65
|
vendor: 'ShinaSystem',
|
|
66
|
-
description: 'IOT smart switch 2 gang',
|
|
66
|
+
description: 'SiHAS IOT smart switch 2 gang',
|
|
67
67
|
extend: extend.switch(),
|
|
68
68
|
exposes: [e.switch().withEndpoint('top'), e.switch().withEndpoint('bottom')],
|
|
69
69
|
endpoint: (device) => {
|
|
@@ -81,7 +81,7 @@ module.exports = [
|
|
|
81
81
|
zigbeeModel: ['SBM300Z3'],
|
|
82
82
|
model: 'SBM300Z3',
|
|
83
83
|
vendor: 'ShinaSystem',
|
|
84
|
-
description: 'IOT smart switch 3 gang',
|
|
84
|
+
description: 'SiHAS IOT smart switch 3 gang',
|
|
85
85
|
extend: extend.switch(),
|
|
86
86
|
exposes: [e.switch().withEndpoint('top'), e.switch().withEndpoint('center'), e.switch().withEndpoint('bottom')],
|
|
87
87
|
endpoint: (device) => {
|
|
@@ -101,7 +101,7 @@ module.exports = [
|
|
|
101
101
|
zigbeeModel: ['SBM300Z4'],
|
|
102
102
|
model: 'SBM300Z4',
|
|
103
103
|
vendor: 'ShinaSystem',
|
|
104
|
-
description: 'IOT smart switch 4 gang',
|
|
104
|
+
description: 'SiHAS IOT smart switch 4 gang',
|
|
105
105
|
extend: extend.switch(),
|
|
106
106
|
exposes: [e.switch().withEndpoint('top_left'), e.switch().withEndpoint('bottom_left'),
|
|
107
107
|
e.switch().withEndpoint('top_right'), e.switch().withEndpoint('bottom_right')],
|
|
@@ -124,7 +124,7 @@ module.exports = [
|
|
|
124
124
|
zigbeeModel: ['SBM300Z5'],
|
|
125
125
|
model: 'SBM300Z5',
|
|
126
126
|
vendor: 'ShinaSystem',
|
|
127
|
-
description: 'IOT smart switch 5 gang',
|
|
127
|
+
description: 'SiHAS IOT smart switch 5 gang',
|
|
128
128
|
extend: extend.switch(),
|
|
129
129
|
exposes: [e.switch().withEndpoint('top_left'), e.switch().withEndpoint('top_right'), e.switch().withEndpoint('center_left'),
|
|
130
130
|
e.switch().withEndpoint('bottom_left'), e.switch().withEndpoint('bottom_right')],
|
|
@@ -149,7 +149,7 @@ module.exports = [
|
|
|
149
149
|
zigbeeModel: ['SBM300Z6'],
|
|
150
150
|
model: 'SBM300Z6',
|
|
151
151
|
vendor: 'ShinaSystem',
|
|
152
|
-
description: 'IOT smart switch 6 gang',
|
|
152
|
+
description: 'SiHAS IOT smart switch 6 gang',
|
|
153
153
|
extend: extend.switch(),
|
|
154
154
|
exposes: [e.switch().withEndpoint('top_left'), e.switch().withEndpoint('bottom_left'), e.switch().withEndpoint('center_left'),
|
|
155
155
|
e.switch().withEndpoint('center_right'), e.switch().withEndpoint('top_right'), e.switch().withEndpoint('bottom_right')],
|
|
@@ -172,4 +172,68 @@ module.exports = [
|
|
|
172
172
|
await reporting.onOff(device.getEndpoint(6));
|
|
173
173
|
},
|
|
174
174
|
},
|
|
175
|
+
{
|
|
176
|
+
zigbeeModel: ['BSM-300Z'],
|
|
177
|
+
model: 'BSM-300ZB',
|
|
178
|
+
vendor: 'ShinaSystem',
|
|
179
|
+
description: 'SiHAS remote control',
|
|
180
|
+
meta: {battery: {voltageToPercentage: '3V_2100'}},
|
|
181
|
+
fromZigbee: [fz.battery, fz.sihas_action],
|
|
182
|
+
toZigbee: [],
|
|
183
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
184
|
+
const endpoint = device.getEndpoint(1);
|
|
185
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
186
|
+
await reporting.batteryVoltage(endpoint);
|
|
187
|
+
},
|
|
188
|
+
exposes: [e.battery(), e.battery_voltage(), e.action(['single', 'double', 'long'])],
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
zigbeeModel: ['TSM-300Z'],
|
|
192
|
+
model: 'TSM-300ZB',
|
|
193
|
+
vendor: 'ShinaSystem',
|
|
194
|
+
description: 'SiHAS temperature/humidity sensor',
|
|
195
|
+
meta: {battery: {voltageToPercentage: '3V_2100'}},
|
|
196
|
+
fromZigbee: [fz.temperature, fz.humidity, fz.battery],
|
|
197
|
+
toZigbee: [],
|
|
198
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
199
|
+
const endpoint = device.getEndpoint(1);
|
|
200
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'msRelativeHumidity', 'genPowerCfg']);
|
|
201
|
+
await reporting.temperature(endpoint, {min: 30, max: 300, change: 30});
|
|
202
|
+
await reporting.humidity(endpoint, {min: 30, max: 3600, change: 50});
|
|
203
|
+
await reporting.batteryVoltage(endpoint, {min: 30, max: 21600, change: 1});
|
|
204
|
+
},
|
|
205
|
+
exposes: [e.temperature(), e.humidity(), e.battery(), e.battery_voltage()],
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
zigbeeModel: ['DSM-300Z'],
|
|
209
|
+
model: 'DSM-300ZB',
|
|
210
|
+
vendor: 'ShinaSystem',
|
|
211
|
+
description: 'SiHAS contact sensor',
|
|
212
|
+
meta: {battery: {voltageToPercentage: '3V_2100'}},
|
|
213
|
+
fromZigbee: [fz.ias_contact_alarm_1, fz.battery],
|
|
214
|
+
toZigbee: [],
|
|
215
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
216
|
+
const endpoint = device.getEndpoint(1);
|
|
217
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['ssIasZone', 'genPowerCfg']);
|
|
218
|
+
await endpoint.read('ssIasZone', ['iasCieAddr', 'zoneState', 'zoneId']);
|
|
219
|
+
await reporting.batteryVoltage(endpoint, {min: 30, max: 21600, change: 1});
|
|
220
|
+
},
|
|
221
|
+
exposes: [e.contact(), e.battery(), e.battery_voltage()],
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
zigbeeModel: ['MSM-300Z'],
|
|
225
|
+
model: 'MSM-300ZB',
|
|
226
|
+
vendor: 'ShinaSystem',
|
|
227
|
+
description: 'SiHAS remote control 4 button',
|
|
228
|
+
fromZigbee: [fz.sihas_action, fz.battery],
|
|
229
|
+
toZigbee: [],
|
|
230
|
+
exposes: [e.action(['1_single', '1_double', '1_long', '2_single', '2_double', '2_long',
|
|
231
|
+
'3_single', '3_double', '3_long', '4_single', '4_double', '4_long']), e.battery(), e.battery_voltage()],
|
|
232
|
+
meta: {battery: {voltageToPercentage: '3V_2100'}},
|
|
233
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
234
|
+
const endpoint = device.getEndpoint(1);
|
|
235
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
236
|
+
await reporting.batteryVoltage(endpoint, {min: 30, max: 21600, change: 1});
|
|
237
|
+
},
|
|
238
|
+
},
|
|
175
239
|
];
|
package/devices/tuya.js
CHANGED
|
@@ -103,6 +103,7 @@ module.exports = [
|
|
|
103
103
|
{
|
|
104
104
|
fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3000_qqjaziws'},
|
|
105
105
|
{modelID: 'TS0505B', manufacturerName: '_TZ3000_jtmhndw2'},
|
|
106
|
+
{modelID: 'TS0505B', manufacturerName: '_TZ3000_ezlg0pht'},
|
|
106
107
|
{modelID: 'TS0505B', manufacturerName: '_TZ3210_5snkkrxw'},
|
|
107
108
|
{modelID: 'TS0505B', manufacturerName: '_TZ3000_12sxjap4'},
|
|
108
109
|
{modelID: 'TS0505B', manufacturerName: '_TZ3000_x2fqbdun'},
|
|
@@ -423,6 +424,7 @@ module.exports = [
|
|
|
423
424
|
{
|
|
424
425
|
fingerprint: [
|
|
425
426
|
{modelID: 'TS0502B', manufacturerName: '_TZ3210_s1x7gcq0'},
|
|
427
|
+
{modelID: 'TS0502B', manufacturerName: '_TZ3000_muqovqv0'},
|
|
426
428
|
{modelID: 'TS0502B', manufacturerName: '_TZ3210_hi1ym4bl'},
|
|
427
429
|
{modelID: 'TS0502B', manufacturerName: '_TZ3210_psgq7ysz'},
|
|
428
430
|
{modelID: 'TS0502B', manufacturerName: '_TZ3000_zw7wr5uo'},
|
|
@@ -744,13 +746,12 @@ module.exports = [
|
|
|
744
746
|
{
|
|
745
747
|
zigbeeModel: ['kud7u2l'],
|
|
746
748
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_ckud7u2l'}, {modelID: 'TS0601', manufacturerName: '_TZE200_ywdxldoj'},
|
|
747
|
-
{modelID: 'TS0601', manufacturerName: '_TZE200_cwnjrr72'}, {modelID: 'TS0601', manufacturerName: '_TZE200_chyvmhay'},
|
|
748
|
-
{modelID: 'TS0601', manufacturerName: '_TZE200_a4bpgplm'}],
|
|
749
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_cwnjrr72'}, {modelID: 'TS0601', manufacturerName: '_TZE200_chyvmhay'}],
|
|
749
750
|
model: 'TS0601_thermostat',
|
|
750
751
|
vendor: 'TuYa',
|
|
751
752
|
description: 'Radiator valve with thermostat',
|
|
752
753
|
whiteLabel: [{vendor: 'Moes', model: 'HY368'}, {vendor: 'Moes', model: 'HY369RT'}, {vendor: 'SHOJZJ', model: '378RT'},
|
|
753
|
-
{vendor: 'Silvercrest', model: 'TVR01'}
|
|
754
|
+
{vendor: 'Silvercrest', model: 'TVR01'}],
|
|
754
755
|
meta: {tuyaThermostatPreset: tuya.thermostatPresets, tuyaThermostatSystemMode: tuya.thermostatSystemModes3},
|
|
755
756
|
ota: ota.zigbeeOTA,
|
|
756
757
|
onEvent: tuya.onEventSetLocalTime,
|
|
@@ -865,7 +866,7 @@ module.exports = [
|
|
|
865
866
|
extend: extend.switch(),
|
|
866
867
|
},
|
|
867
868
|
{
|
|
868
|
-
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_cphmq0q7'},
|
|
869
|
+
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_cphmq0q7', applicationVersion: 67},
|
|
869
870
|
{modelID: 'TS011F', manufacturerName: '_TZ3000_ew3ldmgx'},
|
|
870
871
|
{modelID: 'TS011F', manufacturerName: '_TZ3000_ps3dmato'},
|
|
871
872
|
{modelID: 'TS011F', manufacturerName: '_TZ3000_mraovvmm'},
|
|
@@ -906,7 +907,8 @@ module.exports = [
|
|
|
906
907
|
.withDescription('Recover state after power outage')],
|
|
907
908
|
},
|
|
908
909
|
{
|
|
909
|
-
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_dpo1ysak'}
|
|
910
|
+
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_dpo1ysak'},
|
|
911
|
+
{modelID: 'TS011F', manufacturerName: '_TZ3000_cphmq0q7', applicationVersion: 69}],
|
|
910
912
|
model: 'TS011F_plug_3',
|
|
911
913
|
description: 'Smart plug (with power monitoring by polling)',
|
|
912
914
|
vendor: 'TuYa',
|
package/npm-shrinkwrap.json
CHANGED