diff --git a/main/battery.cpp b/main/battery.cpp index 001d4c6..9ae2cb4 100644 --- a/main/battery.cpp +++ b/main/battery.cpp @@ -156,3 +156,14 @@ std::string getRemainingRangeString() { return fmt::format("{:.1f} km", getRemainingWattHours() / settings.battery.watthoursPerKilometer); } + +std::string getBatteryDebugString() +{ + float avgVoltage = 0; + for (auto &controller : controllers) + { + avgVoltage += controller.getCalibratedVoltage(); + } + avgVoltage = avgVoltage / controllers.size(); + return fmt::format("{:.1f}V {}A", avgVoltage, sumCurrent); +} diff --git a/main/battery.h b/main/battery.h index 31f4e66..685dec0 100644 --- a/main/battery.h +++ b/main/battery.h @@ -27,3 +27,5 @@ std::string getBatteryRemainingWattHoursString(); std::string getBatteryCellTypeString(); std::string getRemainingRangeString(); + +std::string getBatteryDebugString(); diff --git a/main/displays/menus/batterymenu.cpp b/main/displays/menus/batterymenu.cpp index 3b3ae97..9e568bc 100644 --- a/main/displays/menus/batterymenu.cpp +++ b/main/displays/menus/batterymenu.cpp @@ -7,8 +7,26 @@ #include "mainmenu.h" #include "displays/calibratevoltagedisplay.h" #include "accessors/settingsaccessors.h" +#include "fmt/core.h" class CurrentBatteryStatusText : public virtual espgui::TextInterface { public: std::string text() const override { return getBatteryPercentageString(); } }; +class BatteryDebugText : public virtual espgui::TextInterface { public: std::string text() const override { return getBatteryDebugString(); } }; +class BatteryDebug2Text : public virtual espgui::TextInterface { + public: std::string text() const override { + float avgVoltage = 0; + for (auto &controller : controllers) + { + avgVoltage += controller.getCalibratedVoltage(); + } + avgVoltage = avgVoltage / controllers.size(); + + auto watt = sumCurrent * avgVoltage; + auto w_per_kmh = watt / avgSpeedKmh; + return fmt::format("{:.1f} {:.2f}W/kmh", avgSpeedKmh, w_per_kmh); + } +}; + +class BatteryDebug3Text : public virtual espgui::TextInterface { public: std::string text() const override { return fmt::format("{}fA {}bA", fixCurrent(controllers.front.feedback.left.dcLink + controllers.front.feedback.right.dcLink), fixCurrent(controllers.back.feedback.left.dcLink + controllers.back.feedback.right.dcLink)); } }; using BatteryCellSeriesChangeScreen = espgui::makeComponent< espgui::ChangeValueDisplay, @@ -39,6 +57,9 @@ using namespace espgui; BatteryMenu::BatteryMenu() { constructMenuItem>(); + constructMenuItem>(); + constructMenuItem>(); + constructMenuItem>(); constructMenuItem>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>();