zigbee-herdsman-converters 20.16.0 → 20.16.1

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/converters/toZigbee.d.ts +4 -0
  3. package/converters/toZigbee.d.ts.map +1 -1
  4. package/converters/toZigbee.js +7 -0
  5. package/converters/toZigbee.js.map +1 -1
  6. package/devices/bosch.d.ts.map +1 -1
  7. package/devices/bosch.js +1 -15
  8. package/devices/bosch.js.map +1 -1
  9. package/devices/datek.d.ts.map +1 -1
  10. package/devices/datek.js +3 -49
  11. package/devices/datek.js.map +1 -1
  12. package/devices/develco.d.ts.map +1 -1
  13. package/devices/develco.js +8 -71
  14. package/devices/develco.js.map +1 -1
  15. package/devices/lifecontrol.js +1 -1
  16. package/devices/lifecontrol.js.map +1 -1
  17. package/devices/owon.d.ts.map +1 -1
  18. package/devices/owon.js +4 -48
  19. package/devices/owon.js.map +1 -1
  20. package/devices/salus_controls.d.ts.map +1 -1
  21. package/devices/salus_controls.js +2 -23
  22. package/devices/salus_controls.js.map +1 -1
  23. package/devices/shinasystem.d.ts.map +1 -1
  24. package/devices/shinasystem.js +3 -77
  25. package/devices/shinasystem.js.map +1 -1
  26. package/devices/sinope.d.ts.map +1 -1
  27. package/devices/sinope.js +16 -202
  28. package/devices/sinope.js.map +1 -1
  29. package/lib/lumi.js +3 -3
  30. package/lib/lumi.js.map +1 -1
  31. package/lib/modernExtend.d.ts +6 -1
  32. package/lib/modernExtend.d.ts.map +1 -1
  33. package/lib/modernExtend.js +99 -31
  34. package/lib/modernExtend.js.map +1 -1
  35. package/lib/reporting.d.ts.map +1 -1
  36. package/lib/reporting.js +0 -1
  37. package/lib/reporting.js.map +1 -1
  38. package/lib/types.d.ts +1 -1
  39. package/lib/types.d.ts.map +1 -1
  40. package/lib/utils.d.ts.map +1 -1
  41. package/lib/utils.js +1 -0
  42. package/lib/utils.js.map +1 -1
  43. package/package.json +1 -1
package/devices/sinope.js CHANGED
@@ -628,14 +628,8 @@ const definitions = [
628
628
  model: 'TH1123ZB',
629
629
  vendor: 'Sinopé',
630
630
  description: 'Zigbee line volt thermostat',
631
- fromZigbee: [
632
- fzLocal.thermostat,
633
- fzLocal.sinope,
634
- legacy.fz.hvac_user_interface,
635
- fromZigbee_1.default.electrical_measurement,
636
- fromZigbee_1.default.metering,
637
- fromZigbee_1.default.ignore_temperature_report,
638
- ],
631
+ extend: [(0, modernExtend_1.electricityMeter)()],
632
+ fromZigbee: [fzLocal.thermostat, fzLocal.sinope, legacy.fz.hvac_user_interface, fromZigbee_1.default.ignore_temperature_report],
639
633
  toZigbee: [
640
634
  toZigbee_1.default.thermostat_local_temperature,
641
635
  toZigbee_1.default.thermostat_occupied_heating_setpoint,
@@ -652,7 +646,6 @@ const definitions = [
652
646
  tzLocal.outdoor_temperature_timeout,
653
647
  tzLocal.thermostat_occupancy,
654
648
  tzLocal.main_cycle_output,
655
- toZigbee_1.default.electrical_measurement_power,
656
649
  ],
657
650
  exposes: [
658
651
  e
@@ -694,10 +687,6 @@ const definitions = [
694
687
  e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('Control backlight dimming behavior'),
695
688
  e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
696
689
  e.enum('main_cycle_output', ea.ALL, ['15_sec', '15_min']).withDescription('The length of the control cycle: 15_sec=normal 15_min=fan'),
697
- e.power().withAccess(ea.STATE_GET),
698
- e.current(),
699
- e.voltage(),
700
- e.energy(),
701
690
  ],
702
691
  configure: async (device, coordinatorEndpoint) => {
703
692
  const endpoint = device.getEndpoint(1);
@@ -708,8 +697,6 @@ const definitions = [
708
697
  'hvacThermostat',
709
698
  'hvacUserInterfaceCfg',
710
699
  'msTemperatureMeasurement',
711
- 'haElectricalMeasurement',
712
- 'seMetering',
713
700
  'manuSpecificSinope',
714
701
  ];
715
702
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
@@ -731,18 +718,6 @@ const definitions = [
731
718
  catch {
732
719
  /* Not all support this */
733
720
  }
734
- await reporting.readMeteringMultiplierDivisor(endpoint);
735
- await reporting.currentSummDelivered(endpoint, { min: 10, max: 303, change: [1, 1] });
736
- await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
737
- try {
738
- await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
739
- await reporting.activePower(endpoint, { min: 10, max: 305, change: 1 }); // divider 1: 1W
740
- }
741
- catch {
742
- endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', { acPowerMultiplier: 1, acPowerDivisor: 1 });
743
- }
744
- await reporting.rmsCurrent(endpoint, { min: 10, max: 306, change: 100 }); // divider 1000: 0.1Arms
745
- await reporting.rmsVoltage(endpoint, { min: 10, max: 307, change: 5 }); // divider 10: 0.5Vrms
746
721
  },
747
722
  },
748
723
  {
@@ -750,14 +725,8 @@ const definitions = [
750
725
  model: 'TH1124ZB',
751
726
  vendor: 'Sinopé',
752
727
  description: 'Zigbee line volt thermostat',
753
- fromZigbee: [
754
- fzLocal.thermostat,
755
- fzLocal.sinope,
756
- legacy.fz.hvac_user_interface,
757
- fromZigbee_1.default.electrical_measurement,
758
- fromZigbee_1.default.metering,
759
- fromZigbee_1.default.ignore_temperature_report,
760
- ],
728
+ extend: [(0, modernExtend_1.electricityMeter)()],
729
+ fromZigbee: [fzLocal.thermostat, fzLocal.sinope, legacy.fz.hvac_user_interface, fromZigbee_1.default.ignore_temperature_report],
761
730
  toZigbee: [
762
731
  toZigbee_1.default.thermostat_local_temperature,
763
732
  toZigbee_1.default.thermostat_occupied_heating_setpoint,
@@ -774,7 +743,6 @@ const definitions = [
774
743
  tzLocal.outdoor_temperature_timeout,
775
744
  tzLocal.thermostat_occupancy,
776
745
  tzLocal.main_cycle_output,
777
- toZigbee_1.default.electrical_measurement_power,
778
746
  ],
779
747
  exposes: [
780
748
  e
@@ -816,10 +784,6 @@ const definitions = [
816
784
  e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('Control backlight dimming behavior'),
817
785
  e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
818
786
  e.enum('main_cycle_output', ea.ALL, ['15_sec', '15_min']).withDescription('The length of the control cycle: 15_sec=normal 15_min=fan'),
819
- e.power().withAccess(ea.STATE_GET),
820
- e.current(),
821
- e.voltage(),
822
- e.energy(),
823
787
  ],
824
788
  configure: async (device, coordinatorEndpoint) => {
825
789
  const endpoint = device.getEndpoint(1);
@@ -830,8 +794,6 @@ const definitions = [
830
794
  'hvacThermostat',
831
795
  'hvacUserInterfaceCfg',
832
796
  'msTemperatureMeasurement',
833
- 'haElectricalMeasurement',
834
- 'seMetering',
835
797
  'manuSpecificSinope',
836
798
  ];
837
799
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
@@ -853,18 +815,6 @@ const definitions = [
853
815
  catch {
854
816
  /* Not all support this */
855
817
  }
856
- await reporting.readMeteringMultiplierDivisor(endpoint);
857
- await reporting.currentSummDelivered(endpoint, { min: 10, max: 303, change: [1, 1] });
858
- await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
859
- try {
860
- await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
861
- await reporting.activePower(endpoint, { min: 10, max: 305, change: 1 }); // divider 1: 1W
862
- }
863
- catch {
864
- endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', { acPowerMultiplier: 1, acPowerDivisor: 1 });
865
- }
866
- await reporting.rmsCurrent(endpoint, { min: 10, max: 306, change: 100 }); // divider 1000: 0.1Arms
867
- await reporting.rmsVoltage(endpoint, { min: 10, max: 307, change: 5 }); // divider 10: 0.5Vrms
868
818
  },
869
819
  },
870
820
  {
@@ -872,14 +822,8 @@ const definitions = [
872
822
  model: 'TH1123ZB-G2',
873
823
  vendor: 'Sinopé',
874
824
  description: 'Zigbee line volt thermostat',
875
- fromZigbee: [
876
- fzLocal.thermostat,
877
- fzLocal.sinope,
878
- legacy.fz.hvac_user_interface,
879
- fromZigbee_1.default.electrical_measurement,
880
- fromZigbee_1.default.metering,
881
- fromZigbee_1.default.ignore_temperature_report,
882
- ],
825
+ extend: [(0, modernExtend_1.electricityMeter)()],
826
+ fromZigbee: [fzLocal.thermostat, fzLocal.sinope, legacy.fz.hvac_user_interface, fromZigbee_1.default.ignore_temperature_report],
883
827
  toZigbee: [
884
828
  toZigbee_1.default.thermostat_local_temperature,
885
829
  toZigbee_1.default.thermostat_occupied_heating_setpoint,
@@ -896,7 +840,6 @@ const definitions = [
896
840
  tzLocal.outdoor_temperature_timeout,
897
841
  tzLocal.thermostat_occupancy,
898
842
  tzLocal.main_cycle_output,
899
- toZigbee_1.default.electrical_measurement_power,
900
843
  ],
901
844
  exposes: [
902
845
  e
@@ -938,10 +881,6 @@ const definitions = [
938
881
  e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('Control backlight dimming behavior'),
939
882
  e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
940
883
  e.enum('main_cycle_output', ea.ALL, ['15_sec', '15_min']).withDescription('The length of the control cycle: 15_sec=normal 15_min=fan'),
941
- e.power().withAccess(ea.STATE_GET),
942
- e.current(),
943
- e.voltage(),
944
- e.energy(),
945
884
  ],
946
885
  configure: async (device, coordinatorEndpoint) => {
947
886
  const endpoint = device.getEndpoint(1);
@@ -952,8 +891,6 @@ const definitions = [
952
891
  'hvacThermostat',
953
892
  'hvacUserInterfaceCfg',
954
893
  'msTemperatureMeasurement',
955
- 'haElectricalMeasurement',
956
- 'seMetering',
957
894
  'manuSpecificSinope',
958
895
  ];
959
896
  await reporting.bind(endpoint, coordinatorEndpoint, binds); // This G2 version has limited memory space
@@ -976,12 +913,6 @@ const definitions = [
976
913
  reportableChange: 1,
977
914
  },
978
915
  ]);
979
- await reporting.readMeteringMultiplierDivisor(endpoint);
980
- await reporting.currentSummDelivered(endpoint, { min: 10, max: 303, change: [1, 1] });
981
- await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
982
- await reporting.activePower(endpoint, { min: 10, max: 305, change: 1 }); // divider 1: 1W
983
- await reporting.rmsCurrent(endpoint, { min: 10, max: 306, change: 100 }); // divider 1000: 0.1Arms
984
- await reporting.rmsVoltage(endpoint, { min: 10, max: 307, change: 5 }); // divider 10: 0.5Vrms
985
916
  // Disable default reporting (not used by Sinope)
986
917
  await reporting.thermostatRunningState(endpoint, { min: 1, max: 0xffff });
987
918
  try {
@@ -997,14 +928,8 @@ const definitions = [
997
928
  model: 'TH1124ZB-G2',
998
929
  vendor: 'Sinopé',
999
930
  description: 'Zigbee line volt thermostat',
1000
- fromZigbee: [
1001
- fzLocal.thermostat,
1002
- fzLocal.sinope,
1003
- legacy.fz.hvac_user_interface,
1004
- fromZigbee_1.default.electrical_measurement,
1005
- fromZigbee_1.default.metering,
1006
- fromZigbee_1.default.ignore_temperature_report,
1007
- ],
931
+ extend: [(0, modernExtend_1.electricityMeter)()],
932
+ fromZigbee: [fzLocal.thermostat, fzLocal.sinope, legacy.fz.hvac_user_interface, fromZigbee_1.default.ignore_temperature_report],
1008
933
  toZigbee: [
1009
934
  toZigbee_1.default.thermostat_local_temperature,
1010
935
  toZigbee_1.default.thermostat_occupied_heating_setpoint,
@@ -1021,7 +946,6 @@ const definitions = [
1021
946
  tzLocal.outdoor_temperature_timeout,
1022
947
  tzLocal.thermostat_occupancy,
1023
948
  tzLocal.main_cycle_output,
1024
- toZigbee_1.default.electrical_measurement_power,
1025
949
  ],
1026
950
  exposes: [
1027
951
  e
@@ -1063,10 +987,6 @@ const definitions = [
1063
987
  e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('Control backlight dimming behavior'),
1064
988
  e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
1065
989
  e.enum('main_cycle_output', ea.ALL, ['15_sec', '15_min']).withDescription('The length of the control cycle: 15_sec=normal 15_min=fan'),
1066
- e.power().withAccess(ea.STATE_GET),
1067
- e.current(),
1068
- e.voltage(),
1069
- e.energy(),
1070
990
  ],
1071
991
  configure: async (device, coordinatorEndpoint) => {
1072
992
  const endpoint = device.getEndpoint(1);
@@ -1077,8 +997,6 @@ const definitions = [
1077
997
  'hvacThermostat',
1078
998
  'hvacUserInterfaceCfg',
1079
999
  'msTemperatureMeasurement',
1080
- 'haElectricalMeasurement',
1081
- 'seMetering',
1082
1000
  'manuSpecificSinope',
1083
1001
  ];
1084
1002
  await reporting.bind(endpoint, coordinatorEndpoint, binds); // This G2 version has limited memory space
@@ -1101,12 +1019,6 @@ const definitions = [
1101
1019
  reportableChange: 1,
1102
1020
  },
1103
1021
  ]);
1104
- await reporting.readMeteringMultiplierDivisor(endpoint);
1105
- await reporting.currentSummDelivered(endpoint, { min: 10, max: 303, change: [1, 1] });
1106
- await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
1107
- await reporting.activePower(endpoint, { min: 10, max: 305, change: 1 }); // divider 1: 1W
1108
- await reporting.rmsCurrent(endpoint, { min: 10, max: 306, change: 100 }); // divider 1000: 0.1Arms
1109
- await reporting.rmsVoltage(endpoint, { min: 10, max: 307, change: 5 }); // divider 10: 0.5Vrms
1110
1022
  // Disable default reporting (not used by Sinope)
1111
1023
  await reporting.thermostatRunningState(endpoint, { min: 1, max: 0xffff });
1112
1024
  try {
@@ -1125,14 +1037,8 @@ const definitions = [
1125
1037
  whiteLabel: [
1126
1038
  { model: 'TH1320ZB-04', vendor: 'Sinopé', description: 'Zigbee smart floor heating thermostat', fingerprint: [{ modelID: 'TH1320ZB-04' }] },
1127
1039
  ],
1128
- fromZigbee: [
1129
- fzLocal.thermostat,
1130
- fzLocal.sinope,
1131
- legacy.fz.hvac_user_interface,
1132
- fromZigbee_1.default.electrical_measurement,
1133
- fromZigbee_1.default.metering,
1134
- fromZigbee_1.default.ignore_temperature_report,
1135
- ],
1040
+ extend: [(0, modernExtend_1.electricityMeter)()],
1041
+ fromZigbee: [fzLocal.thermostat, fzLocal.sinope, legacy.fz.hvac_user_interface, fromZigbee_1.default.ignore_temperature_report],
1136
1042
  toZigbee: [
1137
1043
  toZigbee_1.default.thermostat_local_temperature,
1138
1044
  toZigbee_1.default.thermostat_occupied_heating_setpoint,
@@ -1153,7 +1059,6 @@ const definitions = [
1153
1059
  tzLocal.floor_min_heat_setpoint,
1154
1060
  tzLocal.floor_max_heat_setpoint,
1155
1061
  tzLocal.temperature_sensor,
1156
- toZigbee_1.default.electrical_measurement_power,
1157
1062
  ],
1158
1063
  exposes: [
1159
1064
  e
@@ -1194,10 +1099,6 @@ const definitions = [
1194
1099
  e.enum('time_format', ea.ALL, ['24h', '12h']).withDescription('The time format featured on the thermostat display'),
1195
1100
  e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('Control backlight dimming behavior'),
1196
1101
  e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
1197
- e.power().withAccess(ea.STATE_GET),
1198
- e.current(),
1199
- e.voltage(),
1200
- e.energy(),
1201
1102
  ],
1202
1103
  configure: async (device, coordinatorEndpoint) => {
1203
1104
  const endpoint = device.getEndpoint(1);
@@ -1207,48 +1108,13 @@ const definitions = [
1207
1108
  'genGroups',
1208
1109
  'hvacThermostat',
1209
1110
  'hvacUserInterfaceCfg',
1210
- 'haElectricalMeasurement',
1211
1111
  'msTemperatureMeasurement',
1212
- 'seMetering',
1213
1112
  'manuSpecificSinope',
1214
1113
  ];
1215
1114
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
1216
1115
  await reporting.thermostatTemperature(endpoint);
1217
1116
  await reporting.thermostatPIHeatingDemand(endpoint);
1218
1117
  await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
1219
- try {
1220
- await reporting.readMeteringMultiplierDivisor(endpoint);
1221
- }
1222
- catch {
1223
- /* Do nothing*/
1224
- }
1225
- try {
1226
- await reporting.currentSummDelivered(endpoint, { min: 10, max: 303, change: [1, 1] });
1227
- }
1228
- catch {
1229
- /* Do nothing*/
1230
- }
1231
- try {
1232
- await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
1233
- await reporting.activePower(endpoint, { min: 10, max: 305, change: 1 }); // divider 1: 1W
1234
- }
1235
- catch {
1236
- endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', { acPowerMultiplier: 1, acPowerDivisor: 1 });
1237
- }
1238
- try {
1239
- await endpoint.read('haElectricalMeasurement', ['acCurrentMultiplier', 'acCurrentDivisor']);
1240
- await reporting.rmsCurrent(endpoint, { min: 10, max: 306, change: 100 }); // divider 1000: 0.1Arms
1241
- }
1242
- catch {
1243
- /* Do nothing*/
1244
- }
1245
- try {
1246
- await endpoint.read('haElectricalMeasurement', ['acVoltageMultiplier', 'acVoltageDivisor']);
1247
- await reporting.rmsVoltage(endpoint, { min: 10, max: 307, change: 5 }); // divider 10: 0.5Vrms
1248
- }
1249
- catch {
1250
- /* Do nothing*/
1251
- }
1252
1118
  try {
1253
1119
  await reporting.thermostatKeypadLockMode(endpoint);
1254
1120
  }
@@ -1523,9 +1389,9 @@ const definitions = [
1523
1389
  model: 'SW2500ZB',
1524
1390
  vendor: 'Sinopé',
1525
1391
  description: 'Zigbee smart light switch',
1526
- fromZigbee: [fromZigbee_1.default.on_off, fzLocal.sinope, fromZigbee_1.default.metering],
1392
+ extend: [(0, modernExtend_1.onOff)(), (0, modernExtend_1.electricityMeter)({ cluster: 'metering' })],
1393
+ fromZigbee: [fzLocal.sinope],
1527
1394
  toZigbee: [
1528
- toZigbee_1.default.on_off,
1529
1395
  tzLocal.timer_seconds,
1530
1396
  tzLocal.led_intensity_on,
1531
1397
  tzLocal.led_intensity_off,
@@ -1535,7 +1401,6 @@ const definitions = [
1535
1401
  tzLocal.connected_load,
1536
1402
  ],
1537
1403
  exposes: [
1538
- e.switch(),
1539
1404
  e.action(['up_single', 'up_double', 'up_hold', 'down_single', 'down_double', 'down_hold']),
1540
1405
  e
1541
1406
  .numeric('timer_seconds', ea.ALL)
@@ -1570,20 +1435,11 @@ const definitions = [
1570
1435
  .withDescription('Control status LED color when load OFF'),
1571
1436
  e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock']).withDescription('Enables or disables the device’s buttons'),
1572
1437
  e.numeric('connected_load', ea.ALL).withUnit('W').withValueMin(0).withValueMax(1800).withDescription('Load connected in watt'),
1573
- e.energy(),
1574
1438
  ],
1575
1439
  configure: async (device, coordinatorEndpoint) => {
1576
1440
  const endpoint = device.getEndpoint(1);
1577
- const binds = ['genOnOff', 'manuSpecificSinope', 'seMetering'];
1441
+ const binds = ['manuSpecificSinope'];
1578
1442
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
1579
- await reporting.onOff(endpoint);
1580
- try {
1581
- await reporting.readMeteringMultiplierDivisor(endpoint);
1582
- await reporting.currentSummDelivered(endpoint, { min: 10, max: 300, change: [0, 10] });
1583
- }
1584
- catch {
1585
- /* Do nothing*/
1586
- }
1587
1443
  const payload = [
1588
1444
  {
1589
1445
  attribute: 'actionReport',
@@ -1700,63 +1556,21 @@ const definitions = [
1700
1556
  model: 'SP2600ZB',
1701
1557
  vendor: 'Sinopé',
1702
1558
  description: 'Zigbee smart plug',
1703
- fromZigbee: [fromZigbee_1.default.on_off, fromZigbee_1.default.electrical_measurement, fromZigbee_1.default.metering],
1704
- toZigbee: [toZigbee_1.default.on_off, toZigbee_1.default.frequency],
1705
- exposes: [e.switch(), e.power(), e.current(), e.voltage(), e.energy()],
1706
- configure: async (device, coordinatorEndpoint) => {
1707
- const endpoint = device.getEndpoint(1);
1708
- const binds = ['genBasic', 'genIdentify', 'genOnOff', 'haElectricalMeasurement', 'seMetering'];
1709
- await reporting.bind(endpoint, coordinatorEndpoint, binds);
1710
- await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
1711
- await reporting.onOff(endpoint);
1712
- await reporting.activePower(endpoint, { min: 10, max: 305, change: 1 }); // divider 10 : 0.1W
1713
- await reporting.rmsCurrent(endpoint, { min: 10, max: 306, change: 10 }); // divider 100: 0.1Arms
1714
- await reporting.rmsVoltage(endpoint, { min: 10, max: 307, change: 10 }); // divider 100: 0.1Vrms
1715
- endpoint.saveClusterAttributeKeyValue('seMetering', { divisor: 1000, multiplier: 1 });
1716
- await reporting.currentSummDelivered(endpoint, { min: 10, max: 303, change: [0, 1] }); // divider 1
1717
- },
1559
+ extend: [(0, modernExtend_1.onOff)(), (0, modernExtend_1.electricityMeter)()],
1718
1560
  },
1719
1561
  {
1720
1562
  zigbeeModel: ['SP2610ZB'],
1721
1563
  model: 'SP2610ZB',
1722
1564
  vendor: 'Sinopé',
1723
1565
  description: 'Zigbee smart plug',
1724
- fromZigbee: [fromZigbee_1.default.on_off, fromZigbee_1.default.electrical_measurement, fromZigbee_1.default.metering],
1725
- toZigbee: [toZigbee_1.default.on_off, toZigbee_1.default.frequency],
1726
- exposes: [e.switch(), e.power(), e.current(), e.voltage(), e.energy()],
1727
- configure: async (device, coordinatorEndpoint) => {
1728
- const endpoint = device.getEndpoint(1);
1729
- const binds = ['genBasic', 'genIdentify', 'genOnOff', 'haElectricalMeasurement', 'seMetering'];
1730
- await reporting.bind(endpoint, coordinatorEndpoint, binds);
1731
- await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
1732
- await reporting.onOff(endpoint);
1733
- await reporting.activePower(endpoint, { min: 10, max: 305, change: 1 }); // divider 10 : 0.1W
1734
- await reporting.rmsCurrent(endpoint, { min: 10, max: 306, change: 10 }); // divider 100: 0.1Arms
1735
- await reporting.rmsVoltage(endpoint, { min: 10, max: 307, change: 10 }); // divider 100: 0.1Vrms
1736
- endpoint.saveClusterAttributeKeyValue('seMetering', { divisor: 1000, multiplier: 1 });
1737
- await reporting.currentSummDelivered(endpoint, { min: 10, max: 303, change: [0, 1] }); // divider 1
1738
- },
1566
+ extend: [(0, modernExtend_1.onOff)(), (0, modernExtend_1.electricityMeter)()],
1739
1567
  },
1740
1568
  {
1741
1569
  zigbeeModel: ['RM3250ZB'],
1742
1570
  model: 'RM3250ZB',
1743
1571
  vendor: 'Sinopé',
1744
1572
  description: '50A Smart electrical load controller',
1745
- fromZigbee: [fromZigbee_1.default.on_off, fromZigbee_1.default.electrical_measurement, fromZigbee_1.default.metering],
1746
- toZigbee: [toZigbee_1.default.on_off],
1747
- exposes: [e.switch(), e.power(), e.current(), e.voltage(), e.energy()],
1748
- configure: async (device, coordinatorEndpoint) => {
1749
- const endpoint = device.getEndpoint(1);
1750
- const binds = ['genOnOff', 'haElectricalMeasurement', 'seMetering'];
1751
- await reporting.bind(endpoint, coordinatorEndpoint, binds);
1752
- await reporting.onOff(endpoint);
1753
- await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
1754
- await reporting.activePower(endpoint);
1755
- await reporting.rmsCurrent(endpoint);
1756
- await reporting.rmsVoltage(endpoint);
1757
- await reporting.readMeteringMultiplierDivisor(endpoint);
1758
- await reporting.currentSummDelivered(endpoint);
1759
- },
1573
+ extend: [(0, modernExtend_1.onOff)(), (0, modernExtend_1.electricityMeter)()],
1760
1574
  },
1761
1575
  {
1762
1576
  zigbeeModel: ['WL4200'],