Skip to content

Commit 29fdc2e

Browse files
authored
fix!: Add device argument to postProcessConvertedFromZigbeeMessage (#9693)
1 parent db8b2bd commit 29fdc2e

3 files changed

Lines changed: 15 additions & 8 deletions

File tree

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ If any of those commands finish with an error your PR won't pass the tests and w
3939

4040
## Breaking changes
4141

42+
25.0.0
43+
44+
- A `device` argument has been added to `postProcessConvertedFromZigbeeMessage` (https://github.com/Koenkk/zigbee-herdsman-converters/pull/9693)
45+
4246
24.0.0
4347

4448
- It's not longer possible to call `definition.exposes(undefined, undefined)`, use `definition.exposes({isDummyDevice: true}, {})` instead (#9601)

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -475,10 +475,10 @@ export function prepareDefinition(definition: DefinitionWithExtend): Definition
475475
return finalDefinition;
476476
}
477477

478-
export function postProcessConvertedFromZigbeeMessage(definition: Definition, payload: KeyValue, options: KeyValue): void {
478+
export function postProcessConvertedFromZigbeeMessage(definition: Definition, payload: KeyValue, options: KeyValue, device: Zh.Device): void {
479479
// Apply calibration/precision options
480480
for (const [key, value] of Object.entries(payload)) {
481-
const definitionExposes = Array.isArray(definition.exposes) ? definition.exposes : definition.exposes({isDummyDevice: true}, {});
481+
const definitionExposes = Array.isArray(definition.exposes) ? definition.exposes : definition.exposes(device, {});
482482
const expose = definitionExposes.find((e) => e.property === key);
483483

484484
if (expose?.name && expose.name in utils.calibrateAndPrecisionRoundOptionsDefaultPrecision && value !== "" && utils.isNumber(value)) {

test/index.test.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,8 @@ describe("ZHC", () => {
539539
});
540540

541541
it("computes calibration/precision", async () => {
542-
const ts0601Soil = await findByDevice(mockDevice({modelID: "TS0601", manufacturerName: "_TZE200_myd45weu", endpoints: []}));
542+
const ts0601SoilDevice = mockDevice({modelID: "TS0601", manufacturerName: "_TZE200_myd45weu", endpoints: []});
543+
const ts0601Soil = await findByDevice(ts0601SoilDevice);
543544
expect(ts0601Soil.options.map((t) => t.name)).toStrictEqual([
544545
"temperature_calibration",
545546
"temperature_precision",
@@ -548,18 +549,20 @@ describe("ZHC", () => {
548549
]);
549550
const payload1 = {temperature: 1.193};
550551
const options1 = {temperature_calibration: 2.5, temperature_precision: 1};
551-
postProcessConvertedFromZigbeeMessage(ts0601Soil, payload1, options1);
552+
postProcessConvertedFromZigbeeMessage(ts0601Soil, payload1, options1, ts0601SoilDevice);
552553
expect(payload1).toStrictEqual({temperature: 3.7});
553554

554555
// For multi endpoint property
555-
const AUA1ZBDSS = await findByDevice(mockDevice({modelID: "DoubleSocket50AU", endpoints: []}));
556+
const AUA1ZBDSSDevice = mockDevice({modelID: "DoubleSocket50AU", endpoints: []});
557+
const AUA1ZBDSS = await findByDevice(AUA1ZBDSSDevice);
556558
expect(AUA1ZBDSS.options.map((t) => t.name)).toStrictEqual(["power_calibration", "power_precision", "transition", "state_action"]);
557559
const payload2 = {power_left: 5.31};
558560
const options2 = {power_calibration: 100, power_precision: 0}; // calibration for power is percentual
559-
postProcessConvertedFromZigbeeMessage(AUA1ZBDSS, payload2, options2);
561+
postProcessConvertedFromZigbeeMessage(AUA1ZBDSS, payload2, options2, AUA1ZBDSSDevice);
560562
expect(payload2).toStrictEqual({power_left: 11});
561563

562-
const ts011fPlug1 = await findByDevice(mockDevice({modelID: "TS011F", endpoints: []}));
564+
const ts0111fPlug1Device = mockDevice({modelID: "TS011F", endpoints: []});
565+
const ts011fPlug1 = await findByDevice(ts0111fPlug1Device);
563566
expect(ts011fPlug1.options.map((t) => t.name)).toStrictEqual([
564567
"power_calibration",
565568
"power_precision",
@@ -573,7 +576,7 @@ describe("ZHC", () => {
573576
]);
574577
const payload3 = {current: 0.0585};
575578
const options3 = {current_calibration: -50};
576-
postProcessConvertedFromZigbeeMessage(ts011fPlug1, payload3, options3);
579+
postProcessConvertedFromZigbeeMessage(ts011fPlug1, payload3, options3, ts0111fPlug1Device);
577580
expect(payload3).toStrictEqual({current: 0.03});
578581
});
579582

0 commit comments

Comments
 (0)