zigbee-herdsman-converters 25.68.0 → 25.70.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 +55 -0
- package/dist/converters/toZigbee.d.ts.map +1 -1
- package/dist/converters/toZigbee.js +12 -1
- package/dist/converters/toZigbee.js.map +1 -1
- package/dist/devices/aurora_lighting.d.ts.map +1 -1
- package/dist/devices/aurora_lighting.js +7 -0
- package/dist/devices/aurora_lighting.js.map +1 -1
- package/dist/devices/bosch.d.ts.map +1 -1
- package/dist/devices/bosch.js +18 -2
- package/dist/devices/bosch.js.map +1 -1
- package/dist/devices/develco.d.ts.map +1 -1
- package/dist/devices/develco.js +7 -1
- package/dist/devices/develco.js.map +1 -1
- package/dist/devices/domraem.d.ts.map +1 -1
- package/dist/devices/domraem.js +4 -1
- package/dist/devices/domraem.js.map +1 -1
- package/dist/devices/efekta.js +14 -14
- package/dist/devices/efekta.js.map +1 -1
- package/dist/devices/envilar.d.ts.map +1 -1
- package/dist/devices/envilar.js +7 -0
- package/dist/devices/envilar.js.map +1 -1
- package/dist/devices/gledopto.js +1 -1
- package/dist/devices/gledopto.js.map +1 -1
- package/dist/devices/innr.d.ts.map +1 -1
- package/dist/devices/innr.js +2 -0
- package/dist/devices/innr.js.map +1 -1
- package/dist/devices/lightsolutions.d.ts.map +1 -1
- package/dist/devices/lightsolutions.js +7 -0
- package/dist/devices/lightsolutions.js.map +1 -1
- package/dist/devices/moes.js +1 -1
- package/dist/devices/moes.js.map +1 -1
- package/dist/devices/namron.js +1 -1
- package/dist/devices/namron.js.map +1 -1
- package/dist/devices/paulmann.d.ts.map +1 -1
- package/dist/devices/paulmann.js +8 -0
- package/dist/devices/paulmann.js.map +1 -1
- package/dist/devices/philips.d.ts.map +1 -1
- package/dist/devices/philips.js +23 -5
- package/dist/devices/philips.js.map +1 -1
- package/dist/devices/shelly.d.ts.map +1 -1
- package/dist/devices/shelly.js +97 -1
- package/dist/devices/shelly.js.map +1 -1
- package/dist/devices/slacky_diy.d.ts.map +1 -1
- package/dist/devices/slacky_diy.js +284 -1
- package/dist/devices/slacky_diy.js.map +1 -1
- package/dist/devices/sonoff.d.ts.map +1 -1
- package/dist/devices/sonoff.js +1 -0
- package/dist/devices/sonoff.js.map +1 -1
- package/dist/devices/tuya.d.ts.map +1 -1
- package/dist/devices/tuya.js +117 -39
- package/dist/devices/tuya.js.map +1 -1
- package/dist/lib/bosch.d.ts +3 -4
- package/dist/lib/bosch.d.ts.map +1 -1
- package/dist/lib/bosch.js +16 -164
- package/dist/lib/bosch.js.map +1 -1
- package/dist/lib/constants.d.ts +1 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +2 -1
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/lumi.js +1 -1
- package/dist/lib/lumi.js.map +1 -1
- package/dist/lib/modernExtend.d.ts.map +1 -1
- package/dist/lib/modernExtend.js +5 -13
- package/dist/lib/modernExtend.js.map +1 -1
- package/dist/lib/types.d.ts +1 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/models-index.json +1 -1
- package/package.json +1 -1
package/dist/lib/bosch.d.ts
CHANGED
|
@@ -320,6 +320,9 @@ export declare const boschThermostatExtend: {
|
|
|
320
320
|
heaterType: () => ModernExtend;
|
|
321
321
|
valveType: () => ModernExtend;
|
|
322
322
|
humidity: () => ModernExtend;
|
|
323
|
+
operatingMode: (args?: {
|
|
324
|
+
enableReporting: boolean;
|
|
325
|
+
}) => ModernExtend;
|
|
323
326
|
windowOpenMode: (args?: {
|
|
324
327
|
enableReporting: boolean;
|
|
325
328
|
}) => ModernExtend;
|
|
@@ -336,12 +339,8 @@ export declare const boschThermostatExtend: {
|
|
|
336
339
|
customHeatingDemand: () => ModernExtend;
|
|
337
340
|
rmBattery: () => ModernExtend;
|
|
338
341
|
rmThermostat: () => ModernExtend;
|
|
339
|
-
customSystemMode: () => ModernExtend;
|
|
340
342
|
raThermostat: () => ModernExtend;
|
|
341
343
|
customRunningState: () => ModernExtend;
|
|
342
|
-
operatingMode: (args?: {
|
|
343
|
-
enableReporting: boolean;
|
|
344
|
-
}) => ModernExtend;
|
|
345
344
|
boostHeating: (args?: {
|
|
346
345
|
enableReporting: boolean;
|
|
347
346
|
}) => ModernExtend;
|
package/dist/lib/bosch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bosch.d.ts","sourceRoot":"","sources":["../../src/lib/bosch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAQ,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wCAAwC,CAAC;AAKvE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAIrD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,gBAAgB,CAAC;AAGzD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"bosch.d.ts","sourceRoot":"","sources":["../../src/lib/bosch.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/bosch.js
CHANGED
|
@@ -2429,6 +2429,7 @@ const boschThermostatLookup = {
|
|
|
2429
2429
|
systemModes: {
|
|
2430
2430
|
heat: 0x04,
|
|
2431
2431
|
cool: 0x03,
|
|
2432
|
+
off: 0x00,
|
|
2432
2433
|
},
|
|
2433
2434
|
raRunningStates: ["idle", "heat"],
|
|
2434
2435
|
heaterType: {
|
|
@@ -2516,8 +2517,17 @@ exports.boschThermostatExtend = {
|
|
|
2516
2517
|
entityCategory: "config",
|
|
2517
2518
|
}),
|
|
2518
2519
|
humidity: () => m.humidity({ reporting: false }),
|
|
2520
|
+
operatingMode: (args) => m.enumLookup({
|
|
2521
|
+
name: "operating_mode",
|
|
2522
|
+
cluster: "hvacThermostat",
|
|
2523
|
+
attribute: "operatingMode",
|
|
2524
|
+
description: "Bosch-specific operating mode",
|
|
2525
|
+
lookup: { schedule: 0x00, manual: 0x01, pause: 0x05 },
|
|
2526
|
+
reporting: args?.enableReporting ? { min: "MIN", max: "MAX", change: null } : false,
|
|
2527
|
+
entityCategory: "config",
|
|
2528
|
+
}),
|
|
2519
2529
|
windowOpenMode: (args) => m.binary({
|
|
2520
|
-
name: "
|
|
2530
|
+
name: "window_detection",
|
|
2521
2531
|
cluster: "hvacThermostat",
|
|
2522
2532
|
attribute: "windowOpenMode",
|
|
2523
2533
|
description: "Activates the window open mode, where the thermostat disables any heating/cooling " +
|
|
@@ -2637,7 +2647,7 @@ exports.boschThermostatExtend = {
|
|
|
2637
2647
|
rmThermostat: () => {
|
|
2638
2648
|
const thermostat = m.thermostat({
|
|
2639
2649
|
localTemperature: {
|
|
2640
|
-
configure: { reporting:
|
|
2650
|
+
configure: { reporting: { min: 30, max: 900, change: 10 } },
|
|
2641
2651
|
},
|
|
2642
2652
|
localTemperatureCalibration: {
|
|
2643
2653
|
values: { min: -5, max: 5, step: 0.1 },
|
|
@@ -2651,106 +2661,23 @@ exports.boschThermostatExtend = {
|
|
|
2651
2661
|
configure: { reporting: { min: "10_SECONDS", max: "MAX", change: 50 } },
|
|
2652
2662
|
},
|
|
2653
2663
|
systemMode: {
|
|
2654
|
-
values: ["heat", "cool"],
|
|
2655
|
-
|
|
2656
|
-
configure: { skip: true },
|
|
2664
|
+
values: ["off", "heat", "cool"],
|
|
2665
|
+
configure: { reporting: { min: "MIN", max: "MAX", change: null } },
|
|
2657
2666
|
},
|
|
2658
2667
|
runningState: {
|
|
2659
2668
|
values: ["idle", "heat", "cool"],
|
|
2660
2669
|
configure: { reporting: { min: "MIN", max: "MAX", change: null } },
|
|
2661
2670
|
},
|
|
2662
2671
|
});
|
|
2663
|
-
const
|
|
2664
|
-
const returnedThermostat = thermostat.exposes;
|
|
2665
|
-
if (utils.isDummyDevice(device)) {
|
|
2666
|
-
return returnedThermostat;
|
|
2667
|
-
}
|
|
2668
|
-
let currentSystemMode;
|
|
2669
|
-
try {
|
|
2670
|
-
currentSystemMode = utils.getFromLookupByValue(device.getEndpoint(1).getClusterAttributeValue("hvacThermostat", "systemMode"), boschThermostatLookup.systemModes);
|
|
2671
|
-
}
|
|
2672
|
-
catch {
|
|
2673
|
-
currentSystemMode = "heat";
|
|
2674
|
-
}
|
|
2675
|
-
// The thermostat is a singleton, thus the values must be set
|
|
2676
|
-
// manually as filtering will lead to an array without
|
|
2677
|
-
// heat/cool in them after two systemMode changes.
|
|
2678
|
-
returnedThermostat[0].features.forEach((exposedAttribute, index, array) => {
|
|
2679
|
-
if (exposedAttribute.type === "enum") {
|
|
2680
|
-
if (exposedAttribute.name === "system_mode") {
|
|
2681
|
-
exposedAttribute.label = "Active system mode";
|
|
2682
|
-
exposedAttribute.description =
|
|
2683
|
-
"Currently used system mode by the thermostat. This field is primarily " +
|
|
2684
|
-
"used to configure the thermostat in Home Assistant correctly.";
|
|
2685
|
-
exposedAttribute.values = [currentSystemMode];
|
|
2686
|
-
exposedAttribute.access = ea.STATE;
|
|
2687
|
-
}
|
|
2688
|
-
if (exposedAttribute.name === "running_state") {
|
|
2689
|
-
exposedAttribute.values = ["idle", currentSystemMode];
|
|
2690
|
-
}
|
|
2691
|
-
}
|
|
2692
|
-
});
|
|
2693
|
-
return returnedThermostat;
|
|
2694
|
-
};
|
|
2672
|
+
const exposes = thermostat.exposes;
|
|
2695
2673
|
return {
|
|
2696
|
-
exposes:
|
|
2674
|
+
exposes: exposes,
|
|
2697
2675
|
fromZigbee: thermostat.fromZigbee,
|
|
2698
2676
|
toZigbee: thermostat.toZigbee,
|
|
2699
2677
|
configure: thermostat.configure,
|
|
2700
2678
|
isModernExtend: true,
|
|
2701
2679
|
};
|
|
2702
2680
|
},
|
|
2703
|
-
customSystemMode: () => {
|
|
2704
|
-
const exposes = [
|
|
2705
|
-
e
|
|
2706
|
-
.enum("custom_system_mode", ea.ALL, Object.keys(boschThermostatLookup.systemModes))
|
|
2707
|
-
.withLabel("Available system modes")
|
|
2708
|
-
.withDescription("Select if the thermostat is connected to a heating or a cooling device")
|
|
2709
|
-
.withCategory("config"),
|
|
2710
|
-
];
|
|
2711
|
-
const fromZigbee = [
|
|
2712
|
-
{
|
|
2713
|
-
cluster: "hvacThermostat",
|
|
2714
|
-
type: ["attributeReport", "readResponse"],
|
|
2715
|
-
convert: (model, msg, publish, options, meta) => {
|
|
2716
|
-
const result = {};
|
|
2717
|
-
const data = msg.data;
|
|
2718
|
-
if (data.systemMode !== undefined) {
|
|
2719
|
-
result.custom_system_mode = utils.getFromLookupByValue(data.systemMode, boschThermostatLookup.systemModes);
|
|
2720
|
-
meta.deviceExposesChanged();
|
|
2721
|
-
}
|
|
2722
|
-
return result;
|
|
2723
|
-
},
|
|
2724
|
-
},
|
|
2725
|
-
];
|
|
2726
|
-
const toZigbee = [
|
|
2727
|
-
{
|
|
2728
|
-
key: ["custom_system_mode"],
|
|
2729
|
-
convertSet: async (entity, key, value, meta) => {
|
|
2730
|
-
await entity.write("hvacThermostat", {
|
|
2731
|
-
systemMode: utils.toNumber(utils.getFromLookup(value, boschThermostatLookup.systemModes)),
|
|
2732
|
-
});
|
|
2733
|
-
return { state: { custom_system_mode: value } };
|
|
2734
|
-
},
|
|
2735
|
-
convertGet: async (entity, key, meta) => {
|
|
2736
|
-
await entity.read("hvacThermostat", ["systemMode"]);
|
|
2737
|
-
},
|
|
2738
|
-
},
|
|
2739
|
-
];
|
|
2740
|
-
const configure = [
|
|
2741
|
-
m.setupConfigureForReporting("hvacThermostat", "systemMode", {
|
|
2742
|
-
config: false,
|
|
2743
|
-
access: ea.ALL,
|
|
2744
|
-
}),
|
|
2745
|
-
];
|
|
2746
|
-
return {
|
|
2747
|
-
exposes,
|
|
2748
|
-
fromZigbee,
|
|
2749
|
-
toZigbee,
|
|
2750
|
-
configure,
|
|
2751
|
-
isModernExtend: true,
|
|
2752
|
-
};
|
|
2753
|
-
},
|
|
2754
2681
|
raThermostat: () => {
|
|
2755
2682
|
// Native thermostat
|
|
2756
2683
|
const thermostat = m.thermostat({
|
|
@@ -2854,81 +2781,6 @@ exports.boschThermostatExtend = {
|
|
|
2854
2781
|
isModernExtend: true,
|
|
2855
2782
|
};
|
|
2856
2783
|
},
|
|
2857
|
-
operatingMode: (args) => {
|
|
2858
|
-
const operatingModeLookup = { schedule: 0x00, manual: 0x01, pause: 0x05 };
|
|
2859
|
-
const operatingMode = m.enumLookup({
|
|
2860
|
-
name: "operating_mode",
|
|
2861
|
-
cluster: "hvacThermostat",
|
|
2862
|
-
attribute: "operatingMode",
|
|
2863
|
-
description: "Bosch-specific operating mode. This is being used as mode on the exposed thermostat when using Home Assistant.",
|
|
2864
|
-
lookup: operatingModeLookup,
|
|
2865
|
-
reporting: args?.enableReporting ? { min: "MIN", max: "MAX", change: null } : false,
|
|
2866
|
-
entityCategory: "config",
|
|
2867
|
-
});
|
|
2868
|
-
const exposes = operatingMode.exposes;
|
|
2869
|
-
const fromZigbee = operatingMode.fromZigbee;
|
|
2870
|
-
const toZigbee = operatingMode.toZigbee;
|
|
2871
|
-
const configure = operatingMode.configure;
|
|
2872
|
-
const removeLowAndHighTemperatureFields = (payload) => {
|
|
2873
|
-
payload.temperature_high_command_topic = undefined;
|
|
2874
|
-
payload.temperature_low_command_topic = undefined;
|
|
2875
|
-
payload.temperature_high_state_template = undefined;
|
|
2876
|
-
payload.temperature_low_state_template = undefined;
|
|
2877
|
-
payload.temperature_high_state_topic = undefined;
|
|
2878
|
-
payload.temperature_low_state_topic = undefined;
|
|
2879
|
-
};
|
|
2880
|
-
// Override the payload send to Home Assistant to achieve the following:
|
|
2881
|
-
// 1. Use the Bosch operating mode instead of system modes
|
|
2882
|
-
// See: https://github.com/Koenkk/zigbee2mqtt/pull/23075#issue-2355829475
|
|
2883
|
-
// 2. Remove setpoints not compatible with the currently used system mode
|
|
2884
|
-
// See: https://github.com/Koenkk/zigbee2mqtt/issues/28892
|
|
2885
|
-
const meta = {
|
|
2886
|
-
overrideHaDiscoveryPayload: (payload) => {
|
|
2887
|
-
if (payload.modes !== undefined) {
|
|
2888
|
-
if (payload.modes.includes("heat")) {
|
|
2889
|
-
payload.mode_command_template =
|
|
2890
|
-
`{% set values = { 'auto':'schedule', 'heat':'manual', 'off':'pause' } %}` +
|
|
2891
|
-
`{"operating_mode": "{{ values[value] if value in values.keys() else 'pause' }}"}`;
|
|
2892
|
-
payload.mode_state_template =
|
|
2893
|
-
`{% set values = { 'schedule':'auto', 'manual':'heat', 'pause':'off' } %}` +
|
|
2894
|
-
"{% set value = value_json.operating_mode %}" +
|
|
2895
|
-
`{{ values[value] if value in values.keys() else 'off' }}`;
|
|
2896
|
-
if (payload.temperature_low_command_topic !== undefined) {
|
|
2897
|
-
payload.temperature_command_topic = payload.temperature_low_command_topic;
|
|
2898
|
-
payload.temperature_state_template = payload.temperature_low_state_template;
|
|
2899
|
-
payload.temperature_state_topic = payload.temperature_low_state_topic;
|
|
2900
|
-
removeLowAndHighTemperatureFields(payload);
|
|
2901
|
-
}
|
|
2902
|
-
}
|
|
2903
|
-
else if (payload.modes.includes("cool")) {
|
|
2904
|
-
payload.mode_command_template =
|
|
2905
|
-
`{% set values = { 'auto':'schedule', 'cool':'manual', 'off':'pause' } %}` +
|
|
2906
|
-
`{"operating_mode": "{{ values[value] if value in values.keys() else 'pause' }}"}`;
|
|
2907
|
-
payload.mode_state_template =
|
|
2908
|
-
`{% set values = { 'schedule':'auto', 'manual':'cool', 'pause':'off' } %}` +
|
|
2909
|
-
"{% set value = value_json.operating_mode %}" +
|
|
2910
|
-
`{{ values[value] if value in values.keys() else 'off' }}`;
|
|
2911
|
-
if (payload.temperature_high_command_topic !== undefined) {
|
|
2912
|
-
payload.temperature_command_topic = payload.temperature_high_command_topic;
|
|
2913
|
-
payload.temperature_state_template = payload.temperature_high_state_template;
|
|
2914
|
-
payload.temperature_state_topic = payload.temperature_high_state_topic;
|
|
2915
|
-
removeLowAndHighTemperatureFields(payload);
|
|
2916
|
-
}
|
|
2917
|
-
}
|
|
2918
|
-
payload.modes = ["off", ...payload.modes, "auto"];
|
|
2919
|
-
payload.mode_command_topic = payload.mode_command_topic.replace("/system_mode", "");
|
|
2920
|
-
}
|
|
2921
|
-
},
|
|
2922
|
-
};
|
|
2923
|
-
return {
|
|
2924
|
-
exposes,
|
|
2925
|
-
fromZigbee,
|
|
2926
|
-
toZigbee,
|
|
2927
|
-
configure,
|
|
2928
|
-
meta,
|
|
2929
|
-
isModernExtend: true,
|
|
2930
|
-
};
|
|
2931
|
-
},
|
|
2932
2784
|
boostHeating: (args) => {
|
|
2933
2785
|
const boostHeatingLookup = {
|
|
2934
2786
|
OFF: 0x00,
|