From d489759087e3717f37d2f09ea6ffa0734ddaa8f3 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Tue, 25 Jun 2024 21:16:31 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=8B=20Updates=20battery=20service=20wi?= =?UTF-8?q?th=20voltage=20and=20current?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- esp32/lib/ESP32-sveltekit/BatteryService.cpp | 7 ++-- esp32/lib/ESP32-sveltekit/BatteryService.h | 37 +++++++++++++++----- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/esp32/lib/ESP32-sveltekit/BatteryService.cpp b/esp32/lib/ESP32-sveltekit/BatteryService.cpp index 1428131..838b286 100644 --- a/esp32/lib/ESP32-sveltekit/BatteryService.cpp +++ b/esp32/lib/ESP32-sveltekit/BatteryService.cpp @@ -6,6 +6,7 @@ * https://github.com/theelims/ESP32-sveltekit * * Copyright (C) 2023 theelims + * Copyright (C) 2024 runeharlyk * * All Rights Reserved. This software may be modified and distributed under * the terms of the LGPL v3 license. See the LICENSE file for details. @@ -24,9 +25,9 @@ void BatteryService::begin() void BatteryService::batteryEvent() { JsonDocument doc; - char message[32]; - doc["soc"] = _lastSOC; - doc["charging"] = _isCharging; + char message[64]; + doc["voltage"] = _voltage; + doc["current"] = _current; serializeJson(doc, message); _socket->emit(EVENT_BATTERY, message); } diff --git a/esp32/lib/ESP32-sveltekit/BatteryService.h b/esp32/lib/ESP32-sveltekit/BatteryService.h index 2496a2a..94d6772 100644 --- a/esp32/lib/ESP32-sveltekit/BatteryService.h +++ b/esp32/lib/ESP32-sveltekit/BatteryService.h @@ -8,6 +8,7 @@ * https://github.com/theelims/ESP32-sveltekit * * Copyright (C) 2023 theelims + * Copyright (C) 2024 runeharlyk * * All Rights Reserved. This software may be modified and distributed under * the terms of the LGPL v3 license. See the LICENSE file for details. @@ -25,21 +26,39 @@ public: void begin(); - void updateSOC(float stateOfCharge) - { - _lastSOC = (int)round(stateOfCharge); - batteryEvent(); + void loop() { + unsigned long currentMillis = millis(); + + if (!_lastUpdate || (currentMillis - _lastUpdate) >= BATTERY_CHECK_INTERVAL) + { + _lastUpdate = currentMillis; + updateBattery(); + } + if(!_lastEmit || (currentMillis - _lastEmit) >= BATTERY_INTERVAL) + { + _lastEmit = currentMillis; + batteryEvent(); + } } - void setCharging(boolean isCharging) + void updateBattery() { - _isCharging = isCharging; - batteryEvent(); + } + + float getVoltage() { + return _voltage; + } + + float getCurrent() { + return _current; } private: void batteryEvent(); EventSocket *_socket; - int _lastSOC = 100; - boolean _isCharging = false; + + unsigned long _lastUpdate; + unsigned long _lastEmit; + float _voltage = 0; + float _current = 0; };