zigbee-herdsman-converters 25.45.0 → 25.46.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 +21 -0
- package/dist/devices/bosch.d.ts.map +1 -1
- package/dist/devices/bosch.js +64 -514
- package/dist/devices/bosch.js.map +1 -1
- package/dist/devices/box.d.ts.map +1 -1
- package/dist/devices/box.js +5 -4
- package/dist/devices/box.js.map +1 -1
- package/dist/devices/elko.js +4 -4
- package/dist/devices/elko.js.map +1 -1
- package/dist/devices/gewiss.js +4 -4
- package/dist/devices/gewiss.js.map +1 -1
- package/dist/devices/innr.d.ts.map +1 -1
- package/dist/devices/innr.js +8 -1
- package/dist/devices/innr.js.map +1 -1
- package/dist/devices/lumi.d.ts.map +1 -1
- package/dist/devices/lumi.js +11 -6
- package/dist/devices/lumi.js.map +1 -1
- package/dist/devices/paulmann.d.ts.map +1 -1
- package/dist/devices/paulmann.js +10 -3
- package/dist/devices/paulmann.js.map +1 -1
- package/dist/devices/philips.d.ts.map +1 -1
- package/dist/devices/philips.js +6 -9
- package/dist/devices/philips.js.map +1 -1
- package/dist/devices/sengled.js +1 -1
- package/dist/devices/sengled.js.map +1 -1
- package/dist/devices/sonoff.d.ts.map +1 -1
- package/dist/devices/sonoff.js +9 -0
- package/dist/devices/sonoff.js.map +1 -1
- package/dist/devices/third_reality.d.ts.map +1 -1
- package/dist/devices/third_reality.js +20 -0
- package/dist/devices/third_reality.js.map +1 -1
- package/dist/devices/tuya.d.ts.map +1 -1
- package/dist/devices/tuya.js +63 -1
- package/dist/devices/tuya.js.map +1 -1
- package/dist/devices/wirenboard.js +1 -1
- package/dist/devices/wirenboard.js.map +1 -1
- package/dist/lib/bosch.d.ts +107 -3
- package/dist/lib/bosch.d.ts.map +1 -1
- package/dist/lib/bosch.js +751 -23
- package/dist/lib/bosch.js.map +1 -1
- package/dist/lib/exposes.d.ts +0 -1
- package/dist/lib/exposes.d.ts.map +1 -1
- package/dist/lib/exposes.js +4 -8
- package/dist/lib/exposes.js.map +1 -1
- package/dist/lib/generateDefinition.js +2 -2
- package/dist/lib/generateDefinition.js.map +1 -1
- package/dist/lib/modernExtend.d.ts +28 -10
- package/dist/lib/modernExtend.d.ts.map +1 -1
- package/dist/lib/modernExtend.js +71 -24
- package/dist/lib/modernExtend.js.map +1 -1
- package/dist/lib/utils.js +3 -3
- package/dist/lib/utils.js.map +1 -1
- package/dist/models-index.json +1 -1
- package/package.json +1 -1
package/dist/devices/bosch.js
CHANGED
|
@@ -36,9 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.definitions = void 0;
|
|
37
37
|
const zigbee_herdsman_1 = require("zigbee-herdsman");
|
|
38
38
|
const fz = __importStar(require("../converters/fromZigbee"));
|
|
39
|
-
const tz = __importStar(require("../converters/toZigbee"));
|
|
40
39
|
const bosch_1 = require("../lib/bosch");
|
|
41
|
-
const constants = __importStar(require("../lib/constants"));
|
|
42
40
|
const constants_1 = require("../lib/constants");
|
|
43
41
|
const exposes = __importStar(require("../lib/exposes"));
|
|
44
42
|
const logger_1 = require("../lib/logger");
|
|
@@ -110,258 +108,6 @@ const boschBmctDzSettings = {
|
|
|
110
108
|
hasDualSwitchInputs: false,
|
|
111
109
|
};
|
|
112
110
|
const boschExtend = {
|
|
113
|
-
hvacThermostatCluster: () => m.deviceAddCustomCluster("hvacThermostat", {
|
|
114
|
-
ID: zigbee_herdsman_1.Zcl.Clusters.hvacThermostat.ID,
|
|
115
|
-
attributes: {
|
|
116
|
-
operatingMode: {
|
|
117
|
-
ID: 0x4007,
|
|
118
|
-
type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
|
|
119
|
-
manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.ROBERT_BOSCH_GMBH,
|
|
120
|
-
},
|
|
121
|
-
heatingDemand: {
|
|
122
|
-
ID: 0x4020,
|
|
123
|
-
type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
|
|
124
|
-
manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.ROBERT_BOSCH_GMBH,
|
|
125
|
-
},
|
|
126
|
-
valveAdaptStatus: {
|
|
127
|
-
ID: 0x4022,
|
|
128
|
-
type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
|
|
129
|
-
manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.ROBERT_BOSCH_GMBH,
|
|
130
|
-
},
|
|
131
|
-
remoteTemperature: {
|
|
132
|
-
ID: 0x4040,
|
|
133
|
-
type: zigbee_herdsman_1.Zcl.DataType.INT16,
|
|
134
|
-
manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.ROBERT_BOSCH_GMBH,
|
|
135
|
-
},
|
|
136
|
-
windowDetection: {
|
|
137
|
-
ID: 0x4042,
|
|
138
|
-
type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
|
|
139
|
-
manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.ROBERT_BOSCH_GMBH,
|
|
140
|
-
},
|
|
141
|
-
boostHeating: {
|
|
142
|
-
ID: 0x4043,
|
|
143
|
-
type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
|
|
144
|
-
manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.ROBERT_BOSCH_GMBH,
|
|
145
|
-
},
|
|
146
|
-
},
|
|
147
|
-
commands: {
|
|
148
|
-
calibrateValve: {
|
|
149
|
-
ID: 0x41,
|
|
150
|
-
parameters: [],
|
|
151
|
-
},
|
|
152
|
-
},
|
|
153
|
-
commandsResponse: {},
|
|
154
|
-
}),
|
|
155
|
-
hvacUserInterfaceCfgCluster: () => m.deviceAddCustomCluster("hvacUserInterfaceCfg", {
|
|
156
|
-
ID: zigbee_herdsman_1.Zcl.Clusters.hvacUserInterfaceCfg.ID,
|
|
157
|
-
attributes: {
|
|
158
|
-
displayOrientation: {
|
|
159
|
-
ID: 0x400b,
|
|
160
|
-
type: zigbee_herdsman_1.Zcl.DataType.UINT8,
|
|
161
|
-
manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.ROBERT_BOSCH_GMBH,
|
|
162
|
-
},
|
|
163
|
-
displayedTemperature: {
|
|
164
|
-
ID: 0x4039,
|
|
165
|
-
type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
|
|
166
|
-
manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.ROBERT_BOSCH_GMBH,
|
|
167
|
-
},
|
|
168
|
-
displayOntime: {
|
|
169
|
-
ID: 0x403a,
|
|
170
|
-
type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
|
|
171
|
-
manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.ROBERT_BOSCH_GMBH,
|
|
172
|
-
},
|
|
173
|
-
displayBrightness: {
|
|
174
|
-
ID: 0x403b,
|
|
175
|
-
type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
|
|
176
|
-
manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.ROBERT_BOSCH_GMBH,
|
|
177
|
-
},
|
|
178
|
-
},
|
|
179
|
-
commands: {},
|
|
180
|
-
commandsResponse: {},
|
|
181
|
-
}),
|
|
182
|
-
operatingMode: () => m.enumLookup({
|
|
183
|
-
name: "operating_mode",
|
|
184
|
-
cluster: "hvacThermostat",
|
|
185
|
-
attribute: "operatingMode",
|
|
186
|
-
reporting: { min: "10_SECONDS", max: "MAX", change: null },
|
|
187
|
-
description: "Bosch-specific operating mode (overrides system mode)",
|
|
188
|
-
lookup: { schedule: 0x00, manual: 0x01, pause: 0x05 },
|
|
189
|
-
zigbeeCommandOptions: bosch_1.manufacturerOptions,
|
|
190
|
-
}),
|
|
191
|
-
windowDetection: () => m.binary({
|
|
192
|
-
name: "window_detection",
|
|
193
|
-
cluster: "hvacThermostat",
|
|
194
|
-
attribute: "windowDetection",
|
|
195
|
-
description: "Enable/disable window open (Lo.) mode",
|
|
196
|
-
valueOn: ["ON", 0x01],
|
|
197
|
-
valueOff: ["OFF", 0x00],
|
|
198
|
-
zigbeeCommandOptions: bosch_1.manufacturerOptions,
|
|
199
|
-
}),
|
|
200
|
-
boostHeating: () => m.binary({
|
|
201
|
-
name: "boost_heating",
|
|
202
|
-
cluster: "hvacThermostat",
|
|
203
|
-
attribute: "boostHeating",
|
|
204
|
-
reporting: { min: "10_SECONDS", max: "MAX", change: null, attribute: "boostHeating" },
|
|
205
|
-
description: "Activate boost heating (5 min. on TRV)",
|
|
206
|
-
valueOn: ["ON", 0x01],
|
|
207
|
-
valueOff: ["OFF", 0x00],
|
|
208
|
-
zigbeeCommandOptions: bosch_1.manufacturerOptions,
|
|
209
|
-
}),
|
|
210
|
-
childLock: () => m.binary({
|
|
211
|
-
name: "child_lock",
|
|
212
|
-
cluster: "hvacUserInterfaceCfg",
|
|
213
|
-
attribute: "keypadLockout",
|
|
214
|
-
description: "Enables/disables physical input on the device",
|
|
215
|
-
valueOn: ["LOCK", 0x01],
|
|
216
|
-
valueOff: ["UNLOCK", 0x00],
|
|
217
|
-
}),
|
|
218
|
-
displayOntime: () => m.numeric({
|
|
219
|
-
name: "display_ontime",
|
|
220
|
-
cluster: "hvacUserInterfaceCfg",
|
|
221
|
-
attribute: "displayOntime",
|
|
222
|
-
description: "Sets the display on-time",
|
|
223
|
-
valueMin: 5,
|
|
224
|
-
valueMax: 30,
|
|
225
|
-
unit: "s",
|
|
226
|
-
zigbeeCommandOptions: bosch_1.manufacturerOptions,
|
|
227
|
-
}),
|
|
228
|
-
displayBrightness: () => m.numeric({
|
|
229
|
-
name: "display_brightness",
|
|
230
|
-
cluster: "hvacUserInterfaceCfg",
|
|
231
|
-
attribute: "displayBrightness",
|
|
232
|
-
description: "Sets brightness of the display",
|
|
233
|
-
valueMin: 0,
|
|
234
|
-
valueMax: 10,
|
|
235
|
-
zigbeeCommandOptions: bosch_1.manufacturerOptions,
|
|
236
|
-
}),
|
|
237
|
-
valveAdaptProcess: () => {
|
|
238
|
-
const adaptationStatus = {
|
|
239
|
-
none: 0x00,
|
|
240
|
-
ready_to_calibrate: 0x01,
|
|
241
|
-
calibration_in_progress: 0x02,
|
|
242
|
-
error: 0x03,
|
|
243
|
-
success: 0x04,
|
|
244
|
-
};
|
|
245
|
-
const exposes = [
|
|
246
|
-
e
|
|
247
|
-
.binary("valve_adapt_process", ea.ALL, true, false)
|
|
248
|
-
.withLabel("Trigger adaptation process")
|
|
249
|
-
.withDescription('Trigger the valve adaptation process. Only possible when adaptation status is "ready_to_calibrate" or "error".')
|
|
250
|
-
.withCategory("config"),
|
|
251
|
-
];
|
|
252
|
-
const fromZigbee = [
|
|
253
|
-
{
|
|
254
|
-
cluster: "hvacThermostat",
|
|
255
|
-
type: ["attributeReport", "readResponse"],
|
|
256
|
-
convert: (model, msg, publish, options, meta) => {
|
|
257
|
-
const result = {};
|
|
258
|
-
if (msg.data.valveAdaptStatus !== undefined) {
|
|
259
|
-
if (msg.data.valveAdaptStatus === adaptationStatus.calibration_in_progress) {
|
|
260
|
-
result.valve_adapt_process = true;
|
|
261
|
-
}
|
|
262
|
-
else {
|
|
263
|
-
result.valve_adapt_process = false;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
return result;
|
|
267
|
-
},
|
|
268
|
-
},
|
|
269
|
-
];
|
|
270
|
-
const toZigbee = [
|
|
271
|
-
{
|
|
272
|
-
key: ["valve_adapt_process"],
|
|
273
|
-
convertSet: async (entity, key, value, meta) => {
|
|
274
|
-
if (value === true) {
|
|
275
|
-
const adaptStatus = utils.getFromLookup(meta.state.valve_adapt_status, adaptationStatus);
|
|
276
|
-
switch (adaptStatus) {
|
|
277
|
-
case adaptationStatus.ready_to_calibrate:
|
|
278
|
-
case adaptationStatus.error:
|
|
279
|
-
await entity.command("hvacThermostat", "calibrateValve", {}, bosch_1.manufacturerOptions);
|
|
280
|
-
break;
|
|
281
|
-
default:
|
|
282
|
-
throw new Error("Valve adaptation process not possible right now.");
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
return { state: { valve_adapt_process: value } };
|
|
286
|
-
},
|
|
287
|
-
convertGet: async (entity, key, meta) => {
|
|
288
|
-
await entity.read("hvacThermostat", ["valveAdaptStatus"], bosch_1.manufacturerOptions);
|
|
289
|
-
},
|
|
290
|
-
},
|
|
291
|
-
];
|
|
292
|
-
return {
|
|
293
|
-
exposes,
|
|
294
|
-
fromZigbee,
|
|
295
|
-
toZigbee,
|
|
296
|
-
isModernExtend: true,
|
|
297
|
-
};
|
|
298
|
-
},
|
|
299
|
-
heatingDemand: () => {
|
|
300
|
-
const fromZigbee = [
|
|
301
|
-
{
|
|
302
|
-
cluster: "hvacThermostat",
|
|
303
|
-
type: ["attributeReport", "readResponse"],
|
|
304
|
-
convert: (model, msg, publish, options, meta) => {
|
|
305
|
-
const result = {};
|
|
306
|
-
if (msg.data.heatingDemand !== undefined) {
|
|
307
|
-
const demand = msg.data.heatingDemand;
|
|
308
|
-
result.pi_heating_demand = demand;
|
|
309
|
-
result.running_state = demand > 0 ? "heat" : "idle";
|
|
310
|
-
}
|
|
311
|
-
return result;
|
|
312
|
-
},
|
|
313
|
-
},
|
|
314
|
-
];
|
|
315
|
-
const toZigbee = [
|
|
316
|
-
{
|
|
317
|
-
key: ["pi_heating_demand"],
|
|
318
|
-
convertSet: async (entity, key, value, meta) => {
|
|
319
|
-
if (key === "pi_heating_demand") {
|
|
320
|
-
let demand = utils.toNumber(value, key);
|
|
321
|
-
demand = utils.numberWithinRange(demand, 0, 100);
|
|
322
|
-
await entity.write("hvacThermostat", { heatingDemand: demand }, bosch_1.manufacturerOptions);
|
|
323
|
-
return { state: { pi_heating_demand: demand } };
|
|
324
|
-
}
|
|
325
|
-
},
|
|
326
|
-
convertGet: async (entity, key, meta) => {
|
|
327
|
-
await entity.read("hvacThermostat", ["heatingDemand"], bosch_1.manufacturerOptions);
|
|
328
|
-
},
|
|
329
|
-
},
|
|
330
|
-
{
|
|
331
|
-
key: ["running_state"],
|
|
332
|
-
convertGet: async (entity, key, meta) => {
|
|
333
|
-
await entity.read("hvacThermostat", ["heatingDemand"], bosch_1.manufacturerOptions);
|
|
334
|
-
},
|
|
335
|
-
},
|
|
336
|
-
];
|
|
337
|
-
return {
|
|
338
|
-
fromZigbee,
|
|
339
|
-
toZigbee,
|
|
340
|
-
isModernExtend: true,
|
|
341
|
-
};
|
|
342
|
-
},
|
|
343
|
-
ignoreDst: () => {
|
|
344
|
-
const fromZigbee = [
|
|
345
|
-
{
|
|
346
|
-
cluster: "genTime",
|
|
347
|
-
type: "read",
|
|
348
|
-
convert: async (model, msg, publish, options, meta) => {
|
|
349
|
-
if ("dstStart" in msg.data && "dstEnd" in msg.data && "dstShift" in msg.data) {
|
|
350
|
-
const response = {
|
|
351
|
-
dstStart: { attribute: 0x0003, status: zigbee_herdsman_1.Zcl.Status.SUCCESS, value: 0x00 },
|
|
352
|
-
dstEnd: { attribute: 0x0004, status: zigbee_herdsman_1.Zcl.Status.SUCCESS, value: 0x00 },
|
|
353
|
-
dstShift: { attribute: 0x0005, status: zigbee_herdsman_1.Zcl.Status.SUCCESS, value: 0x00 },
|
|
354
|
-
};
|
|
355
|
-
await msg.endpoint.readResponse(msg.cluster, msg.meta.zclTransactionSequenceNumber, response);
|
|
356
|
-
}
|
|
357
|
-
},
|
|
358
|
-
},
|
|
359
|
-
];
|
|
360
|
-
return {
|
|
361
|
-
fromZigbee,
|
|
362
|
-
isModernExtend: true,
|
|
363
|
-
};
|
|
364
|
-
},
|
|
365
111
|
smokeAlarm: () => {
|
|
366
112
|
const smokeAlarm = {
|
|
367
113
|
OFF: 0x0000,
|
|
@@ -846,7 +592,6 @@ exports.definitions = [
|
|
|
846
592
|
bosch_1.boschBsirExtend.deviceState(),
|
|
847
593
|
bosch_1.boschBsirExtend.alarmControl(),
|
|
848
594
|
bosch_1.boschBsirExtend.iasZoneStatus(),
|
|
849
|
-
bosch_1.boschBsirExtend.battery(),
|
|
850
595
|
bosch_1.boschBsirExtend.alarmMode(),
|
|
851
596
|
bosch_1.boschBsirExtend.sirenVolume(),
|
|
852
597
|
bosch_1.boschBsirExtend.sirenDuration(),
|
|
@@ -856,6 +601,9 @@ exports.definitions = [
|
|
|
856
601
|
bosch_1.boschBsirExtend.primaryPowerSource(),
|
|
857
602
|
bosch_1.boschBsirExtend.currentPowerSource(),
|
|
858
603
|
bosch_1.boschBsirExtend.solarPanelVoltage(),
|
|
604
|
+
bosch_1.boschGeneralExtend.batteryWithPercentageAndLowStatus({
|
|
605
|
+
percentageReportingConfig: { min: "MIN", max: "MAX", change: 1 },
|
|
606
|
+
}),
|
|
859
607
|
],
|
|
860
608
|
ota: true,
|
|
861
609
|
},
|
|
@@ -1006,279 +754,81 @@ exports.definitions = [
|
|
|
1006
754
|
model: "BTH-RA",
|
|
1007
755
|
vendor: "Bosch",
|
|
1008
756
|
description: "Radiator thermostat II",
|
|
1009
|
-
meta: {
|
|
1010
|
-
overrideHaDiscoveryPayload: (payload) => {
|
|
1011
|
-
// Override climate discovery
|
|
1012
|
-
// https://github.com/Koenkk/zigbee2mqtt/pull/23075#issue-2355829475
|
|
1013
|
-
if (payload.mode_command_topic?.endsWith("/system_mode")) {
|
|
1014
|
-
payload.mode_command_topic = payload.mode_command_topic.substring(0, payload.mode_command_topic.lastIndexOf("/system_mode"));
|
|
1015
|
-
payload.mode_command_template =
|
|
1016
|
-
"{% set values = " +
|
|
1017
|
-
`{ 'auto':'schedule','heat':'manual','off':'pause'} %}` +
|
|
1018
|
-
`{"operating_mode": "{{ values[value] if value in values.keys() else 'pause' }}"}`;
|
|
1019
|
-
payload.mode_state_template =
|
|
1020
|
-
"{% set values = " +
|
|
1021
|
-
`{'schedule':'auto','manual':'heat','pause':'off'} %}` +
|
|
1022
|
-
`{% set value = value_json.operating_mode %}{{ values[value] if value in values.keys() else 'off' }}`;
|
|
1023
|
-
payload.modes = ["off", "heat", "auto"];
|
|
1024
|
-
}
|
|
1025
|
-
},
|
|
1026
|
-
},
|
|
1027
|
-
exposes: [
|
|
1028
|
-
e
|
|
1029
|
-
.climate()
|
|
1030
|
-
.withLocalTemperature(ea.STATE_GET, "Temperature used by the heating algorithm. " +
|
|
1031
|
-
"This is the temperature measured on the device (by default) or the remote temperature (if set within the last 30 min).")
|
|
1032
|
-
.withLocalTemperatureCalibration(-5, 5, 0.1)
|
|
1033
|
-
.withSetpoint("occupied_heating_setpoint", 5, 30, 0.5)
|
|
1034
|
-
.withSystemMode(["heat"])
|
|
1035
|
-
.withRunningState(["idle", "heat"], ea.STATE_GET),
|
|
1036
|
-
e.pi_heating_demand().withAccess(ea.ALL),
|
|
1037
|
-
],
|
|
1038
|
-
fromZigbee: [fz.thermostat],
|
|
1039
|
-
toZigbee: [
|
|
1040
|
-
tz.thermostat_system_mode,
|
|
1041
|
-
tz.thermostat_occupied_heating_setpoint,
|
|
1042
|
-
tz.thermostat_local_temperature_calibration,
|
|
1043
|
-
tz.thermostat_local_temperature,
|
|
1044
|
-
tz.thermostat_keypad_lockout,
|
|
1045
|
-
],
|
|
1046
757
|
extend: [
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
}),
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
valueStep: 0.01,
|
|
1064
|
-
unit: "°C",
|
|
1065
|
-
scale: 100,
|
|
1066
|
-
zigbeeCommandOptions: bosch_1.manufacturerOptions,
|
|
1067
|
-
}),
|
|
1068
|
-
m.enumLookup({
|
|
1069
|
-
name: "setpoint_change_source",
|
|
1070
|
-
cluster: "hvacThermostat",
|
|
1071
|
-
attribute: "setpointChangeSource",
|
|
1072
|
-
reporting: { min: "10_SECONDS", max: "MAX", change: null },
|
|
1073
|
-
description: "Source of the current setpoint temperature",
|
|
1074
|
-
lookup: { manual: 0x00, schedule: 0x01, externally: 0x02 },
|
|
1075
|
-
access: "STATE_GET",
|
|
1076
|
-
}),
|
|
1077
|
-
boschExtend.childLock(),
|
|
1078
|
-
boschExtend.displayOntime(),
|
|
1079
|
-
boschExtend.displayBrightness(),
|
|
1080
|
-
m.enumLookup({
|
|
1081
|
-
name: "display_orientation",
|
|
1082
|
-
cluster: "hvacUserInterfaceCfg",
|
|
1083
|
-
attribute: "displayOrientation",
|
|
1084
|
-
description: "Sets orientation of the display",
|
|
1085
|
-
lookup: { normal: 0x00, flipped: 0x01 },
|
|
1086
|
-
zigbeeCommandOptions: bosch_1.manufacturerOptions,
|
|
1087
|
-
}),
|
|
1088
|
-
m.enumLookup({
|
|
1089
|
-
name: "displayed_temperature",
|
|
1090
|
-
cluster: "hvacUserInterfaceCfg",
|
|
1091
|
-
attribute: "displayedTemperature",
|
|
1092
|
-
description: "Temperature displayed on the TRV",
|
|
1093
|
-
lookup: { target: 0x00, measured: 0x01 },
|
|
1094
|
-
zigbeeCommandOptions: bosch_1.manufacturerOptions,
|
|
1095
|
-
}),
|
|
1096
|
-
m.enumLookup({
|
|
1097
|
-
name: "valve_adapt_status",
|
|
1098
|
-
cluster: "hvacThermostat",
|
|
1099
|
-
attribute: "valveAdaptStatus",
|
|
1100
|
-
reporting: { min: "10_SECONDS", max: "MAX", change: null },
|
|
1101
|
-
description: "Specifies the current status of the valve adaptation",
|
|
1102
|
-
lookup: {
|
|
1103
|
-
none: 0x00,
|
|
1104
|
-
ready_to_calibrate: 0x01,
|
|
1105
|
-
calibration_in_progress: 0x02,
|
|
1106
|
-
error: 0x03,
|
|
1107
|
-
success: 0x04,
|
|
1108
|
-
},
|
|
1109
|
-
zigbeeCommandOptions: bosch_1.manufacturerOptions,
|
|
1110
|
-
access: "STATE_GET",
|
|
1111
|
-
}),
|
|
1112
|
-
boschExtend.valveAdaptProcess(),
|
|
1113
|
-
boschExtend.heatingDemand(),
|
|
1114
|
-
boschExtend.ignoreDst(),
|
|
1115
|
-
m.bindCluster({
|
|
1116
|
-
cluster: "genPollCtrl",
|
|
1117
|
-
clusterType: "input",
|
|
1118
|
-
}),
|
|
758
|
+
bosch_1.boschThermostatExtend.customThermostatCluster(),
|
|
759
|
+
bosch_1.boschThermostatExtend.customUserInterfaceCfgCluster(),
|
|
760
|
+
bosch_1.boschThermostatExtend.raThermostat(),
|
|
761
|
+
bosch_1.boschThermostatExtend.setpointChangeSource({ enableReporting: true }),
|
|
762
|
+
bosch_1.boschThermostatExtend.operatingMode({ enableReporting: true }),
|
|
763
|
+
bosch_1.boschThermostatExtend.windowOpenMode({ enableReporting: true }),
|
|
764
|
+
bosch_1.boschThermostatExtend.boostHeating({ enableReporting: true }),
|
|
765
|
+
bosch_1.boschThermostatExtend.remoteTemperature(),
|
|
766
|
+
bosch_1.boschThermostatExtend.childLock(),
|
|
767
|
+
bosch_1.boschThermostatExtend.displayBrightness(),
|
|
768
|
+
bosch_1.boschThermostatExtend.displaySwitchOnDuration(),
|
|
769
|
+
bosch_1.boschThermostatExtend.displayOrientation(),
|
|
770
|
+
bosch_1.boschThermostatExtend.displayedTemperature(),
|
|
771
|
+
bosch_1.boschThermostatExtend.valveAdaptation(),
|
|
772
|
+
bosch_1.boschThermostatExtend.errorState({ enableReporting: true }),
|
|
773
|
+
bosch_1.boschGeneralExtend.batteryWithPercentageAndLowStatus(),
|
|
1119
774
|
],
|
|
1120
775
|
ota: true,
|
|
1121
|
-
configure: async (device, coordinatorEndpoint) => {
|
|
1122
|
-
const endpoint = device.getEndpoint(1);
|
|
1123
|
-
await reporting.bind(endpoint, coordinatorEndpoint, ["hvacThermostat", "hvacUserInterfaceCfg"]);
|
|
1124
|
-
await reporting.thermostatTemperature(endpoint);
|
|
1125
|
-
await reporting.thermostatOccupiedHeatingSetpoint(endpoint, {
|
|
1126
|
-
min: constants.repInterval.SECONDS_10,
|
|
1127
|
-
max: constants.repInterval.HOUR,
|
|
1128
|
-
change: 50,
|
|
1129
|
-
});
|
|
1130
|
-
await reporting.thermostatKeypadLockMode(endpoint);
|
|
1131
|
-
await endpoint.configureReporting("hvacThermostat", [
|
|
1132
|
-
{
|
|
1133
|
-
attribute: "heatingDemand",
|
|
1134
|
-
minimumReportInterval: constants.repInterval.SECONDS_10,
|
|
1135
|
-
maximumReportInterval: constants.repInterval.MAX,
|
|
1136
|
-
reportableChange: null,
|
|
1137
|
-
},
|
|
1138
|
-
], bosch_1.manufacturerOptions);
|
|
1139
|
-
await endpoint.read("genPowerCfg", ["batteryPercentageRemaining"]);
|
|
1140
|
-
await endpoint.read("hvacThermostat", ["localTemperatureCalibration", "setpointChangeSource"]);
|
|
1141
|
-
await endpoint.read("hvacThermostat", ["operatingMode", "heatingDemand", "valveAdaptStatus", "remoteTemperature", "windowDetection", "boostHeating"], bosch_1.manufacturerOptions);
|
|
1142
|
-
await endpoint.read("hvacUserInterfaceCfg", ["keypadLockout"]);
|
|
1143
|
-
await endpoint.read("hvacUserInterfaceCfg", ["displayOrientation", "displayedTemperature", "displayOntime", "displayBrightness"], bosch_1.manufacturerOptions);
|
|
1144
|
-
},
|
|
1145
776
|
},
|
|
1146
777
|
{
|
|
1147
778
|
zigbeeModel: ["RBSH-RTH0-BAT-ZB-EU"],
|
|
1148
779
|
model: "BTH-RM",
|
|
1149
780
|
vendor: "Bosch",
|
|
1150
|
-
description: "Room thermostat II
|
|
1151
|
-
exposes: [
|
|
1152
|
-
e
|
|
1153
|
-
.climate()
|
|
1154
|
-
.withLocalTemperature()
|
|
1155
|
-
.withSetpoint("occupied_heating_setpoint", 4.5, 30, 0.5)
|
|
1156
|
-
.withSetpoint("occupied_cooling_setpoint", 4.5, 30, 0.5)
|
|
1157
|
-
.withLocalTemperatureCalibration(-5, 5, 0.1)
|
|
1158
|
-
.withSystemMode(["off", "heat", "cool"])
|
|
1159
|
-
.withRunningState(["idle", "heat", "cool"]),
|
|
1160
|
-
],
|
|
1161
|
-
fromZigbee: [fz.thermostat, fz.hvac_user_interface],
|
|
1162
|
-
toZigbee: [
|
|
1163
|
-
tz.thermostat_system_mode,
|
|
1164
|
-
tz.thermostat_running_state,
|
|
1165
|
-
tz.thermostat_occupied_heating_setpoint,
|
|
1166
|
-
tz.thermostat_occupied_cooling_setpoint,
|
|
1167
|
-
tz.thermostat_programming_operation_mode, // NOTE: Only 0x0 & 0x1 supported
|
|
1168
|
-
tz.thermostat_local_temperature_calibration,
|
|
1169
|
-
tz.thermostat_local_temperature,
|
|
1170
|
-
tz.thermostat_temperature_setpoint_hold,
|
|
1171
|
-
tz.thermostat_temperature_display_mode,
|
|
1172
|
-
],
|
|
781
|
+
description: "Room thermostat II",
|
|
1173
782
|
extend: [
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
cluster: "genPollCtrl",
|
|
1193
|
-
clusterType: "input",
|
|
1194
|
-
}),
|
|
783
|
+
bosch_1.boschGeneralExtend.handleZclVersionReadRequest(),
|
|
784
|
+
bosch_1.boschThermostatExtend.customThermostatCluster(),
|
|
785
|
+
bosch_1.boschThermostatExtend.customUserInterfaceCfgCluster(),
|
|
786
|
+
bosch_1.boschThermostatExtend.customSystemMode(),
|
|
787
|
+
bosch_1.boschThermostatExtend.operatingMode(),
|
|
788
|
+
bosch_1.boschThermostatExtend.rmThermostat(),
|
|
789
|
+
bosch_1.boschThermostatExtend.setpointChangeSource(),
|
|
790
|
+
bosch_1.boschThermostatExtend.humidity(),
|
|
791
|
+
bosch_1.boschThermostatExtend.cableSensorMode(),
|
|
792
|
+
bosch_1.boschThermostatExtend.cableSensorTemperature(),
|
|
793
|
+
bosch_1.boschThermostatExtend.windowOpenMode(),
|
|
794
|
+
bosch_1.boschThermostatExtend.boostHeating(),
|
|
795
|
+
bosch_1.boschThermostatExtend.childLock(),
|
|
796
|
+
bosch_1.boschThermostatExtend.displayBrightness(),
|
|
797
|
+
bosch_1.boschThermostatExtend.displaySwitchOnDuration(),
|
|
798
|
+
bosch_1.boschThermostatExtend.activityLedState(),
|
|
799
|
+
bosch_1.boschThermostatExtend.errorState(),
|
|
800
|
+
bosch_1.boschThermostatExtend.rmBattery(),
|
|
1195
801
|
],
|
|
1196
802
|
ota: true,
|
|
1197
|
-
configure: async (device, coordinatorEndpoint) => {
|
|
1198
|
-
const endpoint = device.getEndpoint(1);
|
|
1199
|
-
await reporting.bind(endpoint, coordinatorEndpoint, ["hvacThermostat", "hvacUserInterfaceCfg"]);
|
|
1200
|
-
await reporting.thermostatSystemMode(endpoint);
|
|
1201
|
-
await reporting.thermostatRunningState(endpoint);
|
|
1202
|
-
await reporting.thermostatTemperature(endpoint);
|
|
1203
|
-
await reporting.thermostatOccupiedHeatingSetpoint(endpoint, {
|
|
1204
|
-
min: constants.repInterval.SECONDS_10,
|
|
1205
|
-
max: constants.repInterval.HOUR,
|
|
1206
|
-
change: 50,
|
|
1207
|
-
});
|
|
1208
|
-
await reporting.thermostatOccupiedCoolingSetpoint(endpoint, {
|
|
1209
|
-
min: constants.repInterval.SECONDS_10,
|
|
1210
|
-
max: constants.repInterval.HOUR,
|
|
1211
|
-
change: 50,
|
|
1212
|
-
});
|
|
1213
|
-
await reporting.thermostatKeypadLockMode(endpoint);
|
|
1214
|
-
await endpoint.read("genPowerCfg", ["batteryVoltage"]);
|
|
1215
|
-
await endpoint.read("hvacThermostat", ["localTemperatureCalibration"]);
|
|
1216
|
-
await endpoint.read("hvacThermostat", ["operatingMode", "windowDetection", "boostHeating"], bosch_1.manufacturerOptions);
|
|
1217
|
-
await endpoint.read("hvacUserInterfaceCfg", ["keypadLockout"]);
|
|
1218
|
-
await endpoint.read("hvacUserInterfaceCfg", ["displayOntime", "displayBrightness"], bosch_1.manufacturerOptions);
|
|
1219
|
-
},
|
|
1220
803
|
},
|
|
1221
804
|
{
|
|
1222
805
|
zigbeeModel: ["RBSH-RTH0-ZB-EU"],
|
|
1223
806
|
model: "BTH-RM230Z",
|
|
1224
807
|
vendor: "Bosch",
|
|
1225
808
|
description: "Room thermostat II 230V",
|
|
1226
|
-
exposes: [
|
|
1227
|
-
e
|
|
1228
|
-
.climate()
|
|
1229
|
-
.withLocalTemperature()
|
|
1230
|
-
.withSetpoint("occupied_heating_setpoint", 4.5, 30, 0.5)
|
|
1231
|
-
.withSetpoint("occupied_cooling_setpoint", 4.5, 30, 0.5)
|
|
1232
|
-
.withLocalTemperatureCalibration(-5, 5, 0.1)
|
|
1233
|
-
.withSystemMode(["off", "heat", "cool"])
|
|
1234
|
-
.withRunningState(["idle", "heat", "cool"]),
|
|
1235
|
-
],
|
|
1236
|
-
fromZigbee: [fz.thermostat, fz.hvac_user_interface],
|
|
1237
|
-
toZigbee: [
|
|
1238
|
-
tz.thermostat_system_mode,
|
|
1239
|
-
tz.thermostat_running_state,
|
|
1240
|
-
tz.thermostat_occupied_heating_setpoint,
|
|
1241
|
-
tz.thermostat_occupied_cooling_setpoint,
|
|
1242
|
-
tz.thermostat_programming_operation_mode, // NOTE: Only 0x0 & 0x1 supported
|
|
1243
|
-
tz.thermostat_local_temperature_calibration,
|
|
1244
|
-
tz.thermostat_local_temperature,
|
|
1245
|
-
tz.thermostat_temperature_setpoint_hold,
|
|
1246
|
-
tz.thermostat_temperature_display_mode,
|
|
1247
|
-
],
|
|
1248
809
|
extend: [
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
810
|
+
bosch_1.boschGeneralExtend.handleZclVersionReadRequest(),
|
|
811
|
+
bosch_1.boschThermostatExtend.customThermostatCluster(),
|
|
812
|
+
bosch_1.boschThermostatExtend.customUserInterfaceCfgCluster(),
|
|
813
|
+
bosch_1.boschThermostatExtend.relayState(),
|
|
814
|
+
bosch_1.boschThermostatExtend.customSystemMode(),
|
|
815
|
+
bosch_1.boschThermostatExtend.operatingMode(),
|
|
816
|
+
bosch_1.boschThermostatExtend.rmThermostat(),
|
|
817
|
+
bosch_1.boschThermostatExtend.setpointChangeSource(),
|
|
818
|
+
bosch_1.boschThermostatExtend.humidity(),
|
|
819
|
+
bosch_1.boschThermostatExtend.heaterType(),
|
|
820
|
+
bosch_1.boschThermostatExtend.valveType(),
|
|
821
|
+
bosch_1.boschThermostatExtend.cableSensorMode(),
|
|
822
|
+
bosch_1.boschThermostatExtend.cableSensorTemperature(),
|
|
823
|
+
bosch_1.boschThermostatExtend.windowOpenMode(),
|
|
824
|
+
bosch_1.boschThermostatExtend.boostHeating(),
|
|
825
|
+
bosch_1.boschThermostatExtend.childLock(),
|
|
826
|
+
bosch_1.boschThermostatExtend.displayBrightness(),
|
|
827
|
+
bosch_1.boschThermostatExtend.displaySwitchOnDuration(),
|
|
828
|
+
bosch_1.boschThermostatExtend.activityLedState(),
|
|
829
|
+
bosch_1.boschThermostatExtend.errorState(),
|
|
1258
830
|
],
|
|
1259
831
|
ota: true,
|
|
1260
|
-
configure: async (device, coordinatorEndpoint) => {
|
|
1261
|
-
const endpoint = device.getEndpoint(1);
|
|
1262
|
-
await reporting.bind(endpoint, coordinatorEndpoint, ["hvacThermostat", "hvacUserInterfaceCfg"]);
|
|
1263
|
-
await reporting.thermostatSystemMode(endpoint);
|
|
1264
|
-
await reporting.thermostatRunningState(endpoint);
|
|
1265
|
-
await reporting.thermostatTemperature(endpoint);
|
|
1266
|
-
await reporting.thermostatOccupiedHeatingSetpoint(endpoint, {
|
|
1267
|
-
min: constants.repInterval.SECONDS_10,
|
|
1268
|
-
max: constants.repInterval.HOUR,
|
|
1269
|
-
change: 50,
|
|
1270
|
-
});
|
|
1271
|
-
await reporting.thermostatOccupiedCoolingSetpoint(endpoint, {
|
|
1272
|
-
min: constants.repInterval.SECONDS_10,
|
|
1273
|
-
max: constants.repInterval.HOUR,
|
|
1274
|
-
change: 50,
|
|
1275
|
-
});
|
|
1276
|
-
await reporting.thermostatKeypadLockMode(endpoint);
|
|
1277
|
-
await endpoint.read("hvacThermostat", ["localTemperatureCalibration"]);
|
|
1278
|
-
await endpoint.read("hvacThermostat", ["operatingMode", "windowDetection", "boostHeating"], bosch_1.manufacturerOptions);
|
|
1279
|
-
await endpoint.read("hvacUserInterfaceCfg", ["keypadLockout"]);
|
|
1280
|
-
await endpoint.read("hvacUserInterfaceCfg", ["displayOntime", "displayBrightness"], bosch_1.manufacturerOptions);
|
|
1281
|
-
},
|
|
1282
832
|
},
|
|
1283
833
|
{
|
|
1284
834
|
zigbeeModel: ["Champion"],
|
|
@@ -1408,7 +958,7 @@ exports.definitions = [
|
|
|
1408
958
|
vendor: "Bosch",
|
|
1409
959
|
description: "Smart plug compact (type F plug)",
|
|
1410
960
|
extend: [
|
|
1411
|
-
bosch_1.boschGeneralExtend.
|
|
961
|
+
bosch_1.boschGeneralExtend.customMeteringCluster(),
|
|
1412
962
|
bosch_1.boschSmartPlugExtend.smartPlugCluster(),
|
|
1413
963
|
bosch_1.boschGeneralExtend.handleRenamedCustomCluster("boschSpecific", "boschEnergyDevice"),
|
|
1414
964
|
bosch_1.boschSmartPlugExtend.onOff(),
|
|
@@ -1429,7 +979,7 @@ exports.definitions = [
|
|
|
1429
979
|
description: "Smart plug compact [+M]",
|
|
1430
980
|
extend: [
|
|
1431
981
|
bosch_1.boschGeneralExtend.handleZclVersionReadRequest(),
|
|
1432
|
-
bosch_1.boschGeneralExtend.
|
|
982
|
+
bosch_1.boschGeneralExtend.customMeteringCluster(),
|
|
1433
983
|
bosch_1.boschSmartPlugExtend.smartPlugCluster(),
|
|
1434
984
|
bosch_1.boschSmartPlugExtend.onOff(),
|
|
1435
985
|
bosch_1.boschGeneralExtend.autoOff(),
|
|
@@ -1450,7 +1000,7 @@ exports.definitions = [
|
|
|
1450
1000
|
bosch_1.boschDoorWindowContactExtend.reportContactState(),
|
|
1451
1001
|
bosch_1.boschDoorWindowContactExtend.reportButtonActions(),
|
|
1452
1002
|
bosch_1.boschDoorWindowContactExtend.breakFunctionality(),
|
|
1453
|
-
bosch_1.
|
|
1003
|
+
bosch_1.boschGeneralExtend.batteryWithPercentageAndLowStatus(),
|
|
1454
1004
|
],
|
|
1455
1005
|
ota: true,
|
|
1456
1006
|
},
|
|
@@ -1466,7 +1016,7 @@ exports.definitions = [
|
|
|
1466
1016
|
bosch_1.boschDoorWindowContactExtend.reportButtonActions(),
|
|
1467
1017
|
bosch_1.boschDoorWindowContactExtend.vibrationDetection(),
|
|
1468
1018
|
bosch_1.boschDoorWindowContactExtend.breakFunctionality(),
|
|
1469
|
-
bosch_1.
|
|
1019
|
+
bosch_1.boschGeneralExtend.batteryWithPercentageAndLowStatus(),
|
|
1470
1020
|
],
|
|
1471
1021
|
},
|
|
1472
1022
|
{
|
|
@@ -1480,7 +1030,7 @@ exports.definitions = [
|
|
|
1480
1030
|
bosch_1.boschDoorWindowContactExtend.reportContactState(),
|
|
1481
1031
|
bosch_1.boschDoorWindowContactExtend.reportButtonActions({ doublePressSupported: true }),
|
|
1482
1032
|
bosch_1.boschDoorWindowContactExtend.breakFunctionality(),
|
|
1483
|
-
bosch_1.
|
|
1033
|
+
bosch_1.boschGeneralExtend.batteryWithPercentageAndLowStatus(),
|
|
1484
1034
|
],
|
|
1485
1035
|
},
|
|
1486
1036
|
{
|
|
@@ -1655,7 +1205,7 @@ exports.definitions = [
|
|
|
1655
1205
|
bosch_1.boschGeneralExtend.handleRenamedCustomCluster("boschSpecific", "boschEnergyDevice"),
|
|
1656
1206
|
bosch_1.boschGeneralExtend.handleZclVersionReadRequest(),
|
|
1657
1207
|
bosch_1.boschBmctExtend.slzExtends(),
|
|
1658
|
-
bosch_1.boschGeneralExtend.
|
|
1208
|
+
bosch_1.boschGeneralExtend.customMeteringCluster(),
|
|
1659
1209
|
bosch_1.boschGeneralExtend.resetEnergyMeters(),
|
|
1660
1210
|
],
|
|
1661
1211
|
ota: true,
|