zigbee-herdsman-converters 25.62.0 → 25.64.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 +35 -0
- package/dist/converters/toZigbee.d.ts.map +1 -1
- package/dist/converters/toZigbee.js +3 -0
- package/dist/converters/toZigbee.js.map +1 -1
- package/dist/devices/candeo.d.ts.map +1 -1
- package/dist/devices/candeo.js +0 -1
- package/dist/devices/candeo.js.map +1 -1
- package/dist/devices/develco.d.ts.map +1 -1
- package/dist/devices/develco.js +48 -0
- package/dist/devices/develco.js.map +1 -1
- package/dist/devices/frient.d.ts.map +1 -1
- package/dist/devices/frient.js +0 -7
- package/dist/devices/frient.js.map +1 -1
- package/dist/devices/ikea.js +1 -1
- package/dist/devices/ikea.js.map +1 -1
- package/dist/devices/iluminize.d.ts.map +1 -1
- package/dist/devices/iluminize.js +16 -9
- package/dist/devices/iluminize.js.map +1 -1
- package/dist/devices/lumi.js +3 -3
- package/dist/devices/lumi.js.map +1 -1
- package/dist/devices/moes.js +1 -1
- package/dist/devices/moes.js.map +1 -1
- package/dist/devices/namron.d.ts.map +1 -1
- package/dist/devices/namron.js +20 -0
- package/dist/devices/namron.js.map +1 -1
- package/dist/devices/philips.d.ts.map +1 -1
- package/dist/devices/philips.js +5 -2
- package/dist/devices/philips.js.map +1 -1
- package/dist/devices/shelly.d.ts.map +1 -1
- package/dist/devices/shelly.js +272 -0
- package/dist/devices/shelly.js.map +1 -1
- package/dist/devices/tuya.d.ts.map +1 -1
- package/dist/devices/tuya.js +217 -2
- package/dist/devices/tuya.js.map +1 -1
- package/dist/devices/zigbeetlc.d.ts.map +1 -1
- package/dist/devices/zigbeetlc.js +2 -1
- package/dist/devices/zigbeetlc.js.map +1 -1
- package/dist/lib/develco.d.ts +13 -0
- package/dist/lib/develco.d.ts.map +1 -1
- package/dist/lib/develco.js +202 -0
- package/dist/lib/develco.js.map +1 -1
- package/dist/models-index.json +1 -1
- package/package.json +1 -1
package/dist/devices/tuya.js
CHANGED
|
@@ -733,6 +733,16 @@ const tzLocal = {
|
|
|
733
733
|
});
|
|
734
734
|
},
|
|
735
735
|
},
|
|
736
|
+
// biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
|
|
737
|
+
TS0004_backlight_mode: {
|
|
738
|
+
key: ["backlight_mode"],
|
|
739
|
+
convertSet: async (entity, key, value, meta) => {
|
|
740
|
+
const lookup = { red_when_on: 0, pink_when_on: 1, red_on_blue_off: 2, pink_on_blue_off: 3 };
|
|
741
|
+
const modeValue = utils.getFromLookup(value, lookup);
|
|
742
|
+
await entity.write("genOnOff", { tuyaBacklightMode: modeValue });
|
|
743
|
+
return { state: { backlight_mode: utils.getFromLookup(modeValue, lookup) } };
|
|
744
|
+
},
|
|
745
|
+
},
|
|
736
746
|
};
|
|
737
747
|
const fzLocal = {
|
|
738
748
|
// biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
|
|
@@ -962,6 +972,17 @@ const fzLocal = {
|
|
|
962
972
|
}
|
|
963
973
|
},
|
|
964
974
|
},
|
|
975
|
+
// biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
|
|
976
|
+
TS0004_backlight_mode: {
|
|
977
|
+
cluster: "genOnOff",
|
|
978
|
+
type: ["attributeReport", "readResponse"],
|
|
979
|
+
convert: (model, msg, publish, options, meta) => {
|
|
980
|
+
if (msg.data.tuyaBacklightMode !== undefined) {
|
|
981
|
+
const backlightLookup = { 0: "red_when_on", 1: "pink_when_on", 2: "red_on_blue_off", 3: "pink_on_blue_off" };
|
|
982
|
+
return { backlight_mode: backlightLookup[msg.data.tuyaBacklightMode] };
|
|
983
|
+
}
|
|
984
|
+
},
|
|
985
|
+
},
|
|
965
986
|
};
|
|
966
987
|
exports.definitions = [
|
|
967
988
|
{
|
|
@@ -1105,7 +1126,7 @@ exports.definitions = [
|
|
|
1105
1126
|
{ vendor: "Cleverio", model: "SS100" },
|
|
1106
1127
|
{ vendor: "HOBEIAN", model: "ZG-102ZA", fingerprint: [{ modelID: "ZG-102Z" }] },
|
|
1107
1128
|
tuya.whitelabel("Niceboy", "ORBIS Windows & Door Sensor", "Door sensor", ["_TZ3000_qrldbmfn"]),
|
|
1108
|
-
tuya.whitelabel("Tuya", "ZD06", "Door window sensor", ["_TZ3000_rcuyhwe3"]),
|
|
1129
|
+
tuya.whitelabel("Tuya", "ZD06", "Door window sensor", ["_TZ3000_rcuyhwe3", "_TZ3000_996rpfy6"]),
|
|
1109
1130
|
tuya.whitelabel("Tuya", "ZD08", "Door sensor", ["_TZ3000_7d8yme6f"]),
|
|
1110
1131
|
tuya.whitelabel("Tuya", "MC500A", "Door sensor", ["_TZ3000_2mbfxlzr"]),
|
|
1111
1132
|
tuya.whitelabel("Tuya", "19DZT", "Door sensor", ["_TZ3000_n2egfsli"]),
|
|
@@ -1123,7 +1144,8 @@ exports.definitions = [
|
|
|
1123
1144
|
const exps = [e.contact(), e.battery(), e.battery_voltage()];
|
|
1124
1145
|
const noTamperModels = [
|
|
1125
1146
|
// manufacturerName for models without a tamper sensor
|
|
1126
|
-
"_TZ3000_rcuyhwe3",
|
|
1147
|
+
"_TZ3000_rcuyhwe3",
|
|
1148
|
+
"_TZ3000_996rpfy6", // Tuya ZD06
|
|
1127
1149
|
"_TZ3000_2mbfxlzr", // Tuya MC500A
|
|
1128
1150
|
"_TZ3000_n2egfsli", // Tuya 19DZT
|
|
1129
1151
|
"_TZ3000_yfekcy3n", // Tuya DS04
|
|
@@ -2256,6 +2278,9 @@ exports.definitions = [
|
|
|
2256
2278
|
color: true,
|
|
2257
2279
|
}),
|
|
2258
2280
|
],
|
|
2281
|
+
meta: {
|
|
2282
|
+
moveToLevelWithOnOffDisable: true,
|
|
2283
|
+
},
|
|
2259
2284
|
},
|
|
2260
2285
|
{
|
|
2261
2286
|
zigbeeModel: ["SM0001"],
|
|
@@ -8786,6 +8811,33 @@ exports.definitions = [
|
|
|
8786
8811
|
await reporting.bind(device.getEndpoint(4), coordinatorEndpoint, ["genOnOff"]);
|
|
8787
8812
|
},
|
|
8788
8813
|
},
|
|
8814
|
+
{
|
|
8815
|
+
fingerprint: tuya.fingerprint("TS0004", ["_TZ3000_ncb6mkx8"]),
|
|
8816
|
+
model: "TS0004_fan_light_switch",
|
|
8817
|
+
vendor: "Tuya",
|
|
8818
|
+
description: "Fan and light controller with 3 speeds",
|
|
8819
|
+
fromZigbee: [fz.on_off, fzLocal.TS0004_backlight_mode],
|
|
8820
|
+
toZigbee: [tz.on_off, tzLocal.TS0004_backlight_mode],
|
|
8821
|
+
exposes: [
|
|
8822
|
+
e.switch().withEndpoint("lights").withDescription("Light control"),
|
|
8823
|
+
e.switch().withEndpoint("low").withDescription("Fan speed: low"),
|
|
8824
|
+
e.switch().withEndpoint("medium").withDescription("Fan speed: medium"),
|
|
8825
|
+
e.switch().withEndpoint("high").withDescription("Fan speed: high"),
|
|
8826
|
+
e
|
|
8827
|
+
.enum("backlight_mode", ea.ALL, ["red_when_on", "pink_when_on", "red_on_blue_off", "pink_on_blue_off"])
|
|
8828
|
+
.withDescription("Backlight color mode"),
|
|
8829
|
+
],
|
|
8830
|
+
endpoint: (device) => {
|
|
8831
|
+
return { lights: 1, high: 2, low: 3, medium: 4 };
|
|
8832
|
+
},
|
|
8833
|
+
meta: { multiEndpoint: true },
|
|
8834
|
+
configure: async (device, coordinatorEndpoint) => {
|
|
8835
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint);
|
|
8836
|
+
for (const ID of [1, 2, 3, 4]) {
|
|
8837
|
+
await reporting.bind(device.getEndpoint(ID), coordinatorEndpoint, ["genOnOff"]);
|
|
8838
|
+
}
|
|
8839
|
+
},
|
|
8840
|
+
},
|
|
8789
8841
|
{
|
|
8790
8842
|
fingerprint: tuya.fingerprint("TS0726", ["_TZ3002_1s0vfmtv", "_TZ3002_gdwja9a7"]),
|
|
8791
8843
|
model: "TS0726_2_gang",
|
|
@@ -14482,6 +14534,165 @@ exports.definitions = [
|
|
|
14482
14534
|
],
|
|
14483
14535
|
},
|
|
14484
14536
|
},
|
|
14537
|
+
{
|
|
14538
|
+
fingerprint: tuya.fingerprint("TS0601", ["_TZE284_aai5grix", "_TZE204_aai5grix"]),
|
|
14539
|
+
model: "MTD285-ZB",
|
|
14540
|
+
vendor: "Wenzhi",
|
|
14541
|
+
description: "24GHz mmWave human presence sensor",
|
|
14542
|
+
extend: [tuya.modernExtend.tuyaBase({ dp: true })],
|
|
14543
|
+
exposes: [
|
|
14544
|
+
e.presence(),
|
|
14545
|
+
e.enum("state", ea.STATE, ["none", "presence", "move"]).withDescription("Presence state"),
|
|
14546
|
+
e.illuminance().withDescription("Measured illuminance"),
|
|
14547
|
+
e
|
|
14548
|
+
.numeric("min_distance", ea.STATE_SET)
|
|
14549
|
+
.withValueMin(0)
|
|
14550
|
+
.withValueMax(8.4)
|
|
14551
|
+
.withValueStep(0.1)
|
|
14552
|
+
.withUnit("m")
|
|
14553
|
+
.withDescription("Minimum detection distance"),
|
|
14554
|
+
e
|
|
14555
|
+
.numeric("max_distance", ea.STATE_SET)
|
|
14556
|
+
.withValueMin(0)
|
|
14557
|
+
.withValueMax(8.4)
|
|
14558
|
+
.withValueStep(0.1)
|
|
14559
|
+
.withUnit("m")
|
|
14560
|
+
.withDescription("Maximum detection distance"),
|
|
14561
|
+
e.numeric("target_distance", ea.STATE).withValueMin(0).withValueMax(9.9).withUnit("m").withDescription("Target distance"),
|
|
14562
|
+
...Array.from({ length: 11 }, (_, i) => e
|
|
14563
|
+
.enum(`gate_enable_${String(i + 1).padStart(2, "0")}`, ea.STATE_SET, ["disable", "enable"])
|
|
14564
|
+
.withDescription(`Distance gate ${i + 1} enable`)),
|
|
14565
|
+
e.numeric("configuration_gate", ea.STATE_SET).withValueMin(1).withValueMax(11).withDescription("Select gate for threshold config"),
|
|
14566
|
+
e.numeric("move_threshold", ea.STATE_SET).withValueMin(0).withValueMax(99).withDescription("Configure motion detection threshold"),
|
|
14567
|
+
e.numeric("presence_threshold", ea.STATE_SET).withValueMin(0).withValueMax(99).withDescription("Configure presence detection threshold"),
|
|
14568
|
+
e.numeric("nearest_target_gate", ea.STATE).withValueMin(0).withValueMax(11).withDescription("Nearest active gate"),
|
|
14569
|
+
e
|
|
14570
|
+
.numeric("target_countdown", ea.STATE)
|
|
14571
|
+
.withValueMin(0)
|
|
14572
|
+
.withValueMax(3600)
|
|
14573
|
+
.withUnit("s")
|
|
14574
|
+
.withDescription("Target timeout countdown (debug only)"),
|
|
14575
|
+
e
|
|
14576
|
+
.numeric("target_velocity", ea.STATE)
|
|
14577
|
+
.withValueMin(-9.99)
|
|
14578
|
+
.withValueMax(9.99)
|
|
14579
|
+
.withUnit("m/s")
|
|
14580
|
+
.withDescription("Target speed with direction"),
|
|
14581
|
+
e.enum("debug_switch", ea.STATE_SET, ["off", "on"]).withDescription("Debug mode toggle"),
|
|
14582
|
+
e
|
|
14583
|
+
.enum("led_mode", ea.STATE_SET, ["silence", "status"]) // same as in the app
|
|
14584
|
+
.withDescription("LED indicator mode"),
|
|
14585
|
+
e.numeric("delay_time", ea.STATE_SET).withValueMin(5).withValueMax(3600).withUnit("s").withDescription("Departure delay time"),
|
|
14586
|
+
e
|
|
14587
|
+
.numeric("block_time", ea.STATE_SET)
|
|
14588
|
+
.withValueMin(0)
|
|
14589
|
+
.withValueMax(10)
|
|
14590
|
+
.withValueStep(0.5)
|
|
14591
|
+
.withUnit("s")
|
|
14592
|
+
.withDescription("Block time after unoccupancy"), // same as in the app
|
|
14593
|
+
e
|
|
14594
|
+
.enum("judge_logic", ea.STATE_SET, ["large_move", "small_move", "custom_move"]) // same as in the app
|
|
14595
|
+
.withDescription("Presence detection algorithm"),
|
|
14596
|
+
e
|
|
14597
|
+
.enum("environmental_noise_collect", ea.STATE_SET, ["start", "ongoing", "complete"])
|
|
14598
|
+
.withDescription("Environmental background noise collection status"),
|
|
14599
|
+
e.enum("device_control", ea.STATE_SET, ["no_action", "restart", "reset_param"]).withDescription("Device control commands"),
|
|
14600
|
+
e.enum("presence_sensitivity", ea.STATE_SET, ["high", "medium", "low", "custom"]).withDescription("Presence sensitivity"),
|
|
14601
|
+
e.enum("move_sensitivity", ea.STATE_SET, ["high", "medium", "low", "custom"]).withDescription("Motion sensitivity"),
|
|
14602
|
+
e
|
|
14603
|
+
.enum("scene_mode", ea.STATE_SET, [
|
|
14604
|
+
"custom", // more fitting and same as in the app
|
|
14605
|
+
"toilet",
|
|
14606
|
+
"kitchen",
|
|
14607
|
+
"corridor",
|
|
14608
|
+
"bedroom",
|
|
14609
|
+
"living_room",
|
|
14610
|
+
"meeting_room", // same as in the app
|
|
14611
|
+
])
|
|
14612
|
+
.withDescription("Scene mode preset"),
|
|
14613
|
+
e.binary("illuminance_report", ea.STATE_SET, "on", "off").withDescription("Illuminance reporting toggle"),
|
|
14614
|
+
e.binary("move_detect", ea.STATE_SET, "on", "off").withDescription("Motion detection toggle"),
|
|
14615
|
+
e.binary("distance_report", ea.STATE_SET, "on", "off").withDescription("Distance reporting toggle"),
|
|
14616
|
+
e.binary("speed_report", ea.STATE_SET, "on", "off").withDescription("Speed reporting toggle"),
|
|
14617
|
+
],
|
|
14618
|
+
meta: {
|
|
14619
|
+
tuyaDatapoints: [
|
|
14620
|
+
[
|
|
14621
|
+
1,
|
|
14622
|
+
null,
|
|
14623
|
+
{
|
|
14624
|
+
from: (v) => ({
|
|
14625
|
+
presence: v !== 0,
|
|
14626
|
+
state: v === 0 ? "none" : v === 1 ? "presence" : "move",
|
|
14627
|
+
}),
|
|
14628
|
+
},
|
|
14629
|
+
],
|
|
14630
|
+
[3, "min_distance", tuya.valueConverter.divideBy10],
|
|
14631
|
+
[4, "max_distance", tuya.valueConverter.divideBy10],
|
|
14632
|
+
[9, "target_distance", tuya.valueConverter.divideBy10],
|
|
14633
|
+
[101, "gate_enable_01", tuya.valueConverterBasic.lookup({ disable: tuya.enum(0), enable: tuya.enum(1) })],
|
|
14634
|
+
[102, "gate_enable_02", tuya.valueConverterBasic.lookup({ disable: tuya.enum(0), enable: tuya.enum(1) })],
|
|
14635
|
+
[103, "gate_enable_03", tuya.valueConverterBasic.lookup({ disable: tuya.enum(0), enable: tuya.enum(1) })],
|
|
14636
|
+
[104, "gate_enable_04", tuya.valueConverterBasic.lookup({ disable: tuya.enum(0), enable: tuya.enum(1) })],
|
|
14637
|
+
[105, "gate_enable_05", tuya.valueConverterBasic.lookup({ disable: tuya.enum(0), enable: tuya.enum(1) })],
|
|
14638
|
+
[106, "gate_enable_06", tuya.valueConverterBasic.lookup({ disable: tuya.enum(0), enable: tuya.enum(1) })],
|
|
14639
|
+
[107, "gate_enable_07", tuya.valueConverterBasic.lookup({ disable: tuya.enum(0), enable: tuya.enum(1) })],
|
|
14640
|
+
[108, "gate_enable_08", tuya.valueConverterBasic.lookup({ disable: tuya.enum(0), enable: tuya.enum(1) })],
|
|
14641
|
+
[109, "gate_enable_09", tuya.valueConverterBasic.lookup({ disable: tuya.enum(0), enable: tuya.enum(1) })],
|
|
14642
|
+
[110, "gate_enable_10", tuya.valueConverterBasic.lookup({ disable: tuya.enum(0), enable: tuya.enum(1) })],
|
|
14643
|
+
[111, "gate_enable_11", tuya.valueConverterBasic.lookup({ disable: tuya.enum(0), enable: tuya.enum(1) })],
|
|
14644
|
+
[112, "configuration_gate", tuya.valueConverter.raw],
|
|
14645
|
+
[113, "move_threshold", tuya.valueConverter.raw],
|
|
14646
|
+
[114, "presence_threshold", tuya.valueConverter.raw],
|
|
14647
|
+
[115, "nearest_target_gate", tuya.valueConverter.raw],
|
|
14648
|
+
[116, "target_countdown", tuya.valueConverter.raw],
|
|
14649
|
+
[117, "target_velocity", tuya.valueConverter.divideBy100],
|
|
14650
|
+
[118, "debug_switch", tuya.valueConverterBasic.lookup({ off: tuya.enum(0), on: tuya.enum(1) })],
|
|
14651
|
+
[119, "led_mode", tuya.valueConverterBasic.lookup({ silence: tuya.enum(0), status: tuya.enum(1) })],
|
|
14652
|
+
[120, "delay_time", tuya.valueConverter.raw],
|
|
14653
|
+
[121, "block_time", tuya.valueConverter.divideBy10],
|
|
14654
|
+
[
|
|
14655
|
+
122,
|
|
14656
|
+
"judge_logic",
|
|
14657
|
+
tuya.valueConverterBasic.lookup({ large_move: tuya.enum(0), small_move: tuya.enum(1), custom_move: tuya.enum(2) }),
|
|
14658
|
+
],
|
|
14659
|
+
[
|
|
14660
|
+
123,
|
|
14661
|
+
"environmental_noise_collect",
|
|
14662
|
+
tuya.valueConverterBasic.lookup({ start: tuya.enum(0), ongoing: tuya.enum(1), complete: tuya.enum(2) }),
|
|
14663
|
+
],
|
|
14664
|
+
[124, "device_control", tuya.valueConverterBasic.lookup({ no_action: tuya.enum(0), restart: tuya.enum(1), reset_param: tuya.enum(2) })],
|
|
14665
|
+
[125, "illuminance", tuya.valueConverter.raw],
|
|
14666
|
+
[
|
|
14667
|
+
126,
|
|
14668
|
+
"presence_sensitivity",
|
|
14669
|
+
tuya.valueConverterBasic.lookup({ high: tuya.enum(0), medium: tuya.enum(1), low: tuya.enum(2), custom: tuya.enum(3) }),
|
|
14670
|
+
],
|
|
14671
|
+
[
|
|
14672
|
+
127,
|
|
14673
|
+
"move_sensitivity",
|
|
14674
|
+
tuya.valueConverterBasic.lookup({ high: tuya.enum(0), medium: tuya.enum(1), low: tuya.enum(2), custom: tuya.enum(3) }),
|
|
14675
|
+
],
|
|
14676
|
+
[
|
|
14677
|
+
128,
|
|
14678
|
+
"scene_mode",
|
|
14679
|
+
tuya.valueConverterBasic.lookup({
|
|
14680
|
+
custom: tuya.enum(0), // more fitting and same as in the app
|
|
14681
|
+
toilet: tuya.enum(1),
|
|
14682
|
+
kitchen: tuya.enum(2),
|
|
14683
|
+
corridor: tuya.enum(3),
|
|
14684
|
+
bedroom: tuya.enum(4),
|
|
14685
|
+
living_room: tuya.enum(5),
|
|
14686
|
+
meeting_room: tuya.enum(6), // same as in the app
|
|
14687
|
+
}),
|
|
14688
|
+
],
|
|
14689
|
+
[129, "illuminance_report", tuya.valueConverterBasic.lookup({ off: tuya.enum(0), on: tuya.enum(1) })],
|
|
14690
|
+
[130, "move_detect", tuya.valueConverterBasic.lookup({ off: tuya.enum(0), on: tuya.enum(1) })],
|
|
14691
|
+
[131, "distance_report", tuya.valueConverterBasic.lookup({ off: tuya.enum(0), on: tuya.enum(1) })],
|
|
14692
|
+
[132, "speed_report", tuya.valueConverterBasic.lookup({ off: tuya.enum(0), on: tuya.enum(1) })],
|
|
14693
|
+
],
|
|
14694
|
+
},
|
|
14695
|
+
},
|
|
14485
14696
|
{
|
|
14486
14697
|
fingerprint: tuya.fingerprint("TS0601", ["_TZE204_81yrt3lo", "_TZE284_81yrt3lo"]),
|
|
14487
14698
|
model: "PJ-1203A",
|
|
@@ -16209,6 +16420,10 @@ exports.definitions = [
|
|
|
16209
16420
|
.withDescription("Temperature threshold setting"),
|
|
16210
16421
|
e.binary("clear_fault", ea.STATE_SET, "ON", "OFF").withDescription("Recover from an incident"),
|
|
16211
16422
|
e.binary("factory_reset", ea.STATE_SET, "ON", "OFF").withDescription("Back to factory settings, USE WITH CAUTION"),
|
|
16423
|
+
e
|
|
16424
|
+
.binary("auto_reclosing", ea.STATE_SET, "ON", "OFF")
|
|
16425
|
+
.withLabel("Auto-Reclosing")
|
|
16426
|
+
.withDescription("When the circuit breaker trips due to voltage protection, it will automatically close when the circuit voItage returns to normal.(Note: For safety reasons, this function only applies to trips caused by voltage)"),
|
|
16212
16427
|
],
|
|
16213
16428
|
meta: {
|
|
16214
16429
|
tuyaDatapoints: [
|