Skip to content

Commit c076b17

Browse files
committed
update session energy
1 parent ead52ed commit c076b17

1 file changed

Lines changed: 20 additions & 21 deletions

File tree

src/devices/futurehome.ts

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -310,33 +310,32 @@ const futurehomeExtend = {
310310
type: ["attributeReport", "readResponse"],
311311
convert: (model, msg, publish, options, meta) => {
312312
// const prev_session_energy = (msg.data.energyMeterNow - msg.data.energyMeterStart) / 1000;
313-
if (msg.data.energyMeterNow !== undefined && msg.data.energyMeterStart !== undefined) {
314-
const prev_session_energy = msg.data.energyMeterNow - msg.data.energyMeterStart;
313+
// if (msg.data.energyMeterNow !== undefined && msg.data.energyMeterStart !== undefined) {
314+
// const prev_session_energy = msg.data.energyMeterNow - msg.data.energyMeterStart;
315+
// return {
316+
// previous_session_energy: prev_session_energy,
317+
// };
318+
// }
319+
let start = meta.state?.energy_meter_start !== undefined ? meta.state.energy_meter_start : null;
320+
let now = meta.state?.energy_meter_now !== undefined ? meta.state.energy_meter_now : null;
321+
if (Object.hasOwn(msg.data, "energyMeterStart")) {
322+
start = msg.data.energyMeterStart / 1000;
323+
}
324+
if (Object.hasOwn(msg.data, "energyMeterNow")) {
325+
now = msg.data.energyMeterNow / 1000;
326+
}
327+
if (start !== null && now !== null) {
328+
const consumed = (now as number) - (start as number);
315329
return {
316-
previous_session_energy: prev_session_energy,
330+
// toFixed(3) prevents floating-point precision issues in JavaScript (e.g., 0.300000000004)
331+
session_energy: Number.parseFloat(consumed.toFixed(3)),
317332
};
318333
}
334+
return;
319335
},
320336
} satisfies Fz.Converter<"haApplianceControl", FuturehomeHaApplianceControl, ["attributeReport", "readResponse"]>,
321337
],
322-
toZigbee: [
323-
{
324-
key: ["prev_session_energy"],
325-
convertGet: async (entity, key, meta) => {
326-
await entity.read<"haApplianceControl", FuturehomeHaApplianceControl>("haApplianceControl", [
327-
"energyMeterNow",
328-
"energyMeterStart",
329-
]);
330-
},
331-
} satisfies Tz.Converter,
332-
],
333-
exposes: [
334-
exposes
335-
.numeric("previous_session_energy", ea.STATE_GET)
336-
.withLabel("Session energy")
337-
.withDescription("Previous session")
338-
.withUnit("kWh"),
339-
],
338+
exposes: [exposes.numeric("session_energy", ea.STATE).withLabel("Session energy").withDescription("Previous session").withUnit("kWh")],
340339
};
341340
},
342341
};

0 commit comments

Comments
 (0)