zigbee-herdsman-converters 14.0.385 → 14.0.386
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 +75 -0
- package/converters/toZigbee.js +27 -0
- package/devices/ikea.js +1 -1
- package/devices/miboxer.js +4 -1
- package/devices/philips.js +9 -0
- package/devices/tuya.js +0 -1
- package/devices/zemismart.js +22 -0
- package/lib/tuya.js +49 -0
- package/npm-shrinkwrap.json +380 -396
- package/package.json +2 -2
package/converters/fromZigbee.js
CHANGED
|
@@ -7956,6 +7956,81 @@ const converters = {
|
|
|
7956
7956
|
return {action};
|
|
7957
7957
|
},
|
|
7958
7958
|
},
|
|
7959
|
+
ZMAM02: {
|
|
7960
|
+
cluster: 'manuSpecificTuya',
|
|
7961
|
+
type: ['commandDataResponse', 'commandDataReport', 'commandSetDataresponse'],
|
|
7962
|
+
convert: (model, msg, publish, options, meta) => {
|
|
7963
|
+
const result = {};
|
|
7964
|
+
// let value = tuya.getDataValue(dpValue);
|
|
7965
|
+
// let result = null;
|
|
7966
|
+
for (const dpValue of msg.data.dpValues) {
|
|
7967
|
+
const value = tuya.getDataValue(dpValue);
|
|
7968
|
+
switch (dpValue.dp) {
|
|
7969
|
+
case tuya.dataPoints.AM02Control:
|
|
7970
|
+
result.control = tuya.ZMAM02.AM02Control[value];
|
|
7971
|
+
break;
|
|
7972
|
+
case tuya.dataPoints.AM02PercentControl:
|
|
7973
|
+
result.percent_control = value;
|
|
7974
|
+
break;
|
|
7975
|
+
case tuya.dataPoints.AM02ControlBackMode:
|
|
7976
|
+
result.control_back_mode = tuya.ZMAM02.AM02Direction[value];
|
|
7977
|
+
break;
|
|
7978
|
+
case tuya.dataPoints.AM02MotorWorkingMode:
|
|
7979
|
+
switch (value) {
|
|
7980
|
+
case 0: // continuous 1
|
|
7981
|
+
result.motor_working_mode = 'continuous';
|
|
7982
|
+
break;
|
|
7983
|
+
case 1: // intermittently
|
|
7984
|
+
result.motor_working_mode = 'intermittently';
|
|
7985
|
+
break;
|
|
7986
|
+
default:
|
|
7987
|
+
meta.logger.warn('zigbee-herdsman-converters:ZM_AM_02: ' +
|
|
7988
|
+
`Mode ${value} is not recognized.`);
|
|
7989
|
+
break;
|
|
7990
|
+
}
|
|
7991
|
+
break;
|
|
7992
|
+
case tuya.dataPoints.AM02Border:
|
|
7993
|
+
switch (value) {
|
|
7994
|
+
case 0: // up
|
|
7995
|
+
result.border = 'up';
|
|
7996
|
+
break;
|
|
7997
|
+
case 1: // down
|
|
7998
|
+
result.border = 'down';
|
|
7999
|
+
break;
|
|
8000
|
+
case 2: // down_delete
|
|
8001
|
+
result.border = 'down_delete';
|
|
8002
|
+
break;
|
|
8003
|
+
default:
|
|
8004
|
+
meta.logger.warn('zigbee-herdsman-converters:ZM_AM_02: ' +
|
|
8005
|
+
`Mode ${value} is not recognized.`);
|
|
8006
|
+
break;
|
|
8007
|
+
}
|
|
8008
|
+
break;
|
|
8009
|
+
case tuya.dataPoints.AM02PercentState:
|
|
8010
|
+
result.percent_state = value;
|
|
8011
|
+
break;
|
|
8012
|
+
case tuya.dataPoints.AM02Mode:
|
|
8013
|
+
switch (value) {
|
|
8014
|
+
case 0: // morning
|
|
8015
|
+
result.mode = 'morning';
|
|
8016
|
+
break;
|
|
8017
|
+
case 1: // night
|
|
8018
|
+
result.mode = 'night';
|
|
8019
|
+
break;
|
|
8020
|
+
default:
|
|
8021
|
+
meta.logger.warn('zigbee-herdsman-converters:ZM_AM_02: ' +
|
|
8022
|
+
`Mode ${value} is not recognized.`);
|
|
8023
|
+
break;
|
|
8024
|
+
}
|
|
8025
|
+
break;
|
|
8026
|
+
default:
|
|
8027
|
+
meta.logger.warn(`fromZigbee.Zemismart Shader Konverter (Zm_AM02): NOT RECOGNIZED ` +
|
|
8028
|
+
`DP #${dpValue.dp} with data ${JSON.stringify(dpValue)}`);
|
|
8029
|
+
}
|
|
8030
|
+
}
|
|
8031
|
+
return result;
|
|
8032
|
+
},
|
|
8033
|
+
},
|
|
7959
8034
|
// #endregion
|
|
7960
8035
|
|
|
7961
8036
|
// #region Ignore converters (these message dont need parsing).
|
package/converters/toZigbee.js
CHANGED
|
@@ -6592,6 +6592,33 @@ const converters = {
|
|
|
6592
6592
|
}
|
|
6593
6593
|
},
|
|
6594
6594
|
},
|
|
6595
|
+
ZMAM02: {
|
|
6596
|
+
key: ['control', 'percent_control', 'mode', 'control_back_mode', 'border', 'motor_working_mode'],
|
|
6597
|
+
convertSet: async (entity, key, value, meta) => {
|
|
6598
|
+
switch (key) {
|
|
6599
|
+
case 'control':
|
|
6600
|
+
await tuya.sendDataPointEnum(entity, tuya.dataPoints.AM02Control, utils.getKey(tuya.ZMAM02.AM02Control, value));
|
|
6601
|
+
break;
|
|
6602
|
+
case 'percent_control':
|
|
6603
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.AM02PercentState, value);
|
|
6604
|
+
break;
|
|
6605
|
+
case 'mode':
|
|
6606
|
+
await tuya.sendDataPointEnum(entity, tuya.dataPoints.AM02Mode, utils.getKey(tuya.ZMAM02.AM02Mode, value));
|
|
6607
|
+
break;
|
|
6608
|
+
case 'control_back_mode':
|
|
6609
|
+
await tuya.sendDataPointEnum(entity, tuya.dataPoints.AM02ControlBackMode, utils.getKey(tuya.ZMAM02.AM02Direction, value));
|
|
6610
|
+
break;
|
|
6611
|
+
case 'border':
|
|
6612
|
+
await tuya.sendDataPointEnum(entity, tuya.dataPoints.AM02Border, utils.getKey(tuya.ZMAM02.AM02Border, value));
|
|
6613
|
+
break;
|
|
6614
|
+
case 'motor_working_mode':
|
|
6615
|
+
await tuya.sendDataPointEnum(entity, tuya.dataPoints.AM02MotorWorkingMode, utils.getKey(tuya.ZMAM02.AM02MotorMode, value));
|
|
6616
|
+
break;
|
|
6617
|
+
default: // Unknown Key
|
|
6618
|
+
meta.logger.warn(`toZigbee.ZMAM02: Unhandled Key ${key}`);
|
|
6619
|
+
}
|
|
6620
|
+
},
|
|
6621
|
+
},
|
|
6595
6622
|
// #endregion
|
|
6596
6623
|
|
|
6597
6624
|
// #region Ignore converters
|
package/devices/ikea.js
CHANGED
|
@@ -252,7 +252,7 @@ module.exports = [
|
|
|
252
252
|
extend: tradfriExtend.light_onoff_brightness_colortemp(),
|
|
253
253
|
},
|
|
254
254
|
{
|
|
255
|
-
zigbeeModel: ['TRADFRI bulb E27 WS clear 950lm', 'TRADFRI bulb E26 WS clear 950lm'],
|
|
255
|
+
zigbeeModel: ['TRADFRI bulb E27 WS clear 950lm', 'TRADFRI bulb E26 WS clear 950lm', 'TRADFRI bulb E27 WS\uFFFDclear 950lm'],
|
|
256
256
|
model: 'LED1546G12',
|
|
257
257
|
vendor: 'IKEA',
|
|
258
258
|
description: 'TRADFRI LED bulb E26/E27 950 lumen, dimmable, white spectrum, clear',
|
package/devices/miboxer.js
CHANGED
|
@@ -4,6 +4,7 @@ const tz = require('../converters/toZigbee');
|
|
|
4
4
|
const e = exposes.presets;
|
|
5
5
|
const ea = exposes.access;
|
|
6
6
|
const extend = require('../lib/extend');
|
|
7
|
+
const tuya = require('../lib/tuya');
|
|
7
8
|
|
|
8
9
|
module.exports = [
|
|
9
10
|
{
|
|
@@ -21,11 +22,13 @@ module.exports = [
|
|
|
21
22
|
],
|
|
22
23
|
},
|
|
23
24
|
{
|
|
24
|
-
fingerprint: [{modelID: 'TS0501B', manufacturerName: '_TZ3210_dxroobu3'}
|
|
25
|
+
fingerprint: [{modelID: 'TS0501B', manufacturerName: '_TZ3210_dxroobu3'},
|
|
26
|
+
{modelID: 'TS0501B', manufacturerName: '_TZ3210_dbilpfqk'}],
|
|
25
27
|
model: 'FUT036Z',
|
|
26
28
|
description: 'Single color LED controller',
|
|
27
29
|
vendor: 'Miboxer',
|
|
28
30
|
extend: extend.light_onoff_brightness(),
|
|
31
|
+
onEvent: tuya.onEventSetTime,
|
|
29
32
|
},
|
|
30
33
|
{
|
|
31
34
|
fingerprint: [{modelID: 'TS0502B', manufacturerName: '_TZ3210_frm6149r'}],
|
package/devices/philips.js
CHANGED
|
@@ -1543,6 +1543,15 @@ module.exports = [
|
|
|
1543
1543
|
extend: hueExtend.light_onoff_brightness_colortemp_color(),
|
|
1544
1544
|
ota: ota.zigbeeOTA,
|
|
1545
1545
|
},
|
|
1546
|
+
{
|
|
1547
|
+
zigbeeModel: ['LCF003', '4080248P7'],
|
|
1548
|
+
model: '4080248P7',
|
|
1549
|
+
vendor: 'Philips',
|
|
1550
|
+
description: 'Hue Signe floor light',
|
|
1551
|
+
meta: {turnsOffAtBrightness1: true},
|
|
1552
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
1553
|
+
ota: ota.zigbeeOTA,
|
|
1554
|
+
},
|
|
1546
1555
|
{
|
|
1547
1556
|
zigbeeModel: ['4080248U9'],
|
|
1548
1557
|
model: '4080248U9',
|
package/devices/tuya.js
CHANGED
|
@@ -845,7 +845,6 @@ module.exports = [
|
|
|
845
845
|
{modelID: 'TS0601', manufacturerName: '_TZE200_fzo2pocs'},
|
|
846
846
|
{modelID: 'TS0601', manufacturerName: '_TZE200_5sbebbzs'},
|
|
847
847
|
{modelID: 'TS0601', manufacturerName: '_TZE200_zuz7f94z'},
|
|
848
|
-
{modelID: 'TS0601', manufacturerName: '_TZE200_iossyxra'},
|
|
849
848
|
],
|
|
850
849
|
model: 'TS0601_cover',
|
|
851
850
|
vendor: 'TuYa',
|
package/devices/zemismart.js
CHANGED
|
@@ -124,4 +124,26 @@ module.exports = [
|
|
|
124
124
|
await reporting.onOff(device.getEndpoint(2));
|
|
125
125
|
},
|
|
126
126
|
},
|
|
127
|
+
{
|
|
128
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_iossyxra'}],
|
|
129
|
+
model: 'ZM-AM02',
|
|
130
|
+
vendor: 'Zemismart',
|
|
131
|
+
description: 'Zigbee/RF curtain converter',
|
|
132
|
+
fromZigbee: [fz.ZMAM02],
|
|
133
|
+
toZigbee: [tz.ZMAM02],
|
|
134
|
+
exposes: [exposes.enum('motor_working_mode', ea.STATE_SET, Object.values(tuya.ZMAM02.AM02MotorMode)),
|
|
135
|
+
exposes.enum('control', ea.STATE_SET, Object.values(tuya.ZMAM02.AM02Control)),
|
|
136
|
+
exposes.numeric('percent_state', ea.STATE).withValueMin(0).withValueMax(100).withValueStep(1).withUnit('%'),
|
|
137
|
+
exposes.enum('mode', ea.STATE_SET, Object.values(tuya.ZMAM02.AM02Mode)),
|
|
138
|
+
exposes.enum('control_back_mode', ea.STATE_SET, Object.values(tuya.ZMAM02.AM02Direction)),
|
|
139
|
+
exposes.enum('border', ea.STATE_SET, Object.values(tuya.ZMAM02.AM02Border)),
|
|
140
|
+
// ---------------------------------------------------------------------------------
|
|
141
|
+
// DP exists, but not used at the moment
|
|
142
|
+
// exposes.numeric('percent_control', ea.STATE_SET).withValueMin(0).withValueMax(100).withValueStep(1).withUnit('%'),
|
|
143
|
+
// exposes.enum('work_state', ea.STATE, Object.values(tuya.ZMAM02.AM02WorkState)),
|
|
144
|
+
// exposes.numeric('countdown_left', ea.STATE).withUnit('s'),
|
|
145
|
+
// exposes.numeric('time_total', ea.STATE).withUnit('ms'),
|
|
146
|
+
// exposes.enum('situation_set', ea.STATE, Object.values(tuya.ZMAM02.AM02Situation)),
|
|
147
|
+
],
|
|
148
|
+
},
|
|
127
149
|
];
|
package/lib/tuya.js
CHANGED
|
@@ -537,6 +537,20 @@ const dataPoints = {
|
|
|
537
537
|
evanellLocalTemp: 5,
|
|
538
538
|
evanellBattery: 6,
|
|
539
539
|
evanellChildLock: 8,
|
|
540
|
+
// ZMAM02 Zemismart RF Courtain Converter
|
|
541
|
+
AM02Control: 1,
|
|
542
|
+
AM02PercentControl: 2,
|
|
543
|
+
AM02PercentState: 3,
|
|
544
|
+
AM02Mode: 4,
|
|
545
|
+
AM02ControlBackMode: 5,
|
|
546
|
+
AM02WorkState: 7,
|
|
547
|
+
AM02CountdownLeft: 9,
|
|
548
|
+
AM02TimeTotal: 10,
|
|
549
|
+
AM02SituationSet: 11,
|
|
550
|
+
AM02Fault: 12,
|
|
551
|
+
AM02Border: 16,
|
|
552
|
+
AM02MotorWorkingMode: 20,
|
|
553
|
+
AM02AddRemoter: 101,
|
|
540
554
|
};
|
|
541
555
|
|
|
542
556
|
const thermostatWeekFormat = {
|
|
@@ -650,6 +664,40 @@ const tvThermostatPreset = {
|
|
|
650
664
|
1: 'manual',
|
|
651
665
|
3: 'holiday',
|
|
652
666
|
};
|
|
667
|
+
// Zemismart ZM_AM02 Roller Shade Converter
|
|
668
|
+
const ZMAM02 = {
|
|
669
|
+
AM02Mode: {
|
|
670
|
+
0: 'morning',
|
|
671
|
+
1: 'night',
|
|
672
|
+
},
|
|
673
|
+
AM02Control: {
|
|
674
|
+
0: 'open',
|
|
675
|
+
1: 'stop',
|
|
676
|
+
2: 'close',
|
|
677
|
+
3: 'continue',
|
|
678
|
+
},
|
|
679
|
+
AM02Direction: {
|
|
680
|
+
0: 'forward',
|
|
681
|
+
1: 'back',
|
|
682
|
+
},
|
|
683
|
+
AM02WorkState: {
|
|
684
|
+
0: 'opening',
|
|
685
|
+
1: 'closing',
|
|
686
|
+
},
|
|
687
|
+
AM02Border: {
|
|
688
|
+
0: 'up',
|
|
689
|
+
1: 'down',
|
|
690
|
+
2: 'down_delete',
|
|
691
|
+
},
|
|
692
|
+
AM02Situation: {
|
|
693
|
+
0: 'fully_open',
|
|
694
|
+
1: 'fully_close',
|
|
695
|
+
},
|
|
696
|
+
AM02MotorMode: {
|
|
697
|
+
0: 'continuous',
|
|
698
|
+
1: 'intermittently',
|
|
699
|
+
},
|
|
700
|
+
};
|
|
653
701
|
|
|
654
702
|
// Return `seq` - transaction ID for handling concrete response
|
|
655
703
|
async function sendDataPoints(entity, dpValues, cmd, seq=undefined) {
|
|
@@ -800,4 +848,5 @@ module.exports = {
|
|
|
800
848
|
tvThermostatMode,
|
|
801
849
|
tvThermostatPreset,
|
|
802
850
|
tuyaRadar,
|
|
851
|
+
ZMAM02,
|
|
803
852
|
};
|