zigbee-herdsman-converters 25.14.0 → 25.16.0
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/CHANGELOG.md +42 -0
- package/dist/converters/fromZigbee.d.ts +308 -293
- package/dist/converters/fromZigbee.d.ts.map +1 -1
- package/dist/converters/fromZigbee.js +124 -97
- package/dist/converters/fromZigbee.js.map +1 -1
- package/dist/devices/adeo.js.map +1 -1
- package/dist/devices/amina.js.map +1 -1
- package/dist/devices/aurora_lighting.d.ts.map +1 -1
- package/dist/devices/aurora_lighting.js.map +1 -1
- package/dist/devices/awox.d.ts.map +1 -1
- package/dist/devices/awox.js +37 -28
- package/dist/devices/awox.js.map +1 -1
- package/dist/devices/bacchus.js +2 -2
- package/dist/devices/bacchus.js.map +1 -1
- package/dist/devices/bitron.js.map +1 -1
- package/dist/devices/bituo_technik.js.map +1 -1
- package/dist/devices/bosch.d.ts.map +1 -1
- package/dist/devices/bosch.js +12 -9
- package/dist/devices/bosch.js.map +1 -1
- package/dist/devices/candeo.d.ts.map +1 -1
- package/dist/devices/candeo.js +19 -8
- package/dist/devices/candeo.js.map +1 -1
- package/dist/devices/centralite.js.map +1 -1
- package/dist/devices/ctm.js +1 -1
- package/dist/devices/ctm.js.map +1 -1
- package/dist/devices/custom_devices_diy.js +2 -2
- package/dist/devices/custom_devices_diy.js.map +1 -1
- package/dist/devices/danfoss.d.ts.map +1 -1
- package/dist/devices/danfoss.js +3 -0
- package/dist/devices/danfoss.js.map +1 -1
- package/dist/devices/databyte.js.map +1 -1
- package/dist/devices/dawon_dns.js.map +1 -1
- package/dist/devices/develco.js +1 -1
- package/dist/devices/develco.js.map +1 -1
- package/dist/devices/dlink.js.map +1 -1
- package/dist/devices/easyiot.js.map +1 -1
- package/dist/devices/ewelink.js.map +1 -1
- package/dist/devices/gmmts.d.ts.map +1 -1
- package/dist/devices/gmmts.js +5 -5
- package/dist/devices/gmmts.js.map +1 -1
- package/dist/devices/heiman.d.ts.map +1 -1
- package/dist/devices/heiman.js +22 -23
- package/dist/devices/heiman.js.map +1 -1
- package/dist/devices/ikea.d.ts.map +1 -1
- package/dist/devices/ikea.js +3 -1
- package/dist/devices/ikea.js.map +1 -1
- package/dist/devices/immax.js.map +1 -1
- package/dist/devices/index.d.ts.map +1 -1
- package/dist/devices/index.js +2 -0
- package/dist/devices/index.js.map +1 -1
- package/dist/devices/inovelli.d.ts.map +1 -1
- package/dist/devices/inovelli.js +9 -5
- package/dist/devices/inovelli.js.map +1 -1
- package/dist/devices/jethome.js.map +1 -1
- package/dist/devices/kmpcil.d.ts.map +1 -1
- package/dist/devices/kmpcil.js.map +1 -1
- package/dist/devices/konke.js.map +1 -1
- package/dist/devices/led_trading.js.map +1 -1
- package/dist/devices/leviton.js.map +1 -1
- package/dist/devices/lidl.js.map +1 -1
- package/dist/devices/lifecontrol.js +4 -4
- package/dist/devices/lifecontrol.js.map +1 -1
- package/dist/devices/linptech.js.map +1 -1
- package/dist/devices/livolo.js.map +1 -1
- package/dist/devices/lixee.d.ts.map +1 -1
- package/dist/devices/lixee.js +5 -4
- package/dist/devices/lixee.js.map +1 -1
- package/dist/devices/lumi.d.ts.map +1 -1
- package/dist/devices/lumi.js +7 -0
- package/dist/devices/lumi.js.map +1 -1
- package/dist/devices/lytko.js.map +1 -1
- package/dist/devices/mill.d.ts +3 -0
- package/dist/devices/mill.d.ts.map +1 -0
- package/dist/devices/mill.js +52 -0
- package/dist/devices/mill.js.map +1 -0
- package/dist/devices/mindy.js.map +1 -1
- package/dist/devices/moes.js.map +1 -1
- package/dist/devices/multiterm.js.map +1 -1
- package/dist/devices/namron.js.map +1 -1
- package/dist/devices/niko.js.map +1 -1
- package/dist/devices/nous.d.ts.map +1 -1
- package/dist/devices/nous.js +4 -3
- package/dist/devices/nous.js.map +1 -1
- package/dist/devices/nue_3a.js.map +1 -1
- package/dist/devices/onesti.js.map +1 -1
- package/dist/devices/orvibo.js.map +1 -1
- package/dist/devices/owon.js.map +1 -1
- package/dist/devices/paulmann.js.map +1 -1
- package/dist/devices/perenio.d.ts.map +1 -1
- package/dist/devices/perenio.js +0 -1
- package/dist/devices/perenio.js.map +1 -1
- package/dist/devices/philips.d.ts.map +1 -1
- package/dist/devices/philips.js +7 -0
- package/dist/devices/philips.js.map +1 -1
- package/dist/devices/plugwise.js.map +1 -1
- package/dist/devices/pushok.js.map +1 -1
- package/dist/devices/qa.js.map +1 -1
- package/dist/devices/rgb_genie.js.map +1 -1
- package/dist/devices/sber.js.map +1 -1
- package/dist/devices/schneider_electric.d.ts.map +1 -1
- package/dist/devices/schneider_electric.js.map +1 -1
- package/dist/devices/sengled.js.map +1 -1
- package/dist/devices/shelly.d.ts.map +1 -1
- package/dist/devices/shelly.js +1 -3
- package/dist/devices/shelly.js.map +1 -1
- package/dist/devices/shinasystem.js.map +1 -1
- package/dist/devices/siglis.js.map +1 -1
- package/dist/devices/sinope.js +1 -1
- package/dist/devices/sinope.js.map +1 -1
- package/dist/devices/slacky_diy.d.ts.map +1 -1
- package/dist/devices/slacky_diy.js +13 -15
- package/dist/devices/slacky_diy.js.map +1 -1
- package/dist/devices/sonoff.js +2 -2
- package/dist/devices/sonoff.js.map +1 -1
- package/dist/devices/stello.js.map +1 -1
- package/dist/devices/stelpro.js.map +1 -1
- package/dist/devices/sunricher.d.ts +12 -0
- package/dist/devices/sunricher.d.ts.map +1 -1
- package/dist/devices/sunricher.js.map +1 -1
- package/dist/devices/third_reality.d.ts.map +1 -1
- package/dist/devices/third_reality.js.map +1 -1
- package/dist/devices/tuya.d.ts.map +1 -1
- package/dist/devices/tuya.js +50 -14
- package/dist/devices/tuya.js.map +1 -1
- package/dist/devices/ubisys.js.map +1 -1
- package/dist/devices/waxman.d.ts.map +1 -1
- package/dist/devices/waxman.js +17 -15
- package/dist/devices/waxman.js.map +1 -1
- package/dist/devices/wirenboard.js +1 -1
- package/dist/devices/wirenboard.js.map +1 -1
- package/dist/devices/woolley.js.map +1 -1
- package/dist/devices/xyzroe.js +2 -2
- package/dist/devices/xyzroe.js.map +1 -1
- package/dist/devices/yale.js.map +1 -1
- package/dist/devices/zigbeetlc.d.ts.map +1 -1
- package/dist/devices/zigbeetlc.js +8 -0
- package/dist/devices/zigbeetlc.js.map +1 -1
- package/dist/lib/adurosmart.js.map +1 -1
- package/dist/lib/develco.js +2 -2
- package/dist/lib/develco.js.map +1 -1
- package/dist/lib/ewelink.d.ts +3 -3
- package/dist/lib/ewelink.js.map +1 -1
- package/dist/lib/ikea.d.ts.map +1 -1
- package/dist/lib/ikea.js +4 -4
- package/dist/lib/ikea.js.map +1 -1
- package/dist/lib/ledvance.d.ts +3 -3
- package/dist/lib/ledvance.d.ts.map +1 -1
- package/dist/lib/ledvance.js.map +1 -1
- package/dist/lib/legacy.d.ts +182 -182
- package/dist/lib/legacy.d.ts.map +1 -1
- package/dist/lib/legacy.js +6 -6
- package/dist/lib/legacy.js.map +1 -1
- package/dist/lib/legrand.d.ts +15 -15
- package/dist/lib/legrand.js.map +1 -1
- package/dist/lib/lumi.d.ts +129 -129
- package/dist/lib/lumi.d.ts.map +1 -1
- package/dist/lib/lumi.js +18 -14
- package/dist/lib/lumi.js.map +1 -1
- package/dist/lib/modernExtend.d.ts +10 -11
- package/dist/lib/modernExtend.d.ts.map +1 -1
- package/dist/lib/modernExtend.js +14 -8
- package/dist/lib/modernExtend.js.map +1 -1
- package/dist/lib/namron.d.ts +6 -6
- package/dist/lib/namron.js.map +1 -1
- package/dist/lib/philips.d.ts +6 -6
- package/dist/lib/philips.js.map +1 -1
- package/dist/lib/sunricher.d.ts.map +1 -1
- package/dist/lib/sunricher.js +1 -0
- package/dist/lib/sunricher.js.map +1 -1
- package/dist/lib/tuya.d.ts +73 -53
- package/dist/lib/tuya.d.ts.map +1 -1
- package/dist/lib/tuya.js +6 -3
- package/dist/lib/tuya.js.map +1 -1
- package/dist/lib/types.d.ts +33 -10
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/ubisys.js.map +1 -1
- package/dist/lib/utils.d.ts +4 -4
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +4 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/zosung.d.ts +18 -18
- package/dist/lib/zosung.js +1 -1
- package/dist/lib/zosung.js.map +1 -1
- package/dist/models-index.json +1 -1
- package/package.json +1 -1
|
@@ -32,13 +32,17 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.ias_sos_alarm_2 = exports.ias_carbon_monoxide_alarm_1_gas_alarm_2 = exports.ias_carbon_monoxide_alarm_1 = exports.ias_contact_alarm_1_report = exports.ias_contact_alarm_1 = exports.ias_smoke_alarm_1 = exports.ias_gas_alarm_2 = exports.ias_gas_alarm_1 = exports.ias_vibration_alarm_1_with_timeout = exports.ias_vibration_alarm_1 = exports.ias_water_leak_alarm_1_report = exports.ias_water_leak_alarm_1 = exports.ias_siren = exports.ias_no_alarm = exports.power_on_behavior = exports.on_off_skip_duplicate_transaction = exports.on_off_force_multiendpoint = exports.on_off = exports.gas_metering = exports.electrical_measurement = exports.metering = exports.meter_identification = exports.color_colortemp = exports.level_config = exports.brightness = exports.occupancy_timeout = exports.occupancy_with_timeout = exports.occupancy = exports.co2 = exports.pressure = exports.soil_moisture = exports.flow = exports.pm25 = exports.humidity = exports.device_temperature = exports.temperature = exports.battery = exports.linkquality_from_basic = exports.lock_user_status_response = exports.lock_pin_code_response = exports.lock_set_pin_code_response = exports.lock = exports.lock_programming_event_read_pincode = exports.lock_programming_event = exports.lock_operation_event = exports.hvac_user_interface = exports.thermostat_weekly_schedule = exports.thermostat = exports.fan_speed = exports.fan = void 0;
|
|
37
40
|
exports.ias_smoke_alarm_1_develco = exports.elko_thermostat = exports.namron_hvac_user_interface = exports.namron_thermostat = exports.power_source = exports.ias_wd = exports.ias_enroll = exports.checkin_presence = exports.lighting_ballast_configuration = exports.curtain_position_analog_output = exports.cover_state_via_onoff = exports.cover_position_via_brightness = exports.cover_position_tilt = exports.identify = exports.command_off_state = exports.command_on_state = exports.command_emergency = exports.command_move_to_hue = exports.command_move_to_saturation = exports.command_move_hue = exports.command_move_to_color = exports.command_move_to_color_temp = exports.command_color_loop_set = exports.command_step_saturation = exports.command_step_hue = exports.command_move_to_hue_and_saturation = exports.command_enhanced_move_to_hue_and_saturation = exports.command_step_color_temperature = exports.command_move_color_temperature = exports.command_stop = exports.command_step = exports.command_move = exports.command_move_to_level = exports.command_toggle = exports.command_off_with_effect = exports.command_off = exports.command_on = exports.command_cover_close = exports.command_cover_open = exports.command_cover_stop = exports.command_arm = exports.command_panic = exports.command_recall = exports.command_store = exports.ias_occupancy_alarm_1_with_timeout = exports.ias_occupancy_only_alarm_2 = exports.ias_alarm_only_alarm_1 = exports.ias_occupancy_alarm_2 = exports.ias_occupancy_alarm_1_report = exports.ias_occupancy_alarm_1 = void 0;
|
|
38
|
-
exports.
|
|
39
|
-
exports.diyruz_zintercom_config = exports.diyruz_airsense_config_hum = exports.diyruz_airsense_config_pres = exports.diyruz_airsense_config_temp = exports.diyruz_airsense_config_co2 = exports.diyruz_geiger_config = exports.diyruz_geiger = exports.diyruz_freepad_config = exports.javis_lock_report = exports.heiman_scenes = exports.STS_PRS_251_presence = exports.PGC410EU_presence = exports.ZMCSW032D_cover_position = exports.SAGE206612_state = exports.almond_click = exports.color_stop_raw = exports.adeo_button_65024 = exports.scenes_recall_scene_65024 = exports.heiman_air_quality = exports.heiman_hcho = exports.U02I007C01_water_leak = exports.U02I007C01_contact = exports.keen_home_smart_vent_pressure = exports.qlwz_letv8key_switch = exports.konke_action = exports.ptvo_multistate_action = exports.command_status_change_notification_action = exports.W2_module_carbon_monoxide = exports.legrand_greenpower = exports.legrand_power_alarm = exports.legrand_pilot_wire_mode = exports.legrand_master_switch_center = exports.legrand_scenes = exports.bticino_4027C_binary_input_moving = exports.legrand_binary_input_on_off = exports.legrand_binary_input_moving = exports.hue_smart_button_event = exports.byun_gas_true = exports.byun_gas_false = exports.byun_smoke_true = exports.byun_smoke_false = exports.smartthings_acceleration = exports._3310_humidity = exports.kmpcil_res005_on_off = exports.kmpcil_res005_occupancy = exports.diyruz_freepad_clicks = exports.
|
|
41
|
+
exports.diyruz_rspm = exports.diyruz_contact = exports.ewelink_action = exports.restorable_brightness = exports.tint404011_move_to_color_temp = exports.tint_scene = exports.orvibo_raw_2 = exports.orvibo_raw_1 = exports.danfoss_icon_hvac_user_interface = exports.danfoss_icon_regulator = exports.danfoss_icon_battery = exports.danfoss_icon_floor_sensor = exports.danfoss_thermostat_setpoint_scheduled = exports.danfoss_hvac_ui = exports.danfoss_thermostat = exports.meazon_meter = exports.heiman_ir_remote = exports.plaid_battery = exports.keypad20_battery = exports.keypad20states = exports.ptvo_switch_analog_input = exports.ptvo_switch_uart = exports.livolo_switch_state_raw = exports.easycodetouch_action = exports.easycode_action = exports.livolo_pir_state = exports.livolo_illuminance_state = exports.livolo_hygrometer_state = exports.livolo_cover_state = exports.livolo_dimmer_state = exports.livolo_curtain_switch_state = exports.livolo_new_switch_state_4gang = exports.livolo_new_switch_state_2gang = exports.livolo_new_switch_state = exports.livolo_socket_state = exports.livolo_switch_state = exports.tuya_switch_scene = exports.WSZ01_on_off_action = exports.tuya_cover_options = exports.tuya_cover_options_2 = exports.ts0216_siren = exports.terncy_temperature = exports.terncy_contact = exports.ZigUP = exports.DTB190502A1 = exports.terncy_knob = exports.tuya_doorbell_button = exports.wiser_device_info = exports.tuya_led_controller = exports.ts0201_temperature_humidity_alarm = void 0;
|
|
42
|
+
exports.diyruz_zintercom_config = exports.diyruz_airsense_config_hum = exports.diyruz_airsense_config_pres = exports.diyruz_airsense_config_temp = exports.diyruz_airsense_config_co2 = exports.diyruz_geiger_config = exports.diyruz_geiger = exports.diyruz_freepad_config = exports.javis_lock_report = exports.heiman_scenes = exports.STS_PRS_251_presence = exports.PGC410EU_presence = exports.ZMCSW032D_cover_position = exports.SAGE206612_state = exports.almond_click = exports.color_stop_raw = exports.adeo_button_65024 = exports.scenes_recall_scene_65024 = exports.heiman_air_quality = exports.heiman_hcho = exports.U02I007C01_water_leak = exports.U02I007C01_contact = exports.keen_home_smart_vent_pressure = exports.qlwz_letv8key_switch = exports.konke_action = exports.ptvo_multistate_action = exports.command_status_change_notification_action = exports.W2_module_carbon_monoxide = exports.legrand_greenpower = exports.legrand_power_alarm = exports.legrand_pilot_wire_mode = exports.legrand_master_switch_center = exports.legrand_scenes = exports.bticino_4027C_binary_input_moving = exports.legrand_binary_input_on_off = exports.legrand_binary_input_moving = exports.hue_smart_button_event = exports.byun_gas_true = exports.byun_gas_false = exports.byun_smoke_true = exports.byun_smoke_false = exports.smartthings_acceleration = exports._3310_humidity = exports.kmpcil_res005_on_off = exports.kmpcil_res005_occupancy = exports.diyruz_freepad_clicks = exports.enocean_ptm216z = exports.enocean_ptm215ze = exports.enocean_ptm215z = exports.K4003C_binary_input = void 0;
|
|
40
43
|
exports.ignore_analog_report = exports.ignore_pressure_report = exports.ignore_humidity_report = exports.ignore_temperature_report = exports.ignore_occupancy_report = exports.ignore_illuminance_report = exports.ignore_basic_report = exports.ignore_onoff_report = exports.awox_refresh = exports.awox_refreshColored = exports.awox_colors = exports.SNZB02_humidity = exports.SNZB02_temperature = exports.hw_version = exports.led_on_motion = exports.tuya_multi_action = exports.command_stop_move_raw = exports.sunricher_switch2801K4 = exports.sunricher_switch2801K2 = exports.tuya_operation_mode = exports.sihas_action = exports.sihas_people_cnt = exports.heiman_doorbell_button = exports.rc_110_level_to_scene = exports.wiser_smart_setpoint_command_client = exports.wiser_smart_thermostat_client = exports.schneider_temperature = exports.schneider_ui_action = exports.schneider_pilot_mode = exports.idlock_fw = exports.idlock = exports.ZB003X_occupancy = exports.ZB003X_attr = exports.itcmdr_clicks = exports.ias_keypad = exports.tuya_relay_din_led_indicator = exports.hue_twilight = exports.hue_tap = exports.hue_dimmer_switch = exports.hue_wall_switch = exports.CCTSwitch_D0001_lighting = exports.CCTSwitch_D0001_levelctrl = exports.hue_wall_switch_device_mode = exports.hue_motion_led_indication = exports.hue_motion_sensitivity = exports.DNCKAT_S00X_buttons = exports.KAMI_occupancy = exports.KAMI_contact = exports.CC2530ROUTER_meta = exports.CC2530ROUTER_led = void 0;
|
|
41
44
|
exports.TS110E_switch_type = exports.TS110E_light_type = exports.TS110E = exports.wiser_smart_thermostat = exports.wiser_lighting_ballast_configuration = exports.schneider_lighting_ballast_configuration = exports.ZM35HQ_attr = exports.terncy_raw = exports.eurotronic_thermostat = exports.viessmann_thermostat = exports.stelpro_thermostat = exports.SP600_power = exports.ias_ace_occupancy_with_timeout = exports.command_on_presence = exports.EKO09738_metering = exports.metering_datek = exports.command_arm_with_transaction = exports.ignore_electrical_measurement = exports.ignore_metering = exports.ignore_tuya_raw = exports.ignore_tuya_set_time = exports.ignore_time_read = exports.ignore_zclversion_read = exports.ignore_haDiagnostic = exports.ignore_genOta = exports.ignore_genLevelCtrl_report = exports.ignore_poll_ctrl = exports.ignore_command_stop = exports.ignore_command_step = exports.ignore_command_off_with_effect = exports.ignore_command_off = exports.ignore_command_on = exports.ignore_genIdentify = exports.ignore_iasace_commandgetpanelstatus = exports.ignore_iaszone_report = exports.ignore_iaszone_statuschange = exports.ignore_iaszone_attreport = exports.ignore_thermostat_report = exports.ignore_closuresWindowCovering_report = exports.ignore_light_color_colortemp_report = exports.ignore_light_brightness_report = exports.ignore_power_report = exports.ignore_multistate_report = void 0;
|
|
45
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
42
46
|
const libColor = __importStar(require("../lib/color"));
|
|
43
47
|
const constants = __importStar(require("../lib/constants"));
|
|
44
48
|
const exposes = __importStar(require("../lib/exposes"));
|
|
@@ -402,9 +406,6 @@ exports.lock_user_status_response = {
|
|
|
402
406
|
const userId = data.userid.toString();
|
|
403
407
|
const result = { users: {} };
|
|
404
408
|
result.users[userId] = { status: status };
|
|
405
|
-
if (options?.expose_pin && data.pincodevalue) {
|
|
406
|
-
result.users[userId].pin_code = data.pincodevalue;
|
|
407
|
-
}
|
|
408
409
|
return result;
|
|
409
410
|
},
|
|
410
411
|
};
|
|
@@ -462,7 +463,7 @@ exports.temperature = {
|
|
|
462
463
|
type: ["attributeReport", "readResponse"],
|
|
463
464
|
convert: (model, msg, publish, options, meta) => {
|
|
464
465
|
if (msg.data.measuredValue !== undefined) {
|
|
465
|
-
const temperature =
|
|
466
|
+
const temperature = msg.data.measuredValue / 100.0;
|
|
466
467
|
const property = (0, utils_1.postfixWithEndpointName)("temperature", msg, model, meta);
|
|
467
468
|
return { [property]: temperature };
|
|
468
469
|
}
|
|
@@ -473,7 +474,7 @@ exports.device_temperature = {
|
|
|
473
474
|
type: ["attributeReport", "readResponse"],
|
|
474
475
|
convert: (model, msg, publish, options, meta) => {
|
|
475
476
|
if (msg.data.currentTemperature !== undefined) {
|
|
476
|
-
const value =
|
|
477
|
+
const value = msg.data.currentTemperature;
|
|
477
478
|
return { device_temperature: value };
|
|
478
479
|
}
|
|
479
480
|
},
|
|
@@ -482,7 +483,7 @@ exports.humidity = {
|
|
|
482
483
|
cluster: "msRelativeHumidity",
|
|
483
484
|
type: ["attributeReport", "readResponse"],
|
|
484
485
|
convert: (model, msg, publish, options, meta) => {
|
|
485
|
-
const humidity =
|
|
486
|
+
const humidity = msg.data.measuredValue / 100.0;
|
|
486
487
|
const property = (0, utils_1.postfixWithEndpointName)("humidity", msg, model, meta);
|
|
487
488
|
// https://github.com/Koenkk/zigbee2mqtt/issues/798
|
|
488
489
|
// Sometimes the sensor publishes non-realistic vales, it should only publish message
|
|
@@ -505,7 +506,7 @@ exports.flow = {
|
|
|
505
506
|
cluster: "msFlowMeasurement",
|
|
506
507
|
type: ["attributeReport", "readResponse"],
|
|
507
508
|
convert: (model, msg, publish, options, meta) => {
|
|
508
|
-
const flow =
|
|
509
|
+
const flow = msg.data.measuredValue / 10.0;
|
|
509
510
|
const property = (0, utils_1.postfixWithEndpointName)("flow", msg, model, meta);
|
|
510
511
|
if (msg.data.measuredValue !== undefined) {
|
|
511
512
|
return { [property]: flow };
|
|
@@ -516,7 +517,7 @@ exports.soil_moisture = {
|
|
|
516
517
|
cluster: "msSoilMoisture",
|
|
517
518
|
type: ["attributeReport", "readResponse"],
|
|
518
519
|
convert: (model, msg, publish, options, meta) => {
|
|
519
|
-
const soilMoisture =
|
|
520
|
+
const soilMoisture = msg.data.measuredValue / 100.0;
|
|
520
521
|
return { soil_moisture: soilMoisture };
|
|
521
522
|
},
|
|
522
523
|
};
|
|
@@ -530,7 +531,7 @@ exports.pressure = {
|
|
|
530
531
|
pressure = msg.data.scaledValue / 10 ** scale / 100.0; // convert to hPa
|
|
531
532
|
}
|
|
532
533
|
else {
|
|
533
|
-
pressure =
|
|
534
|
+
pressure = msg.data.measuredValue;
|
|
534
535
|
}
|
|
535
536
|
return { pressure };
|
|
536
537
|
},
|
|
@@ -944,7 +945,7 @@ exports.ias_no_alarm = {
|
|
|
944
945
|
cluster: "ssIasZone",
|
|
945
946
|
type: ["attributeReport", "commandStatusChangeNotification"],
|
|
946
947
|
convert: (model, msg, publish, options, meta) => {
|
|
947
|
-
const zoneStatus = msg.data.
|
|
948
|
+
const zoneStatus = "zonestatus" in msg.data ? msg.data.zonestatus : msg.data.zoneStatus;
|
|
948
949
|
if (zoneStatus !== undefined) {
|
|
949
950
|
return {
|
|
950
951
|
tamper: (zoneStatus & (1 << 2)) > 0,
|
|
@@ -1060,7 +1061,7 @@ exports.ias_smoke_alarm_1 = {
|
|
|
1060
1061
|
cluster: "ssIasZone",
|
|
1061
1062
|
type: ["commandStatusChangeNotification", "attributeReport", "readResponse"],
|
|
1062
1063
|
convert: (model, msg, publish, options, meta) => {
|
|
1063
|
-
const zoneStatus = msg.
|
|
1064
|
+
const zoneStatus = "zonestatus" in msg.data ? msg.data.zonestatus : msg.data.zoneStatus;
|
|
1064
1065
|
return {
|
|
1065
1066
|
smoke: (zoneStatus & 1) > 0,
|
|
1066
1067
|
tamper: (zoneStatus & (1 << 2)) > 0,
|
|
@@ -1119,16 +1120,16 @@ exports.ias_carbon_monoxide_alarm_1_gas_alarm_2 = {
|
|
|
1119
1120
|
cluster: "ssIasZone",
|
|
1120
1121
|
type: "commandStatusChangeNotification",
|
|
1121
1122
|
convert: (model, msg, publish, options, meta) => {
|
|
1122
|
-
const {
|
|
1123
|
+
const { zonestatus } = msg.data;
|
|
1123
1124
|
return {
|
|
1124
|
-
carbon_monoxide: (
|
|
1125
|
-
gas: (
|
|
1126
|
-
tamper: (
|
|
1127
|
-
battery_low: (
|
|
1128
|
-
trouble: (
|
|
1129
|
-
ac_connected: !((
|
|
1130
|
-
test: (
|
|
1131
|
-
battery_defect: (
|
|
1125
|
+
carbon_monoxide: (zonestatus & 1) > 0,
|
|
1126
|
+
gas: (zonestatus & (1 << 1)) > 0,
|
|
1127
|
+
tamper: (zonestatus & (1 << 2)) > 0,
|
|
1128
|
+
battery_low: (zonestatus & (1 << 3)) > 0,
|
|
1129
|
+
trouble: (zonestatus & (1 << 6)) > 0,
|
|
1130
|
+
ac_connected: !((zonestatus & (1 << 7)) > 0),
|
|
1131
|
+
test: (zonestatus & (1 << 8)) > 0,
|
|
1132
|
+
battery_defect: (zonestatus & (1 << 9)) > 0,
|
|
1132
1133
|
};
|
|
1133
1134
|
},
|
|
1134
1135
|
};
|
|
@@ -1158,7 +1159,7 @@ exports.ias_occupancy_alarm_1 = {
|
|
|
1158
1159
|
};
|
|
1159
1160
|
exports.ias_occupancy_alarm_1_report = {
|
|
1160
1161
|
cluster: "ssIasZone",
|
|
1161
|
-
type: "attributeReport",
|
|
1162
|
+
type: ["attributeReport", "readResponse"],
|
|
1162
1163
|
convert: (model, msg, publish, options, meta) => {
|
|
1163
1164
|
const zoneStatus = msg.data.zoneStatus;
|
|
1164
1165
|
if (zoneStatus !== undefined) {
|
|
@@ -2145,16 +2146,17 @@ exports.wiser_device_info = {
|
|
|
2145
2146
|
// TODO What is ALG
|
|
2146
2147
|
const alg = data.slice(1);
|
|
2147
2148
|
result.ALG = alg.join(",");
|
|
2148
|
-
result.occupied_heating_setpoint = alg[2] / 10;
|
|
2149
|
-
result.local_temperature = alg[3] / 10;
|
|
2149
|
+
result.occupied_heating_setpoint = Number.parseInt(alg[2], 10) / 10;
|
|
2150
|
+
result.local_temperature = Number.parseInt(alg[3], 10) / 10;
|
|
2150
2151
|
result.pi_heating_demand = Number.parseInt(alg[9], 10);
|
|
2151
2152
|
}
|
|
2152
2153
|
else if (data[0] === "ADC") {
|
|
2153
2154
|
// TODO What is ADC
|
|
2154
2155
|
const adc = data.slice(1);
|
|
2155
2156
|
result.ADC = adc.join(",");
|
|
2156
|
-
|
|
2157
|
-
result.
|
|
2157
|
+
// TODO: should parseInt?
|
|
2158
|
+
result.occupied_heating_setpoint = Number.parseInt(adc[5], 10) / 100;
|
|
2159
|
+
result.local_temperature = Number.parseInt(adc[3], 10) / 10;
|
|
2158
2160
|
}
|
|
2159
2161
|
else if (data[0] === "UI") {
|
|
2160
2162
|
if (data[1] === "BoostUp") {
|
|
@@ -2231,7 +2233,7 @@ exports.ZigUP = {
|
|
|
2231
2233
|
let ds18b20Value = null;
|
|
2232
2234
|
if (msg.data["41368"]) {
|
|
2233
2235
|
ds18b20Id = msg.data["41368"].split(":")[0];
|
|
2234
|
-
ds18b20Value = (0, utils_1.precisionRound)(msg.data["41368"].split(":")[1], 2);
|
|
2236
|
+
ds18b20Value = (0, utils_1.precisionRound)(Number.parseFloat(msg.data["41368"].split(":")[1]), 2);
|
|
2235
2237
|
}
|
|
2236
2238
|
return {
|
|
2237
2239
|
state: msg.data.onOff === 1 ? "ON" : "OFF",
|
|
@@ -2257,7 +2259,7 @@ exports.terncy_temperature = {
|
|
|
2257
2259
|
cluster: "msTemperatureMeasurement",
|
|
2258
2260
|
type: ["attributeReport", "readResponse"],
|
|
2259
2261
|
convert: (model, msg, publish, options, meta) => {
|
|
2260
|
-
const temperature =
|
|
2262
|
+
const temperature = msg.data.measuredValue / 10.0;
|
|
2261
2263
|
return { temperature: temperature };
|
|
2262
2264
|
},
|
|
2263
2265
|
};
|
|
@@ -2283,7 +2285,7 @@ exports.tuya_cover_options_2 = {
|
|
|
2283
2285
|
convert: (model, msg, publish, options, meta) => {
|
|
2284
2286
|
const result = {};
|
|
2285
2287
|
if (msg.data.moesCalibrationTime !== undefined) {
|
|
2286
|
-
const value =
|
|
2288
|
+
const value = msg.data.moesCalibrationTime / 100;
|
|
2287
2289
|
result[(0, utils_1.postfixWithEndpointName)("calibration_time", msg, model, meta)] = value;
|
|
2288
2290
|
}
|
|
2289
2291
|
if (msg.data.tuyaMotorReversal !== undefined) {
|
|
@@ -2315,7 +2317,7 @@ exports.tuya_cover_options = {
|
|
|
2315
2317
|
result[(0, utils_1.postfixWithEndpointName)("motor_reversal", msg, model, meta)] = reversalLookup[value];
|
|
2316
2318
|
}
|
|
2317
2319
|
if (msg.data.moesCalibrationTime !== undefined) {
|
|
2318
|
-
const value =
|
|
2320
|
+
const value = msg.data.moesCalibrationTime / 10.0;
|
|
2319
2321
|
if (["_TZ3000_cet6ch1r", "_TZ3000_5iixzdo7"].includes(meta.device.manufacturerName)) {
|
|
2320
2322
|
const endpoint = msg.endpoint.ID;
|
|
2321
2323
|
const calibrationLookup = { 1: "to_open", 2: "to_close" };
|
|
@@ -2704,12 +2706,10 @@ exports.ptvo_switch_uart = {
|
|
|
2704
2706
|
cluster: "genMultistateValue",
|
|
2705
2707
|
type: ["attributeReport", "readResponse"],
|
|
2706
2708
|
convert: (model, msg, publish, options, meta) => {
|
|
2707
|
-
let data = msg.data.stateText;
|
|
2708
|
-
if (
|
|
2709
|
+
let data = msg.data.stateText; // ZclArray is only for write
|
|
2710
|
+
if (Array.isArray(data)) {
|
|
2709
2711
|
let bHex = false;
|
|
2710
|
-
// biome-ignore lint/suspicious/noImplicitAnyLet: ignored using `--suppress`
|
|
2711
2712
|
let code;
|
|
2712
|
-
// biome-ignore lint/suspicious/noImplicitAnyLet: ignored using `--suppress`
|
|
2713
2713
|
let index;
|
|
2714
2714
|
for (index = 0; index < data.length; index += 1) {
|
|
2715
2715
|
code = data[index];
|
|
@@ -2719,7 +2719,7 @@ exports.ptvo_switch_uart = {
|
|
|
2719
2719
|
}
|
|
2720
2720
|
}
|
|
2721
2721
|
if (!bHex) {
|
|
2722
|
-
data = data.toString(
|
|
2722
|
+
data = data.toString();
|
|
2723
2723
|
}
|
|
2724
2724
|
else {
|
|
2725
2725
|
data = [...data];
|
|
@@ -2838,8 +2838,10 @@ exports.heiman_ir_remote = {
|
|
|
2838
2838
|
cluster: "heimanSpecificInfraRedRemote",
|
|
2839
2839
|
type: ["commandStudyKeyRsp", "commandCreateIdRsp", "commandGetIdAndKeyCodeListRsp"],
|
|
2840
2840
|
convert: (model, msg, publish, options, meta) => {
|
|
2841
|
+
// TODO: split converter for each cmd?
|
|
2841
2842
|
switch (msg.type) {
|
|
2842
2843
|
case "commandStudyKeyRsp":
|
|
2844
|
+
(0, node_assert_1.default)("keyCode" in msg.data);
|
|
2843
2845
|
return {
|
|
2844
2846
|
action: "learn",
|
|
2845
2847
|
action_result: msg.data.result === 1 ? "success" : "error",
|
|
@@ -2847,6 +2849,7 @@ exports.heiman_ir_remote = {
|
|
|
2847
2849
|
action_id: msg.data.result === 1 ? msg.data.id : undefined,
|
|
2848
2850
|
};
|
|
2849
2851
|
case "commandCreateIdRsp":
|
|
2852
|
+
(0, node_assert_1.default)("modelType" in msg.data);
|
|
2850
2853
|
return {
|
|
2851
2854
|
action: "create",
|
|
2852
2855
|
action_result: msg.data.id === 0xff ? "error" : "success",
|
|
@@ -2854,6 +2857,7 @@ exports.heiman_ir_remote = {
|
|
|
2854
2857
|
action_id: msg.data.id !== 0xff ? msg.data.id : undefined,
|
|
2855
2858
|
};
|
|
2856
2859
|
case "commandGetIdAndKeyCodeListRsp": {
|
|
2860
|
+
(0, node_assert_1.default)("packetNumber" in msg.data);
|
|
2857
2861
|
// See cluster.js with data format description
|
|
2858
2862
|
if (msg.data.packetNumber === 1) {
|
|
2859
2863
|
// start to collect and merge list
|
|
@@ -2984,9 +2988,6 @@ exports.danfoss_thermostat = {
|
|
|
2984
2988
|
if (msg.data.danfossRadiatorCovered !== undefined) {
|
|
2985
2989
|
result[(0, utils_1.postfixWithEndpointName)("radiator_covered", msg, model, meta)] = msg.data.danfossRadiatorCovered === 1;
|
|
2986
2990
|
}
|
|
2987
|
-
if (msg.data.danfossViewingDirection !== undefined) {
|
|
2988
|
-
result[(0, utils_1.postfixWithEndpointName)("viewing_direction", msg, model, meta)] = msg.data.danfossViewingDirection === 1;
|
|
2989
|
-
}
|
|
2990
2991
|
if (msg.data.danfossAlgorithmScaleFactor !== undefined) {
|
|
2991
2992
|
result[(0, utils_1.postfixWithEndpointName)("algorithm_scale_factor", msg, model, meta)] = msg.data.danfossAlgorithmScaleFactor;
|
|
2992
2993
|
}
|
|
@@ -3049,6 +3050,17 @@ exports.danfoss_thermostat = {
|
|
|
3049
3050
|
return result;
|
|
3050
3051
|
},
|
|
3051
3052
|
};
|
|
3053
|
+
exports.danfoss_hvac_ui = {
|
|
3054
|
+
cluster: "hvacUserInterfaceCfg",
|
|
3055
|
+
type: ["attributeReport", "readResponse"],
|
|
3056
|
+
convert: (model, msg, publish, options, meta) => {
|
|
3057
|
+
const result = {};
|
|
3058
|
+
if (msg.data.danfossViewingDirection !== undefined) {
|
|
3059
|
+
result[(0, utils_1.postfixWithEndpointName)("viewing_direction", msg, model, meta)] = msg.data.danfossViewingDirection === 1;
|
|
3060
|
+
}
|
|
3061
|
+
return result;
|
|
3062
|
+
},
|
|
3063
|
+
};
|
|
3052
3064
|
exports.danfoss_thermostat_setpoint_scheduled = {
|
|
3053
3065
|
cluster: "hvacThermostat",
|
|
3054
3066
|
type: ["attributeReport", "readResponse"],
|
|
@@ -3132,11 +3144,11 @@ exports.danfoss_icon_regulator = {
|
|
|
3132
3144
|
? constants.danfossSystemStatusCode[msg.data.danfossSystemStatusCode]
|
|
3133
3145
|
: msg.data.danfossSystemStatusCode;
|
|
3134
3146
|
}
|
|
3135
|
-
if (msg.data.
|
|
3147
|
+
if (msg.data.danfossHeatSupplyRequest !== undefined) {
|
|
3136
3148
|
result[(0, utils_1.postfixWithEndpointName)("heat_supply_request", msg, model, meta)] =
|
|
3137
|
-
constants.danfossHeatsupplyRequest[msg.data.
|
|
3138
|
-
? constants.danfossHeatsupplyRequest[msg.data.
|
|
3139
|
-
: msg.data.
|
|
3149
|
+
constants.danfossHeatsupplyRequest[msg.data.danfossHeatSupplyRequest] !== undefined
|
|
3150
|
+
? constants.danfossHeatsupplyRequest[msg.data.danfossHeatSupplyRequest]
|
|
3151
|
+
: msg.data.danfossHeatSupplyRequest;
|
|
3140
3152
|
}
|
|
3141
3153
|
if (msg.data.danfossSystemStatusWater !== undefined) {
|
|
3142
3154
|
result[(0, utils_1.postfixWithEndpointName)("system_status_water", msg, model, meta)] =
|
|
@@ -3454,7 +3466,7 @@ exports.enocean_ptm216z = {
|
|
|
3454
3466
|
"106_0": "release",
|
|
3455
3467
|
"104_": "short_press_2_of_2",
|
|
3456
3468
|
};
|
|
3457
|
-
const ID = `${commandID}_${msg.data.commandFrame.raw?.slice(0, 1).join("_") ?? ""}`;
|
|
3469
|
+
const ID = `${commandID}_${("raw" in msg.data.commandFrame && msg.data.commandFrame.raw?.slice(0, 1).join("_")) ?? ""}`;
|
|
3458
3470
|
if (lookup[ID] === undefined) {
|
|
3459
3471
|
logger_1.logger.error(`PTM 216Z: missing command '${ID}'`, NS);
|
|
3460
3472
|
}
|
|
@@ -3463,17 +3475,16 @@ exports.enocean_ptm216z = {
|
|
|
3463
3475
|
}
|
|
3464
3476
|
},
|
|
3465
3477
|
};
|
|
3466
|
-
//
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
};
|
|
3478
|
+
// export const _8840100H_water_leak_alarm: Fz.Converter = {
|
|
3479
|
+
// cluster: "haApplianceEventsAlerts",
|
|
3480
|
+
// type: "commandAlertsNotification",
|
|
3481
|
+
// convert: (model, msg, publish, options, meta) => {
|
|
3482
|
+
// const alertStatus = msg.data.aalert;
|
|
3483
|
+
// return {
|
|
3484
|
+
// water_leak: (alertStatus & (1 << 12)) > 0,
|
|
3485
|
+
// };
|
|
3486
|
+
// },
|
|
3487
|
+
// };
|
|
3477
3488
|
exports.diyruz_freepad_clicks = {
|
|
3478
3489
|
cluster: "genMultistateInput",
|
|
3479
3490
|
type: ["readResponse", "attributeReport"],
|
|
@@ -3504,7 +3515,7 @@ exports._3310_humidity = {
|
|
|
3504
3515
|
cluster: "manuSpecificCentraliteHumidity",
|
|
3505
3516
|
type: ["attributeReport", "readResponse"],
|
|
3506
3517
|
convert: (model, msg, publish, options, meta) => {
|
|
3507
|
-
const humidity =
|
|
3518
|
+
const humidity = msg.data.measuredValue / 100.0;
|
|
3508
3519
|
return { humidity };
|
|
3509
3520
|
},
|
|
3510
3521
|
};
|
|
@@ -3695,11 +3706,11 @@ exports.legrand_greenpower = {
|
|
|
3695
3706
|
23: "press_4", // ZLGP15
|
|
3696
3707
|
34: "press_once",
|
|
3697
3708
|
32: "press_twice", // ZLGP17, ZLGP18
|
|
3698
|
-
51: "
|
|
3709
|
+
51: "down_hold", // ZLGP17, ZLGP18
|
|
3699
3710
|
52: "stop",
|
|
3700
3711
|
53: "up",
|
|
3701
3712
|
54: "down", // 600087l
|
|
3702
|
-
55: "
|
|
3713
|
+
55: "up_hold", // ZLGP17, ZLGP18
|
|
3703
3714
|
};
|
|
3704
3715
|
if (lookup[commandID] === undefined) {
|
|
3705
3716
|
logger_1.logger.error(`Legrand GreenPower: missing command '${commandID}'`, NS);
|
|
@@ -3799,7 +3810,7 @@ exports.heiman_hcho = {
|
|
|
3799
3810
|
type: ["attributeReport", "readResponse"],
|
|
3800
3811
|
convert: (model, msg, publish, options, meta) => {
|
|
3801
3812
|
if (msg.data.measuredValue) {
|
|
3802
|
-
return { hcho:
|
|
3813
|
+
return { hcho: msg.data.measuredValue / 1000.0 };
|
|
3803
3814
|
}
|
|
3804
3815
|
},
|
|
3805
3816
|
};
|
|
@@ -4267,23 +4278,21 @@ exports.CCTSwitch_D0001_levelctrl = {
|
|
|
4267
4278
|
type: ["commandMoveToLevel", "commandMoveToLevelWithOnOff", "commandMove", "commandStop"],
|
|
4268
4279
|
convert: (model, msg, publish, options, meta) => {
|
|
4269
4280
|
const payload = {};
|
|
4270
|
-
if (msg.type === "commandMove"
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
payload.action_rate = msg.data.rate;
|
|
4286
|
-
}
|
|
4281
|
+
if (msg.type === "commandMove") {
|
|
4282
|
+
(0, node_assert_1.default)("movemode" in msg.data);
|
|
4283
|
+
const direction = msg.data.movemode === 1 ? "down" : "up";
|
|
4284
|
+
payload.action = `brightness_${direction}_hold`;
|
|
4285
|
+
globalStore.putValue(msg.endpoint, "direction", direction);
|
|
4286
|
+
globalStore.putValue(msg.endpoint, "start", Date.now());
|
|
4287
|
+
payload.rate = msg.data.rate;
|
|
4288
|
+
payload.action_rate = msg.data.rate;
|
|
4289
|
+
}
|
|
4290
|
+
else if (msg.type === "commandStop") {
|
|
4291
|
+
const direction = globalStore.getValue(msg.endpoint, "direction");
|
|
4292
|
+
const duration = Date.now() - globalStore.getValue(msg.endpoint, "start");
|
|
4293
|
+
payload.action = `brightness_${direction}_release`;
|
|
4294
|
+
payload.duration = duration;
|
|
4295
|
+
payload.action_duration = duration;
|
|
4287
4296
|
}
|
|
4288
4297
|
else {
|
|
4289
4298
|
// wrap the messages from button2 and button4 into a single function
|
|
@@ -4294,10 +4303,11 @@ exports.CCTSwitch_D0001_levelctrl = {
|
|
|
4294
4303
|
// CCTSwitch_D0001_move_to_colortemp_recall below.
|
|
4295
4304
|
let clk = "brightness";
|
|
4296
4305
|
let cmd = null;
|
|
4306
|
+
(0, node_assert_1.default)("level" in msg.data);
|
|
4297
4307
|
payload.action_brightness = msg.data.level;
|
|
4298
|
-
payload.action_transition =
|
|
4308
|
+
payload.action_transition = msg.data.transtime / 10.0;
|
|
4299
4309
|
payload.brightness = msg.data.level;
|
|
4300
|
-
payload.transition =
|
|
4310
|
+
payload.transition = msg.data.transtime / 10.0;
|
|
4301
4311
|
if (msg.type === "commandMoveToLevel") {
|
|
4302
4312
|
// pressing the brightness button increments/decrements from 13-254.
|
|
4303
4313
|
// when it reaches the end (254) it will start decrementing by a step,
|
|
@@ -4328,6 +4338,7 @@ exports.CCTSwitch_D0001_lighting = {
|
|
|
4328
4338
|
convert: (model, msg, publish, options, meta) => {
|
|
4329
4339
|
const payload = {};
|
|
4330
4340
|
if (msg.type === "commandMoveColorTemp") {
|
|
4341
|
+
(0, node_assert_1.default)("movemode" in msg.data);
|
|
4331
4342
|
const clk = "colortemp";
|
|
4332
4343
|
payload.rate = msg.data.rate;
|
|
4333
4344
|
payload.action_rate = msg.data.rate;
|
|
@@ -4358,10 +4369,11 @@ exports.CCTSwitch_D0001_lighting = {
|
|
|
4358
4369
|
const lastSeq = globalStore.getValue(msg.endpoint, "last_seq");
|
|
4359
4370
|
const seq = msg.meta.zclTransactionSequenceNumber;
|
|
4360
4371
|
let clk = "colortemp";
|
|
4372
|
+
(0, node_assert_1.default)("colortemp" in msg.data);
|
|
4361
4373
|
payload.color_temp = msg.data.colortemp;
|
|
4362
|
-
payload.transition =
|
|
4374
|
+
payload.transition = msg.data.transtime / 10.0;
|
|
4363
4375
|
payload.action_color_temp = msg.data.colortemp;
|
|
4364
|
-
payload.action_transition =
|
|
4376
|
+
payload.action_transition = msg.data.transtime / 10.0;
|
|
4365
4377
|
// because the remote sends two commands for button4, we need to look at the previous command and
|
|
4366
4378
|
// see if it was the recognized start command for button4 - if so, ignore this second command,
|
|
4367
4379
|
// because it's not really button3, it's actually button4
|
|
@@ -4525,8 +4537,8 @@ exports.ZB003X_attr = {
|
|
|
4525
4537
|
type: ["attributeReport", "readResponse"],
|
|
4526
4538
|
convert: (model, msg, publish, options, meta) => {
|
|
4527
4539
|
const data = msg.data;
|
|
4528
|
-
const senslookup = {
|
|
4529
|
-
const keeptimelookup = {
|
|
4540
|
+
const senslookup = { 0: "low", 1: "medium", 2: "high" };
|
|
4541
|
+
const keeptimelookup = { 0: 0, 1: 30, 2: 60, 3: 120, 4: 240, 5: 480 };
|
|
4530
4542
|
if (data && data.currentZoneSensitivityLevel !== undefined) {
|
|
4531
4543
|
const value = data.currentZoneSensitivityLevel;
|
|
4532
4544
|
return { sensitivity: senslookup[value] };
|
|
@@ -4640,7 +4652,7 @@ exports.schneider_temperature = {
|
|
|
4640
4652
|
cluster: "msTemperatureMeasurement",
|
|
4641
4653
|
type: ["attributeReport", "readResponse"],
|
|
4642
4654
|
convert: (model, msg, publish, options, meta) => {
|
|
4643
|
-
const temperature =
|
|
4655
|
+
const temperature = msg.data.measuredValue / 100.0;
|
|
4644
4656
|
const property = (0, utils_1.postfixWithEndpointName)("local_temperature", msg, model, meta);
|
|
4645
4657
|
return { [property]: temperature };
|
|
4646
4658
|
},
|
|
@@ -4661,7 +4673,7 @@ exports.wiser_smart_thermostat_client = {
|
|
|
4661
4673
|
};
|
|
4662
4674
|
exports.wiser_smart_setpoint_command_client = {
|
|
4663
4675
|
cluster: "hvacThermostat",
|
|
4664
|
-
type: ["
|
|
4676
|
+
type: ["commandWiserSmartSetSetpoint"],
|
|
4665
4677
|
convert: (model, msg, publish, options, meta) => {
|
|
4666
4678
|
const attribute = {};
|
|
4667
4679
|
const result = {};
|
|
@@ -4669,7 +4681,7 @@ exports.wiser_smart_setpoint_command_client = {
|
|
|
4669
4681
|
// This also ensures the next client read of setpoint is in sync with the latest commanded value.
|
|
4670
4682
|
attribute.occupiedHeatingSetpoint = msg.data.setpoint;
|
|
4671
4683
|
msg.endpoint.saveClusterAttributeKeyValue("hvacThermostat", attribute);
|
|
4672
|
-
result.occupied_heating_setpoint =
|
|
4684
|
+
result.occupied_heating_setpoint = msg.data.setpoint / 100.0;
|
|
4673
4685
|
logger_1.logger.debug(`received wiser setpoint command with value: '${msg.data.setpoint}'`, NS);
|
|
4674
4686
|
return result;
|
|
4675
4687
|
},
|
|
@@ -4705,7 +4717,7 @@ exports.sihas_people_cnt = {
|
|
|
4705
4717
|
type: ["attributeReport", "readResponse"],
|
|
4706
4718
|
convert: (model, msg, publish, options, meta) => {
|
|
4707
4719
|
const lookup = { "0": "idle", "1": "in", "2": "out" };
|
|
4708
|
-
const value = (0, utils_1.precisionRound)(
|
|
4720
|
+
const value = (0, utils_1.precisionRound)(msg.data.presentValue, 1);
|
|
4709
4721
|
const people = (0, utils_1.precisionRound)(msg.data.presentValue, 0);
|
|
4710
4722
|
let result = null;
|
|
4711
4723
|
if (value <= 80) {
|
|
@@ -4866,7 +4878,7 @@ exports.SNZB02_temperature = {
|
|
|
4866
4878
|
cluster: "msTemperatureMeasurement",
|
|
4867
4879
|
type: ["attributeReport", "readResponse"],
|
|
4868
4880
|
convert: (model, msg, publish, options, meta) => {
|
|
4869
|
-
const temperature =
|
|
4881
|
+
const temperature = msg.data.measuredValue / 100.0;
|
|
4870
4882
|
// https://github.com/Koenkk/zigbee2mqtt/issues/13640
|
|
4871
4883
|
// SNZB-02 reports stranges values sometimes
|
|
4872
4884
|
if (temperature > -33 && temperature < 100) {
|
|
@@ -4880,7 +4892,7 @@ exports.SNZB02_humidity = {
|
|
|
4880
4892
|
cluster: "msRelativeHumidity",
|
|
4881
4893
|
type: ["attributeReport", "readResponse"],
|
|
4882
4894
|
convert: (model, msg, publish, options, meta) => {
|
|
4883
|
-
const humidity =
|
|
4895
|
+
const humidity = msg.data.measuredValue / 100.0;
|
|
4884
4896
|
// https://github.com/Koenkk/zigbee2mqtt/issues/13640
|
|
4885
4897
|
// SNZB-02 reports stranges values sometimes
|
|
4886
4898
|
if (humidity >= 0 && humidity <= 99.75) {
|
|
@@ -5158,7 +5170,8 @@ exports.command_on_presence = {
|
|
|
5158
5170
|
cluster: "genOnOff",
|
|
5159
5171
|
type: "commandOn",
|
|
5160
5172
|
convert: (model, msg, publish, options, meta) => {
|
|
5161
|
-
const
|
|
5173
|
+
const newMsg = { ...msg, type: "commandCheckin", data: {} };
|
|
5174
|
+
const payload1 = exports.checkin_presence.convert(model, newMsg, publish, options, meta);
|
|
5162
5175
|
const payload2 = exports.command_on.convert(model, msg, publish, options, meta);
|
|
5163
5176
|
return { ...payload1, ...payload2 };
|
|
5164
5177
|
},
|
|
@@ -5168,8 +5181,8 @@ exports.ias_ace_occupancy_with_timeout = {
|
|
|
5168
5181
|
type: "commandGetPanelStatus",
|
|
5169
5182
|
options: [exposes.options.occupancy_timeout()],
|
|
5170
5183
|
convert: (model, msg, publish, options, meta) => {
|
|
5171
|
-
msg
|
|
5172
|
-
return exports.occupancy_with_timeout.convert(model,
|
|
5184
|
+
const newMsg = { ...msg, type: "attributeReport", data: { occupancy: 1 } };
|
|
5185
|
+
return exports.occupancy_with_timeout.convert(model, newMsg, publish, options, meta);
|
|
5173
5186
|
},
|
|
5174
5187
|
};
|
|
5175
5188
|
// biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
|
|
@@ -5323,8 +5336,8 @@ exports.terncy_raw = {
|
|
|
5323
5336
|
value = msg.data[7];
|
|
5324
5337
|
const sidelookup = { 5: "right", 7: "right", 40: "left", 56: "left" };
|
|
5325
5338
|
if (sidelookup[value]) {
|
|
5326
|
-
msg
|
|
5327
|
-
const payload = exports.occupancy_with_timeout.convert(model,
|
|
5339
|
+
const newMsg = { ...msg, type: "attributeReport", data: { occupancy: 1 } };
|
|
5340
|
+
const payload = exports.occupancy_with_timeout.convert(model, newMsg, publish, options, meta);
|
|
5328
5341
|
if (payload) {
|
|
5329
5342
|
payload.action_side = sidelookup[value];
|
|
5330
5343
|
payload.side = sidelookup[value]; /* legacy: remove this line (replaced by action_side) */
|
|
@@ -5346,11 +5359,11 @@ exports.ZM35HQ_attr = {
|
|
|
5346
5359
|
result = { ...result1 };
|
|
5347
5360
|
}
|
|
5348
5361
|
if (data && data.currentZoneSensitivityLevel !== undefined) {
|
|
5349
|
-
const senslookup = {
|
|
5362
|
+
const senslookup = { 0: "low", 1: "medium", 2: "high" };
|
|
5350
5363
|
result.sensitivity = senslookup[data.currentZoneSensitivityLevel];
|
|
5351
5364
|
}
|
|
5352
5365
|
if (data && data["61441"] !== undefined) {
|
|
5353
|
-
const keeptimelookup = {
|
|
5366
|
+
const keeptimelookup = { 0: 30, 1: 60, 2: 120 };
|
|
5354
5367
|
result.keep_time = keeptimelookup[data["61441"]];
|
|
5355
5368
|
}
|
|
5356
5369
|
return result;
|
|
@@ -5397,7 +5410,14 @@ exports.wiser_smart_thermostat = {
|
|
|
5397
5410
|
}
|
|
5398
5411
|
if (msg.data[0xe020] !== undefined) {
|
|
5399
5412
|
// wiserSmartCurrentFilPiloteMode
|
|
5400
|
-
const lookup = {
|
|
5413
|
+
const lookup = {
|
|
5414
|
+
0: "comfort",
|
|
5415
|
+
1: "comfort_-1",
|
|
5416
|
+
2: "comfort_-2",
|
|
5417
|
+
3: "energy_saving",
|
|
5418
|
+
4: "frost_protection",
|
|
5419
|
+
5: "off",
|
|
5420
|
+
};
|
|
5401
5421
|
result.fip_setting = lookup[msg.data[0xe020]];
|
|
5402
5422
|
}
|
|
5403
5423
|
if (msg.data[0xe030] !== undefined) {
|
|
@@ -5406,7 +5426,14 @@ exports.wiser_smart_thermostat = {
|
|
|
5406
5426
|
}
|
|
5407
5427
|
if (msg.data[0xe031] !== undefined) {
|
|
5408
5428
|
// wiserSmartValveCalibrationStatus
|
|
5409
|
-
const lookup = {
|
|
5429
|
+
const lookup = {
|
|
5430
|
+
0: "ongoing",
|
|
5431
|
+
1: "successful",
|
|
5432
|
+
2: "uncalibrated",
|
|
5433
|
+
3: "failed_e1",
|
|
5434
|
+
4: "failed_e2",
|
|
5435
|
+
5: "failed_e3",
|
|
5436
|
+
};
|
|
5410
5437
|
result.valve_calibration_status = lookup[msg.data[0xe031]];
|
|
5411
5438
|
}
|
|
5412
5439
|
// Radiator thermostats command changes from UI, but report value periodically for sync,
|