zigbee-herdsman-converters 25.26.0 → 25.28.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/devices/bosch.js +14 -14
  3. package/dist/devices/bosch.js.map +1 -1
  4. package/dist/devices/bseed.js +1 -1
  5. package/dist/devices/bseed.js.map +1 -1
  6. package/dist/devices/candeo.d.ts.map +1 -1
  7. package/dist/devices/candeo.js +42 -1
  8. package/dist/devices/candeo.js.map +1 -1
  9. package/dist/devices/gledopto.d.ts.map +1 -1
  10. package/dist/devices/gledopto.js +334 -0
  11. package/dist/devices/gledopto.js.map +1 -1
  12. package/dist/devices/imou.d.ts.map +1 -1
  13. package/dist/devices/imou.js +25 -0
  14. package/dist/devices/imou.js.map +1 -1
  15. package/dist/devices/legrand.d.ts.map +1 -1
  16. package/dist/devices/legrand.js +3 -33
  17. package/dist/devices/legrand.js.map +1 -1
  18. package/dist/devices/namron.d.ts.map +1 -1
  19. package/dist/devices/namron.js +15 -0
  20. package/dist/devices/namron.js.map +1 -1
  21. package/dist/devices/nodon.d.ts.map +1 -1
  22. package/dist/devices/nodon.js +15 -1
  23. package/dist/devices/nodon.js.map +1 -1
  24. package/dist/devices/philips.d.ts.map +1 -1
  25. package/dist/devices/philips.js +7 -0
  26. package/dist/devices/philips.js.map +1 -1
  27. package/dist/devices/samotech.d.ts.map +1 -1
  28. package/dist/devices/samotech.js +8 -0
  29. package/dist/devices/samotech.js.map +1 -1
  30. package/dist/devices/sunricher.d.ts.map +1 -1
  31. package/dist/devices/sunricher.js +1 -0
  32. package/dist/devices/sunricher.js.map +1 -1
  33. package/dist/devices/third_reality.d.ts.map +1 -1
  34. package/dist/devices/third_reality.js +1 -0
  35. package/dist/devices/third_reality.js.map +1 -1
  36. package/dist/devices/tuya.d.ts.map +1 -1
  37. package/dist/devices/tuya.js +250 -46
  38. package/dist/devices/tuya.js.map +1 -1
  39. package/dist/lib/bosch.d.ts +13 -3
  40. package/dist/lib/bosch.d.ts.map +1 -1
  41. package/dist/lib/bosch.js +258 -14
  42. package/dist/lib/bosch.js.map +1 -1
  43. package/dist/models-index.json +1 -1
  44. package/package.json +4 -4
@@ -4898,6 +4898,7 @@ exports.definitions = [
4898
4898
  "_TZE284_b7kbnl6q",
4899
4899
  "_TZE200_7shyddj3",
4900
4900
  "_TZE204_a2jcoyuk",
4901
+ "_TZE204_ic7jtutb",
4901
4902
  "_TZE204_zuq5xxib",
4902
4903
  ]),
4903
4904
  ...tuya.fingerprint("zo2pocs\u0000", ["_TYST11_fzo2pocs"]),
@@ -8628,70 +8629,121 @@ exports.definitions = [
8628
8629
  fromZigbee: [tuya.fz.datapoints],
8629
8630
  toZigbee: [tuya.tz.datapoints],
8630
8631
  exposes: [
8631
- // Core thermostat controls
8632
+ // Weekly Schedule (Datapoint 48) - Placeholder
8633
+ // The schedule is a raw 168-byte array (7 days x 24 bytes/day):
8634
+ // - Each day has up to 6 slots (4 bytes each): [Hour (1B), Minute (1B), Temp x10 (2B)]
8635
+ // - Empty slots: encoded as 00:00 time and 0°C temp (0x0000).
8636
+ // To implement:
8637
+ // - Converter 'from': Decode raw data into structured schedule (e.g., [{day, slots: [{time, temp}]}]).
8638
+ // - Converter 'to': Encode user input back into raw 168-byte buffer format.
8639
+ // Each timer can set the time in the 1st and 2nd bytes, and the temperature in the 3rd and 4th bytes.
8640
+ // There are 6 timers. The default time is 06:00 20°C; 08:00 15°C; 11:30 15°C; 13:30 15°C; 17:00 22°C; 22:00 15°C.
8641
+ // Each segment occupies 4 bytes. If the temperature contains decimals, the data must be expanded 10 times.
8642
+ // If it does not contain decimals, it will be transmitted normally.
8643
+ // For example, if it is 06:00 35.0, it will be transmitted as 06 00 01 5e. 6*4*3=72 bytes
8644
+ // Climate Control
8632
8645
  e
8633
8646
  .climate()
8634
- .withSetpoint("current_heating_setpoint", 5, 35, 0.5, ea.STATE_SET) // DP 16
8635
- .withLocalTemperature(ea.STATE) // DP 24
8636
- .withSystemMode(["auto", "heat", "off"], ea.STATE_SET) // DP 2
8637
- .withRunningState(["idle", "heat"], ea.STATE), // DP 3
8638
- // Basic settings
8647
+ .withSetpoint("current_heating_setpoint", 5, 35, 0.5, ea.STATE_SET)
8648
+ .withLocalTemperature(ea.STATE)
8649
+ .withLocalTemperatureCalibration(-9.9, 9.9, 0.1, ea.STATE_SET)
8650
+ .withSystemMode(["off", "heat"], ea.STATE_SET)
8651
+ .withRunningState(["idle", "heat"], ea.STATE),
8652
+ // Expose local temperature as a sensor
8639
8653
  e
8640
- .binary("state", ea.STATE_SET, "ON", "OFF")
8641
- .withDescription("Controls whether the thermostat is on or off."), // DP 1
8654
+ .numeric("local_temperature", ea.STATE)
8655
+ .withUnit("°C")
8656
+ .withDescription("Current temperature measured by the thermostat."),
8657
+ // Modes and Schedules
8658
+ e.enum("mode", ea.STATE_SET, ["manual", "program"]),
8659
+ e.enum("run_mode", ea.STATE_SET, ["heat_mode", "cool_mode"]).withDescription("Operation mode of the thermostat (heat or cool)."),
8660
+ e.enum("week_program_periods", ea.STATE, ["periods_4"]).withDescription("Number of program periods per week (read-only)."),
8661
+ // Features
8642
8662
  e
8643
- .binary("child_lock", ea.STATE_SET, "ON", "OFF")
8644
- .withDescription("Locks the thermostat display to prevent accidental changes."), // DP 40
8663
+ .binary("factory_reset", ea.STATE_SET, "ON", "OFF")
8664
+ .withDescription("WARNING: Restores the device to factory settings. All configurations will be lost."),
8665
+ e.binary("child_lock", ea.STATE_SET, "ON", "OFF").withDescription("Enables or disables the child lock feature."),
8666
+ e.enum("window_state", ea.STATE, ["open", "close"]).withDescription("Indicates whether the window is open or closed."),
8667
+ e.enum("working_status", ea.STATE, ["Keeping Warm", "Working"]).withDescription("Current working status of the thermostat."),
8668
+ e.binary("window_check", ea.STATE_SET, "ON", "OFF").withDescription("Checks whether the window is open or closed."),
8669
+ e.binary("frost_protection", ea.STATE_SET, "ON", "OFF").withDescription("Enables frost protection mode."),
8670
+ e.enum("sensor_choose", ea.STATE_SET, ["in", "out"]).withDescription("Selects between internal or external temperature sensors."),
8671
+ e.binary("humidity_control", ea.STATE_SET, "ON", "OFF").withDescription("Controls the humidity protection feature."),
8672
+ e.numeric("humidity", ea.STATE).withUnit("%").withDescription("Displays the current relative humidity level in percentage."),
8673
+ // Weekly Schedule
8645
8674
  e
8646
- .numeric("relative_humidity", ea.STATE)
8647
- .withUnit("%")
8648
- .withDescription("Relative humidity reported by the thermostat."), // DP 34
8649
- // Protection features
8675
+ .text("week_schedule", ea.STATE_SET)
8676
+ .withDescription('Weekly schedule: structured format like - Monday: [{"time":"06:30","temp":20.0},...].'),
8677
+ // Temperature and Control Adjustments
8650
8678
  e
8651
- .binary("frost_protection", ea.STATE_SET, "ON", "OFF")
8652
- .withDescription("Enables frost protection against freezing temperatures."), // DP 10
8679
+ .numeric("upper_temp", ea.STATE_SET)
8680
+ .withUnit("°C")
8681
+ .withValueMin(35)
8682
+ .withValueMax(95)
8683
+ .withValueStep(0.5)
8684
+ .withDescription("Set the upper temperature limit"),
8653
8685
  e
8654
8686
  .numeric("hysteresis", ea.STATE_SET)
8655
8687
  .withUnit("°C")
8656
8688
  .withValueMin(0.1)
8657
8689
  .withValueMax(5)
8658
8690
  .withValueStep(0.1)
8659
- .withDescription("Hysteresis for heating/cooling cycle control."), // DP 106
8660
- // Calibration
8691
+ .withDescription("Hysteresis for heating/cooling cycle control."),
8661
8692
  e
8662
- .numeric("temperature_calibration", ea.STATE_SET)
8693
+ .numeric("temperature_correction", ea.STATE_SET)
8663
8694
  .withUnit("°C")
8664
- .withValueMin(-5)
8665
- .withValueMax(5)
8666
- .withDescription("Offset correction for temperature calibration."), // DP 101
8667
- // Weekly schedule programming
8695
+ .withValueMin(-9)
8696
+ .withValueMax(9)
8697
+ .withValueStep(1)
8698
+ .withDescription("Temperature calibration adjustment."),
8668
8699
  e
8669
- .text("week_schedule", ea.STATE_SET)
8670
- .withDescription("Weekly schedule programming as a JSON string (6 periods per day)."), // DP 48
8700
+ .numeric("switch_sensitivity", ea.STATE_SET)
8701
+ .withUnit("°C")
8702
+ .withValueMin(0.5)
8703
+ .withValueMax(5.0)
8704
+ .withValueStep(0.5)
8705
+ .withDescription("Temperature difference threshold to trigger switching."),
8671
8706
  e
8672
- .binary("weekly_schedule_enabled", ea.STATE_SET, "ON", "OFF")
8673
- .withDescription("Enable or disable weekly scheduling functions."), // DP 108
8674
- // Secondary heating
8707
+ .numeric("floor_temp_protection", ea.STATE_SET)
8708
+ .withUnit("°C")
8709
+ .withValueMin(5.0)
8710
+ .withValueMax(60.0)
8711
+ .withValueStep(0.5)
8712
+ .withDescription("Maximum allowed floor temperature for protection."),
8675
8713
  e
8676
- .numeric("secondary_heating_setpoint", ea.STATE_SET)
8714
+ .numeric("floor_low_protection", ea.STATE_SET)
8677
8715
  .withUnit("°C")
8678
- .withValueMin(5)
8679
- .withValueMax(35)
8680
- .withDescription("Secondary heating setpoint, e.g., for floor sensor."),
8716
+ .withValueMin(10.0)
8717
+ .withValueMax(30.0)
8718
+ .withValueStep(0.5)
8719
+ .withDescription("Minimum allowed floor temperature for protection."),
8681
8720
  ],
8682
8721
  meta: {
8683
8722
  tuyaDatapoints: [
8684
- [1, "state", tuya.valueConverter.onOff], // DP 1: Toggle On/Off
8685
- [2, "system_mode", tuya.valueConverterBasic.lookup({ auto: 0, heat: 1, off: 2 })], // DP 2: System Mode
8686
- [3, "running_state", tuya.valueConverterBasic.lookup({ idle: 0, heat: 1 })], // DP 3: Running State
8687
- [10, "frost_protection", tuya.valueConverter.onOff], // DP 10: Frost protection
8688
- [16, "current_heating_setpoint", tuya.valueConverter.divideBy10], // DP 16: Heating Setpoint
8689
- [24, "local_temperature", tuya.valueConverter.divideBy10], // DP 24: Local Temperature
8690
- [34, "relative_humidity", tuya.valueConverter.raw], // DP 34: Relative Humidity (%)
8691
- [40, "child_lock", tuya.valueConverter.onOff], // DP 40: Display Lock
8692
- [48, "week_schedule", tuya.valueConverter.raw], // DP 48: Weekly Schedule Programming
8693
- [106, "hysteresis", tuya.valueConverter.divideBy10], // DP 106: Hysteresis
8694
- [101, "temperature_calibration", tuya.valueConverter.raw], // DP 101: Temperature Calibration
8723
+ [1, "switch", tuya.valueConverter.onOff],
8724
+ [2, "mode", tuya.valueConverterBasic.lookup({ manual: 0, program: 1 })],
8725
+ [3, "working_status", tuya.valueConverterBasic.lookup({ "Keeping Warm": 0, Working: 1 })],
8726
+ [8, "window_check", tuya.valueConverter.onOff],
8727
+ [10, "frost_protection", tuya.valueConverter.onOff],
8728
+ [16, "current_heating_setpoint", tuya.valueConverter.divideBy10],
8729
+ [19, "upper_temp", tuya.valueConverter.divideBy10],
8730
+ [24, "local_temperature", tuya.valueConverter.divideBy10],
8731
+ [25, "window_state", tuya.valueConverterBasic.lookup({ open: 1, close: 0 })],
8732
+ [27, "temperature_correction", tuya.valueConverter.raw],
8733
+ [34, "humidity", tuya.valueConverter.raw],
8734
+ [39, "factory_reset", tuya.valueConverter.onOff],
8735
+ [43, "sensor_choose", tuya.valueConverterBasic.lookup({ in: 0, out: 1 })],
8736
+ [48, "week_schedule", tuya.valueConverter.raw],
8737
+ [58, "run_mode", tuya.valueConverterBasic.lookup({ heat_mode: 1, cool_mode: 2 })],
8738
+ [61, "week_program_periods", tuya.valueConverterBasic.lookup({ periods_4: 1 })],
8739
+ [101, "switch_sensitivity", tuya.valueConverter.divideBy10],
8740
+ [102, "floor_temp_protection", tuya.valueConverter.divideBy10],
8741
+ [103, "floor_low_protection", tuya.valueConverter.divideBy10],
8742
+ [104, "window_open_detection_time", tuya.valueConverter.raw],
8743
+ [105, "window_open_detection_temp", tuya.valueConverter.raw],
8744
+ [106, "window_open_delay_time", tuya.valueConverter.raw],
8745
+ [107, "humidity_control", tuya.valueConverter.onOff],
8746
+ [108, "upper_humidity_limit", tuya.valueConverter.raw],
8695
8747
  ],
8696
8748
  },
8697
8749
  },
@@ -11618,7 +11670,7 @@ exports.definitions = [
11618
11670
  whiteLabel: [tuya.whitelabel("Homeetec", "37022714", "4 Gang switch with backlight", ["_TZE200_hewlydpz"])],
11619
11671
  },
11620
11672
  {
11621
- fingerprint: tuya.fingerprint("TS0601", ["_TZE200_p6vz3wzt"]),
11673
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_p6vz3wzt", "_TZE284_uqfph8ah"]),
11622
11674
  model: "TS0601_cover_5",
11623
11675
  vendor: "Tuya",
11624
11676
  description: "Curtain/blind switch",
@@ -11664,7 +11716,10 @@ exports.definitions = [
11664
11716
  [103, "child_lock", tuya.valueConverter.onOff],
11665
11717
  ],
11666
11718
  },
11667
- whiteLabel: [tuya.whitelabel("Homeetec", "37022483", "Curtain/blind switch", ["_TZE200_p6vz3wzt"])],
11719
+ whiteLabel: [
11720
+ tuya.whitelabel("Homeetec", "37022483", "Curtain/blind switch", ["_TZE200_p6vz3wzt"]),
11721
+ tuya.whitelabel("BSEED", "_TZE284_uqfph8ah", "Curtain/blind switch", ["_TZE284_uqfph8ah"]),
11722
+ ],
11668
11723
  },
11669
11724
  {
11670
11725
  zigbeeModel: ["TS030F"],
@@ -18722,10 +18777,11 @@ exports.definitions = [
18722
18777
  },
18723
18778
  },
18724
18779
  {
18725
- fingerprint: tuya.fingerprint("TS0601", ["_TZE284_pglpvdar"]),
18780
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE284_pglpvdar", "_TZE284_4hdbt6rn"]),
18726
18781
  model: "TO-Q-SA1",
18727
18782
  vendor: "Tongou",
18728
18783
  description: "Zigbee energy meter (transformer clamp)",
18784
+ whiteLabel: [tuya.whitelabel("Tongou", "TOSA1-01WXJAT2A", "Smart energy meter, two wire", ["_TZE284_4hdbt6rn"])],
18729
18785
  fromZigbee: [tuya.fz.datapoints],
18730
18786
  toZigbee: [tuya.tz.datapoints],
18731
18787
  exposes: [
@@ -18934,6 +18990,154 @@ exports.definitions = [
18934
18990
  m.onOff({ powerOnBehavior: false, endpointNames: ["1", "2", "3", "4"] }),
18935
18991
  ],
18936
18992
  },
18993
+ {
18994
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE204_3regm3h6"]),
18995
+ model: "_TZE204_3regm3h6",
18996
+ vendor: "Tuya",
18997
+ description: "Smart thermostat for electric radiator with pilot wire",
18998
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
18999
+ exposes: [
19000
+ e.binary("state", ea.STATE_SET, "ON", "OFF").withDescription("Turn the heater on or off").withCategory("config"),
19001
+ e.child_lock(),
19002
+ e
19003
+ .climate()
19004
+ .withSetpoint("current_heating_setpoint", 5, 35, 0.5, ea.STATE_SET)
19005
+ .withLocalTemperature(ea.STATE)
19006
+ .withLocalTemperatureCalibration(-9, 9, 1, ea.STATE_SET)
19007
+ .withSystemMode(["off", "heat"], ea.STATE)
19008
+ .withPreset(["comfort", "eco", "antifrost", "off", "comfort_1", "comfort_2", "program", "manual"]),
19009
+ e
19010
+ .enum("mode", ea.STATE, ["comfort", "eco", "antifrost", "off", "comfort_1", "comfort_2", "program", "manual"])
19011
+ .withDescription("Current running mode")
19012
+ .withCategory("diagnostic"),
19013
+ e
19014
+ .numeric("comfort_temperature", ea.STATE_SET)
19015
+ .withUnit(" C")
19016
+ .withValueMin(5)
19017
+ .withValueMax(35)
19018
+ .withValueStep(0.5)
19019
+ .withDescription("Set comfort temperature")
19020
+ .withCategory("config"),
19021
+ e
19022
+ .numeric("eco_temperature", ea.STATE_SET)
19023
+ .withUnit(" C")
19024
+ .withValueMin(5)
19025
+ .withValueMax(30)
19026
+ .withValueStep(0.5)
19027
+ .withDescription("Set ECO temperature")
19028
+ .withCategory("config"),
19029
+ e
19030
+ .numeric("antifrost_temperature", ea.STATE_SET)
19031
+ .withUnit(" C")
19032
+ .withValueMin(5)
19033
+ .withValueMax(15)
19034
+ .withValueStep(0.5)
19035
+ .withDescription("Set antifrost temperature")
19036
+ .withCategory("config"),
19037
+ e
19038
+ .numeric("temperature_sensibility", ea.STATE_SET)
19039
+ .withUnit(" C")
19040
+ .withValueMin(0.5)
19041
+ .withValueMax(5)
19042
+ .withValueStep(0.5)
19043
+ .withDescription("Set thermostat sensitivity")
19044
+ .withCategory("config"),
19045
+ e.binary("antifrost", ea.STATE_SET, "ON", "OFF").withDescription("Enable antifrost protection feature").withCategory("config"),
19046
+ e
19047
+ .binary("window_detection", ea.STATE_SET, "ON", "OFF")
19048
+ .withLabel("Open window detection")
19049
+ .withDescription("Enable / Disable open window detection feature")
19050
+ .withCategory("config"),
19051
+ e.enum("window", ea.STATE, ["close", "open"]).withDescription("Indicates if window is open").withCategory("diagnostic"),
19052
+ e.power(),
19053
+ e.voltage(),
19054
+ e.current(),
19055
+ e.energy(),
19056
+ e.energy().withProperty("energy_today").withDescription("Energy consumed today"),
19057
+ e.energy().withProperty("energy_yesterday").withDescription("Energy consumed yesterday"),
19058
+ e
19059
+ .enum("device_mode_type", ea.STATE, ["four", "six", "switch"])
19060
+ .withDescription("Indicates the actual pilot wire mode of the thermostat")
19061
+ .withCategory("diagnostic"),
19062
+ ],
19063
+ meta: {
19064
+ tuyaDatapoints: [
19065
+ [1, "state", tuya.valueConverter.onOff],
19066
+ [1, "system_mode", tuya.valueConverterBasic.lookup({ heat: true, off: false })],
19067
+ [
19068
+ 2,
19069
+ "mode",
19070
+ tuya.valueConverterBasic.lookup({
19071
+ comfort: tuya.enum(0),
19072
+ eco: tuya.enum(1),
19073
+ antifrost: tuya.enum(2),
19074
+ off: tuya.enum(3),
19075
+ comfort_1: tuya.enum(4),
19076
+ comfort_2: tuya.enum(5),
19077
+ program: tuya.enum(6),
19078
+ manual: tuya.enum(7),
19079
+ }),
19080
+ ],
19081
+ [
19082
+ 2,
19083
+ "preset",
19084
+ tuya.valueConverterBasic.lookup({
19085
+ comfort: tuya.enum(0),
19086
+ eco: tuya.enum(1),
19087
+ antifrost: tuya.enum(2),
19088
+ off: tuya.enum(3),
19089
+ comfort_1: tuya.enum(4),
19090
+ comfort_2: tuya.enum(5),
19091
+ program: tuya.enum(6),
19092
+ manual: tuya.enum(7),
19093
+ }),
19094
+ ],
19095
+ [11, "power", tuya.valueConverter.raw],
19096
+ [16, "local_temperature", tuya.valueConverter.divideBy10],
19097
+ [
19098
+ 17,
19099
+ "window",
19100
+ tuya.valueConverterBasic.lookup({
19101
+ close: tuya.enum(0),
19102
+ open: tuya.enum(1),
19103
+ }),
19104
+ ],
19105
+ [19, "local_temperature_calibration", tuya.valueConverter.localTempCalibration2],
19106
+ [20, "fault", tuya.valueConverter.raw],
19107
+ [29, "window_detection", tuya.valueConverter.onOff],
19108
+ [39, "child_lock", tuya.valueConverter.lockUnlock],
19109
+ [50, "current_heating_setpoint", tuya.valueConverter.divideBy10],
19110
+ [101, "voltage", tuya.valueConverter.divideBy10],
19111
+ [102, "current", tuya.valueConverter.divideBy1000],
19112
+ [103, "temperature_sensibility", tuya.valueConverter.divideBy10],
19113
+ [104, "energy_today", tuya.valueConverter.raw],
19114
+ [105, "energy_yesterday", tuya.valueConverter.raw],
19115
+ [
19116
+ 106,
19117
+ "device_mode_type",
19118
+ tuya.valueConverterBasic.lookup({
19119
+ four: tuya.enum(0),
19120
+ six: tuya.enum(1),
19121
+ switch: tuya.enum(2),
19122
+ }),
19123
+ ],
19124
+ [107, "energy", tuya.valueConverter.raw],
19125
+ [108, "week_program_1", tuya.valueConverter.raw],
19126
+ [109, "week_program_2", tuya.valueConverter.raw],
19127
+ [110, "week_program_3", tuya.valueConverter.raw],
19128
+ [111, "week_program_4", tuya.valueConverter.raw],
19129
+ [112, "week_program_5", tuya.valueConverter.raw],
19130
+ [113, "week_program_6", tuya.valueConverter.raw],
19131
+ [114, "week_program_7", tuya.valueConverter.raw],
19132
+ [115, "set_temp_switch", tuya.valueConverter.onOff],
19133
+ [116, "antifrost", tuya.valueConverter.onOff],
19134
+ [117, "eco_temperature", tuya.valueConverter.divideBy10],
19135
+ [118, "comfort_temperature", tuya.valueConverter.divideBy10],
19136
+ [119, "antifrost_temperature", tuya.valueConverter.divideBy10],
19137
+ [120, "light", tuya.valueConverter.raw],
19138
+ ],
19139
+ },
19140
+ },
18937
19141
  {
18938
19142
  fingerprint: tuya.fingerprint("TS0601", ["_TZE284_r3szw0xr"]),
18939
19143
  model: "TS0601_cover_11",