zigbee-herdsman-converters 15.0.46 → 15.0.48
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/bosch.js +16 -0
- package/devices/essentialb.js +20 -0
- package/devices/ikea.js +20 -25
- package/devices/osram.js +1 -1
- package/devices/philips.js +8 -1
- package/devices/tuya.js +3 -2
- package/devices/zemismart.js +1 -1
- package/lib/ota/OTA_URLs.md +4 -4
- package/package.json +1 -1
package/devices/bosch.js
CHANGED
|
@@ -522,6 +522,22 @@ const definition = [
|
|
|
522
522
|
exposes.enum('heartbeat', ea.ALL, Object.keys(stateOffOn)).withDescription('Enable/disable heartbeat'),
|
|
523
523
|
],
|
|
524
524
|
},
|
|
525
|
+
{
|
|
526
|
+
zigbeeModel: ['RFPR-ZB-SH-EU'],
|
|
527
|
+
model: 'RFPR-ZB-SH-EU',
|
|
528
|
+
vendor: 'Bosch',
|
|
529
|
+
description: 'Wireless motion detector',
|
|
530
|
+
fromZigbee: [fz.temperature, fz.battery, fz.ias_occupancy_alarm_1],
|
|
531
|
+
toZigbee: [],
|
|
532
|
+
meta: {battery: {voltageToPercentage: '3V_2500'}},
|
|
533
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
534
|
+
const endpoint = device.getEndpoint(1);
|
|
535
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
|
|
536
|
+
await reporting.temperature(endpoint);
|
|
537
|
+
await reporting.batteryVoltage(endpoint);
|
|
538
|
+
},
|
|
539
|
+
exposes: [e.temperature(), e.battery(), e.occupancy(), e.battery_low(), e.tamper()],
|
|
540
|
+
},
|
|
525
541
|
{
|
|
526
542
|
zigbeeModel: ['RBSH-SP-ZB-EU'],
|
|
527
543
|
model: 'BSP-FZ2',
|
package/devices/essentialb.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
const exposes = require('../lib/exposes');
|
|
2
|
+
const fz = require('../converters/fromZigbee');
|
|
3
|
+
const reporting = require('../lib/reporting');
|
|
1
4
|
const extend = require('../lib/extend');
|
|
5
|
+
const e = exposes.presets;
|
|
2
6
|
|
|
3
7
|
module.exports = [
|
|
4
8
|
{
|
|
@@ -64,4 +68,20 @@ module.exports = [
|
|
|
64
68
|
description: 'GU10 MR16 RGBW light bulb',
|
|
65
69
|
extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 370]}),
|
|
66
70
|
},
|
|
71
|
+
{
|
|
72
|
+
zigbeeModel: ['EB-SB-1B'],
|
|
73
|
+
model: 'EB-SB-1B',
|
|
74
|
+
vendor: 'EssentielB',
|
|
75
|
+
description: 'Smart button',
|
|
76
|
+
fromZigbee: [fz.battery, fz.command_on, fz.command_off, fz.command_step, fz.command_stop, fz.command_step_color_temperature],
|
|
77
|
+
toZigbee: [],
|
|
78
|
+
exposes: [e.battery(), e.action(['on', 'off', 'color_temperature_step_up', 'color_temperature_step_down',
|
|
79
|
+
'brightness_step_up', 'brightness_step_down', 'brightness_stop'])],
|
|
80
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
81
|
+
const endpoint = device.getEndpoint(1);
|
|
82
|
+
const binds = ['genBasic', 'genOnOff', 'genPowerCfg', 'lightingColorCtrl', 'genLevelCtrl'];
|
|
83
|
+
await reporting.bind(endpoint, coordinatorEndpoint, binds);
|
|
84
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
85
|
+
},
|
|
86
|
+
},
|
|
67
87
|
];
|
package/devices/ikea.js
CHANGED
|
@@ -181,7 +181,7 @@ const ikea = {
|
|
|
181
181
|
return state;
|
|
182
182
|
},
|
|
183
183
|
},
|
|
184
|
-
|
|
184
|
+
battery: {
|
|
185
185
|
cluster: 'genPowerCfg',
|
|
186
186
|
type: ['attributeReport', 'readResponse'],
|
|
187
187
|
convert: (model, msg, publish, options, meta) => {
|
|
@@ -645,7 +645,7 @@ module.exports = [
|
|
|
645
645
|
model: 'E1524/E1810',
|
|
646
646
|
description: 'TRADFRI remote control',
|
|
647
647
|
vendor: 'IKEA',
|
|
648
|
-
fromZigbee: [ikea.fz.
|
|
648
|
+
fromZigbee: [ikea.fz.battery, fz.E1524_E1810_toggle, fz.E1524_E1810_levelctrl, fz.ikea_arrow_click, fz.ikea_arrow_hold,
|
|
649
649
|
fz.ikea_arrow_release],
|
|
650
650
|
exposes: [e.battery().withAccess(ea.STATE_GET), e.action(['arrow_left_click', 'arrow_left_hold', 'arrow_left_release',
|
|
651
651
|
'arrow_right_click', 'arrow_right_hold', 'arrow_right_release', 'brightness_down_click', 'brightness_down_hold',
|
|
@@ -661,14 +661,13 @@ module.exports = [
|
|
|
661
661
|
model: 'E2001/E2002',
|
|
662
662
|
vendor: 'IKEA',
|
|
663
663
|
description: 'STYRBAR remote control',
|
|
664
|
-
fromZigbee: [ikea.fz.
|
|
664
|
+
fromZigbee: [ikea.fz.battery, ikea.fz.styrbar_on, fz.command_off, fz.command_move, fz.command_stop, fz.ikea_arrow_click,
|
|
665
665
|
fz.ikea_arrow_hold, ikea.fz.styrbar_arrow_release],
|
|
666
666
|
exposes: [e.battery().withAccess(ea.STATE_GET), e.action(['on', 'off', 'brightness_move_up', 'brightness_move_down',
|
|
667
667
|
'brightness_stop', 'arrow_left_click', 'arrow_right_click', 'arrow_left_hold',
|
|
668
668
|
'arrow_right_hold', 'arrow_left_release', 'arrow_right_release'])],
|
|
669
669
|
toZigbee: [tz.battery_percentage_remaining],
|
|
670
670
|
ota: ota.tradfri,
|
|
671
|
-
meta: {battery: {dontDividePercentage: true}},
|
|
672
671
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
673
672
|
// Binding genOnOff is not required to make device send events.
|
|
674
673
|
const endpoint = device.getEndpoint(1);
|
|
@@ -682,7 +681,7 @@ module.exports = [
|
|
|
682
681
|
vendor: 'IKEA',
|
|
683
682
|
description: 'TRADFRI ON/OFF switch',
|
|
684
683
|
fromZigbee: [fz.command_on, fz.legacy.genOnOff_cmdOn, fz.command_off, fz.legacy.genOnOff_cmdOff, fz.command_move,
|
|
685
|
-
ikea.fz.
|
|
684
|
+
ikea.fz.battery, fz.legacy.E1743_brightness_up, fz.legacy.E1743_brightness_down, fz.command_stop,
|
|
686
685
|
fz.legacy.E1743_brightness_stop],
|
|
687
686
|
exposes: [
|
|
688
687
|
e.battery().withAccess(ea.STATE_GET),
|
|
@@ -690,7 +689,7 @@ module.exports = [
|
|
|
690
689
|
],
|
|
691
690
|
toZigbee: [tz.battery_percentage_remaining],
|
|
692
691
|
ota: ota.tradfri,
|
|
693
|
-
meta: {disableActionGroup: true
|
|
692
|
+
meta: {disableActionGroup: true},
|
|
694
693
|
configure: configureRemote,
|
|
695
694
|
},
|
|
696
695
|
{
|
|
@@ -698,11 +697,11 @@ module.exports = [
|
|
|
698
697
|
model: 'E1841',
|
|
699
698
|
vendor: 'IKEA',
|
|
700
699
|
description: 'KNYCKLAN open/close remote water valve',
|
|
701
|
-
fromZigbee: [fz.command_on, fz.command_off, ikea.fz.
|
|
700
|
+
fromZigbee: [fz.command_on, fz.command_off, ikea.fz.battery],
|
|
702
701
|
exposes: [e.battery().withAccess(ea.STATE_GET), e.action(['on', 'off'])],
|
|
703
702
|
toZigbee: [tz.battery_percentage_remaining],
|
|
704
703
|
ota: ota.tradfri,
|
|
705
|
-
meta: {disableActionGroup: true
|
|
704
|
+
meta: {disableActionGroup: true},
|
|
706
705
|
configure: configureRemote,
|
|
707
706
|
},
|
|
708
707
|
{
|
|
@@ -725,11 +724,11 @@ module.exports = [
|
|
|
725
724
|
model: 'E1812',
|
|
726
725
|
vendor: 'IKEA',
|
|
727
726
|
description: 'TRADFRI shortcut button',
|
|
728
|
-
fromZigbee: [fz.command_on, fz.command_off, fz.command_move, fz.command_stop, ikea.fz.
|
|
727
|
+
fromZigbee: [fz.command_on, fz.command_off, fz.command_move, fz.command_stop, ikea.fz.battery],
|
|
729
728
|
exposes: [e.battery().withAccess(ea.STATE_GET), e.action(['on', 'off', 'brightness_move_up', 'brightness_stop'])],
|
|
730
729
|
toZigbee: [tz.battery_percentage_remaining],
|
|
731
730
|
ota: ota.tradfri,
|
|
732
|
-
meta: {disableActionGroup: true
|
|
731
|
+
meta: {disableActionGroup: true},
|
|
733
732
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
734
733
|
// Binding genOnOff is not required to make device send events.
|
|
735
734
|
const endpoint = device.getEndpoint(1);
|
|
@@ -759,7 +758,7 @@ module.exports = [
|
|
|
759
758
|
model: 'E1525/E1745',
|
|
760
759
|
vendor: 'IKEA',
|
|
761
760
|
description: 'TRADFRI motion sensor',
|
|
762
|
-
fromZigbee: [fz.battery, fz.tradfri_occupancy, fz.E1745_requested_brightness],
|
|
761
|
+
fromZigbee: [ikea.fz.battery, fz.tradfri_occupancy, fz.E1745_requested_brightness],
|
|
763
762
|
toZigbee: [],
|
|
764
763
|
exposes: [e.battery(), e.occupancy(),
|
|
765
764
|
exposes.numeric('requested_brightness_level', ea.STATE).withValueMin(76).withValueMax(254),
|
|
@@ -796,9 +795,8 @@ module.exports = [
|
|
|
796
795
|
model: 'E1757',
|
|
797
796
|
vendor: 'IKEA',
|
|
798
797
|
description: 'FYRTUR roller blind',
|
|
799
|
-
fromZigbee: [fz.cover_position_tilt, fz.battery],
|
|
800
|
-
toZigbee: [tz.cover_state, tz.cover_position_tilt],
|
|
801
|
-
meta: {battery: {dontDividePercentage: true}},
|
|
798
|
+
fromZigbee: [fz.cover_position_tilt, ikea.fz.battery],
|
|
799
|
+
toZigbee: [tz.cover_state, tz.cover_position_tilt, tz.battery_percentage_remaining],
|
|
802
800
|
ota: ota.tradfri,
|
|
803
801
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
804
802
|
const endpoint = device.getEndpoint(1);
|
|
@@ -806,16 +804,15 @@ module.exports = [
|
|
|
806
804
|
await reporting.batteryPercentageRemaining(endpoint);
|
|
807
805
|
await reporting.currentPositionLiftPercentage(endpoint);
|
|
808
806
|
},
|
|
809
|
-
exposes: [e.cover_position(), e.battery()],
|
|
807
|
+
exposes: [e.cover_position(), e.battery().withAccess(ea.STATE_GET)],
|
|
810
808
|
},
|
|
811
809
|
{
|
|
812
810
|
zigbeeModel: ['KADRILJ roller blind'],
|
|
813
811
|
model: 'E1926',
|
|
814
812
|
vendor: 'IKEA',
|
|
815
813
|
description: 'KADRILJ roller blind',
|
|
816
|
-
fromZigbee: [fz.cover_position_tilt, fz.battery],
|
|
817
|
-
toZigbee: [tz.cover_state, tz.cover_position_tilt],
|
|
818
|
-
meta: {battery: {dontDividePercentage: true}},
|
|
814
|
+
fromZigbee: [fz.cover_position_tilt, ikea.fz.battery],
|
|
815
|
+
toZigbee: [tz.cover_state, tz.cover_position_tilt, tz.battery_percentage_remaining],
|
|
819
816
|
ota: ota.tradfri,
|
|
820
817
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
821
818
|
const endpoint = device.getEndpoint(1);
|
|
@@ -823,16 +820,15 @@ module.exports = [
|
|
|
823
820
|
await reporting.batteryPercentageRemaining(endpoint);
|
|
824
821
|
await reporting.currentPositionLiftPercentage(endpoint);
|
|
825
822
|
},
|
|
826
|
-
exposes: [e.cover_position(), e.battery()],
|
|
823
|
+
exposes: [e.cover_position(), e.battery().withAccess(ea.STATE_GET)],
|
|
827
824
|
},
|
|
828
825
|
{
|
|
829
826
|
zigbeeModel: ['PRAKTLYSING cellular blind'],
|
|
830
827
|
model: 'E2102',
|
|
831
828
|
vendor: 'IKEA',
|
|
832
829
|
description: 'PRAKTLYSING cellular blind',
|
|
833
|
-
fromZigbee: [fz.cover_position_tilt, fz.battery],
|
|
834
|
-
toZigbee: [tz.cover_state, tz.cover_position_tilt],
|
|
835
|
-
meta: {battery: {dontDividePercentage: true}},
|
|
830
|
+
fromZigbee: [fz.cover_position_tilt, ikea.fz.battery],
|
|
831
|
+
toZigbee: [tz.cover_state, tz.cover_position_tilt, tz.battery_percentage_remaining],
|
|
836
832
|
ota: ota.tradfri,
|
|
837
833
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
838
834
|
const endpoint = device.getEndpoint(1);
|
|
@@ -840,7 +836,7 @@ module.exports = [
|
|
|
840
836
|
await reporting.batteryPercentageRemaining(endpoint);
|
|
841
837
|
await reporting.currentPositionLiftPercentage(endpoint);
|
|
842
838
|
},
|
|
843
|
-
exposes: [e.cover_position(), e.battery()],
|
|
839
|
+
exposes: [e.cover_position(), e.battery().withAccess(ea.STATE_GET)],
|
|
844
840
|
},
|
|
845
841
|
{
|
|
846
842
|
zigbeeModel: ['TREDANSEN block-out cellul blind'],
|
|
@@ -864,11 +860,10 @@ module.exports = [
|
|
|
864
860
|
model: 'E1766',
|
|
865
861
|
vendor: 'IKEA',
|
|
866
862
|
description: 'TRADFRI open/close remote',
|
|
867
|
-
fromZigbee: [ikea.fz.
|
|
863
|
+
fromZigbee: [ikea.fz.battery, fz.command_cover_close, fz.legacy.cover_close, fz.command_cover_open, fz.legacy.cover_open,
|
|
868
864
|
fz.command_cover_stop, fz.legacy.cover_stop],
|
|
869
865
|
exposes: [e.battery().withAccess(ea.STATE_GET), e.action(['close', 'open', 'stop'])],
|
|
870
866
|
toZigbee: [tz.battery_percentage_remaining],
|
|
871
|
-
meta: {battery: {dontDividePercentage: true}},
|
|
872
867
|
ota: ota.tradfri,
|
|
873
868
|
configure: configureRemote,
|
|
874
869
|
},
|
package/devices/osram.js
CHANGED
|
@@ -335,7 +335,7 @@ module.exports = [
|
|
|
335
335
|
model: 'AC03648',
|
|
336
336
|
vendor: 'OSRAM',
|
|
337
337
|
description: 'SMART+ spot GU5.3 tunable white',
|
|
338
|
-
extend: extend.ledvance.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
338
|
+
extend: extend.ledvance.light_onoff_brightness_colortemp({colorTempRange: [153, 370], disablePowerOnBehavior: true}),
|
|
339
339
|
ota: ota.ledvance,
|
|
340
340
|
},
|
|
341
341
|
{
|
package/devices/philips.js
CHANGED
|
@@ -592,7 +592,7 @@ module.exports = [
|
|
|
592
592
|
extend: philips.extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
593
593
|
},
|
|
594
594
|
{
|
|
595
|
-
zigbeeModel: ['LCG002', '929003047701', '929003047701'],
|
|
595
|
+
zigbeeModel: ['LCG002', '929003047701', '929003047701', '929003526202_01', ' 929003526202_02', '929003526202_03'],
|
|
596
596
|
model: '929001953101',
|
|
597
597
|
vendor: 'Philips',
|
|
598
598
|
description: 'Hue White and Color Ambiance GU10',
|
|
@@ -3044,4 +3044,11 @@ module.exports = [
|
|
|
3044
3044
|
description: 'Hue Gradient light tube compact',
|
|
3045
3045
|
extend: philips.extend.light_onoff_brightness_colortemp_color_gradient({colorTempRange: [153, 500]}),
|
|
3046
3046
|
},
|
|
3047
|
+
{
|
|
3048
|
+
zigbeeModel: ['929003055701'],
|
|
3049
|
+
model: '929003055701',
|
|
3050
|
+
vendor: 'Philips',
|
|
3051
|
+
description: 'Hue White Ambiance Devote',
|
|
3052
|
+
extend: philips.extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3053
|
+
},
|
|
3047
3054
|
];
|
package/devices/tuya.js
CHANGED
|
@@ -1074,6 +1074,7 @@ module.exports = [
|
|
|
1074
1074
|
{
|
|
1075
1075
|
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TYZB01_jytabjkb'},
|
|
1076
1076
|
{modelID: 'TS0202', manufacturerName: '_TZ3000_lltemgsf'},
|
|
1077
|
+
{modelID: 'TS0202', manufacturerName: '_TYZB01_5nr7ncpl'},
|
|
1077
1078
|
{modelID: 'TS0202', manufacturerName: '_TZ3000_mg4dy6z6'}],
|
|
1078
1079
|
model: 'TS0202_1',
|
|
1079
1080
|
vendor: 'TuYa',
|
|
@@ -1285,7 +1286,7 @@ module.exports = [
|
|
|
1285
1286
|
},
|
|
1286
1287
|
{
|
|
1287
1288
|
fingerprint: tuya.fingerprint('TS0601', ['_TZE200_ip2akl4w', '_TZE200_1agwnems', '_TZE200_la2c2uo9', '_TZE200_579lguh2',
|
|
1288
|
-
'_TZE200_vucankjx']),
|
|
1289
|
+
'_TZE200_vucankjx', '_TZE200_4mh6tyyo']),
|
|
1289
1290
|
model: 'TS0601_dimmer_1',
|
|
1290
1291
|
vendor: 'TuYa',
|
|
1291
1292
|
description: '1 gang smart dimmer',
|
|
@@ -2250,7 +2251,7 @@ module.exports = [
|
|
|
2250
2251
|
e.battery_low(), e.child_lock(), e.open_window(), e.open_window_temperature().withValueMin(5).withValueMax(30),
|
|
2251
2252
|
e.comfort_temperature().withValueMin(5).withValueMax(30), e.eco_temperature().withValueMin(5).withValueMax(30),
|
|
2252
2253
|
exposes.climate().withPreset(['auto', 'manual', 'holiday']).withLocalTemperatureCalibration(-5, 5, 0.1, ea.STATE_SET)
|
|
2253
|
-
.withLocalTemperature(ea.STATE).withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.
|
|
2254
|
+
.withLocalTemperature(ea.STATE).withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.STATE_SET)
|
|
2254
2255
|
.withSystemMode(['off', 'heat'], ea.STATE_SET, 'Only for Homeassistant'),
|
|
2255
2256
|
exposes.binary('heating_stop', ea.STATE_SET, 'ON', 'OFF').withDescription('Battery life can be prolonged'+
|
|
2256
2257
|
' by switching the heating off. To achieve this, the valve is closed fully. To activate the '+
|
package/devices/zemismart.js
CHANGED
|
@@ -77,7 +77,7 @@ module.exports = [
|
|
|
77
77
|
},
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
|
-
fingerprint: [{modelID: 'TS0003', manufacturerName: '_TZ3000_vjhcenzo'}],
|
|
80
|
+
fingerprint: [{modelID: 'TS0003', manufacturerName: '_TZ3000_vjhcenzo'}, {modelID: 'TS0003', manufacturerName: '_TZ3000_f09j9qjb'}],
|
|
81
81
|
model: 'TB25',
|
|
82
82
|
vendor: 'Zemismart',
|
|
83
83
|
description: 'Smart light switch and socket - 2 gang with neutral wire',
|
package/lib/ota/OTA_URLs.md
CHANGED
|
@@ -26,6 +26,10 @@ https://files.inovelli.com/firmware/firmware.json
|
|
|
26
26
|
|
|
27
27
|
https://files.inovelli.com/firmware
|
|
28
28
|
|
|
29
|
+
Experimental Inovelli OTA URL for zigpy:
|
|
30
|
+
|
|
31
|
+
https://files.inovelli.com/firmware/firmware-zha.json
|
|
32
|
+
|
|
29
33
|
### Sonoff OTA Firmware provider
|
|
30
34
|
|
|
31
35
|
Sonoff Zigbee OTA firmware images are made publicly available by Sonoff (first-party) at the following URLs:
|
|
@@ -46,10 +50,6 @@ Download-URL:
|
|
|
46
50
|
|
|
47
51
|
http://fw.ota.homesmart.ikea.net/feed/version_info.json
|
|
48
52
|
|
|
49
|
-
Download-URL (Test/Beta-Version):
|
|
50
|
-
|
|
51
|
-
http://fw.test.ota.homesmart.ikea.net/feed/version_info.json
|
|
52
|
-
|
|
53
53
|
Release changelogs
|
|
54
54
|
|
|
55
55
|
https://ww8.ikea.com/ikeahomesmart/releasenotes/releasenotes.html
|