From b5740d78c886e012bd986b451a2284a5f265bdf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Mon, 29 Nov 2021 20:42:54 +0100 Subject: [PATCH] Make sure calculations are done using Decimal --- solar_ble.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/solar_ble.py b/solar_ble.py index 3064867..097bab1 100755 --- a/solar_ble.py +++ b/solar_ble.py @@ -405,16 +405,18 @@ if __name__ == "__main__": data = try_read_parse(dev, 0x0100, 11, parse_battery_state) if data: data[DataName.CALCULATED_BATTERY_POWER] = float( - Decimal(data.get(DataName.BATTERY_VOLTAGE, 0)) - * Decimal(data.get(DataName.BATTERY_CURRENT, 0)) + Decimal(str(data.get(DataName.BATTERY_VOLTAGE, 0))) + * Decimal( + str(data.get(DataName.BATTERY_CURRENT, 0)) + ) ) data[DataName.CALCULATED_PANEL_POWER] = float( - Decimal(data.get(DataName.PANEL_VOLTAGE, 0)) - * Decimal(data.get(DataName.PANEL_CURRENT, 0)) + Decimal(str(data.get(DataName.PANEL_VOLTAGE, 0))) + * Decimal(str(data.get(DataName.PANEL_CURRENT, 0))) ) data[DataName.CALCULATED_LOAD_POWER] = float( - Decimal(data.get(DataName.LOAD_VOLTAGE, 0)) - * Decimal(data.get(DataName.LOAD_CURRENT, 0)) + Decimal(str(data.get(DataName.LOAD_VOLTAGE, 0))) + * Decimal(str(data.get(DataName.LOAD_CURRENT, 0))) ) log(data) for consumer in consumers: