From d8c97d7f2024ec4b752646fb10fecd0f412e4a0a Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Tue, 11 Jan 2022 11:16:15 +0100 Subject: [PATCH 1/3] Added avg speed over time --- main/displays/menus/statisticsmenu.cpp | 7 +++++++ main/drivingstatistics.cpp | 5 +++++ main/drivingstatistics.h | 1 + 3 files changed, 13 insertions(+) diff --git a/main/displays/menus/statisticsmenu.cpp b/main/displays/menus/statisticsmenu.cpp index a58a139..a427589 100644 --- a/main/displays/menus/statisticsmenu.cpp +++ b/main/displays/menus/statisticsmenu.cpp @@ -126,6 +126,12 @@ class EfficiencyText : public virtual espgui::TextInterface { } }; +class AverageSpeedKmhOverTime : public virtual espgui::TextInterface { + public: std::string text() const override { + return fmt::format("Avg speed: {:.1f} km/h", getAvgKmh()); + } +}; + class EfficiencyTextColor : public virtual espgui::ColorInterface { public: int color() const override @@ -169,6 +175,7 @@ StatisticsMenu::StatisticsMenu() // constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); + constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); constructMenuItem, SaveKilometersAction, StaticMenuItemIcon<&bobbyicons::update>>>(); diff --git a/main/drivingstatistics.cpp b/main/drivingstatistics.cpp index df66b24..b5ef81f 100644 --- a/main/drivingstatistics.cpp +++ b/main/drivingstatistics.cpp @@ -19,6 +19,11 @@ float getAvgWhPerKm() return drivingStatistics.wh_used / (drivingStatistics.meters_driven / 1000.f); } +float getAvgKmh() +{ + return (drivingStatistics.meters_driven / 1000.) / (drivingStatistics.currentDrivingTime.count() / 1000 / 60 / 60); // (meter / 1000) / (ms / 1000 / 60 / 60) +} + std::string getEfficiencyClassString() { const float avgWhPerKm = getAvgWhPerKm(); diff --git a/main/drivingstatistics.h b/main/drivingstatistics.h index 4920e3b..546f7b3 100644 --- a/main/drivingstatistics.h +++ b/main/drivingstatistics.h @@ -19,5 +19,6 @@ extern DrivingStatistics drivingStatistics; void initStatistics(); void calculateStatistics(); float getAvgWhPerKm(); +float getAvgKmh(); std::string getEfficiencyClassString(); uint16_t getEfficiencyClassColor(); From bc340a33194028890854c543d324204be3747532 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Mon, 17 Jan 2022 10:10:08 +0100 Subject: [PATCH 2/3] Implemented remaining estimate km left --- main/displays/menus/statisticsmenu.cpp | 6 ++++++ main/drivingstatistics.cpp | 11 +++++++++++ main/drivingstatistics.h | 2 ++ 3 files changed, 19 insertions(+) diff --git a/main/displays/menus/statisticsmenu.cpp b/main/displays/menus/statisticsmenu.cpp index a427589..b81e72b 100644 --- a/main/displays/menus/statisticsmenu.cpp +++ b/main/displays/menus/statisticsmenu.cpp @@ -132,6 +132,12 @@ class AverageSpeedKmhOverTime : public virtual espgui::TextInterface { } }; +class EstimatedKmLeft : public virtual espgui::TextInterface { + public: std::string text() const override { + return fmt::format("est km:{}", getRemainingEstimateRangeString()); + } +}; + class EfficiencyTextColor : public virtual espgui::ColorInterface { public: int color() const override diff --git a/main/drivingstatistics.cpp b/main/drivingstatistics.cpp index b5ef81f..ed0efc6 100644 --- a/main/drivingstatistics.cpp +++ b/main/drivingstatistics.cpp @@ -24,6 +24,11 @@ float getAvgKmh() return (drivingStatistics.meters_driven / 1000.) / (drivingStatistics.currentDrivingTime.count() / 1000 / 60 / 60); // (meter / 1000) / (ms / 1000 / 60 / 60) } +float getEstimatedKmLeft() +{ + return (getRemainingWattHours() / getAvgWhPerKm()); +} + std::string getEfficiencyClassString() { const float avgWhPerKm = getAvgWhPerKm(); @@ -54,6 +59,12 @@ uint16_t getEfficiencyClassColor() else return 0xF800; } +std::string getRemainingEstimateRangeString() +{ + return fmt::format("{:.1f} km", getEstimatedKmLeft()); +} + + void initStatistics() { diff --git a/main/drivingstatistics.h b/main/drivingstatistics.h index 546f7b3..1ec2eed 100644 --- a/main/drivingstatistics.h +++ b/main/drivingstatistics.h @@ -20,5 +20,7 @@ void initStatistics(); void calculateStatistics(); float getAvgWhPerKm(); float getAvgKmh(); +float getEstimatedKmLeft(); std::string getEfficiencyClassString(); +std::string getRemainingEstimateRangeString(); uint16_t getEfficiencyClassColor(); From b27cf645e6632e9afac76603f44528e62e476998 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Wed, 26 Jan 2022 18:02:01 +0100 Subject: [PATCH 3/3] Forgot to actually use EstimatedKmLeft --- main/displays/menus/statisticsmenu.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main/displays/menus/statisticsmenu.cpp b/main/displays/menus/statisticsmenu.cpp index b81e72b..5b6c52a 100644 --- a/main/displays/menus/statisticsmenu.cpp +++ b/main/displays/menus/statisticsmenu.cpp @@ -177,12 +177,13 @@ StatisticsMenu::StatisticsMenu() constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); - constructMenuItem>(); // constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); + constructMenuItem>(); constructMenuItem>(); + constructMenuItem>(); constructMenuItem>(); constructMenuItem, SaveKilometersAction, StaticMenuItemIcon<&bobbyicons::update>>>(); constructMenuItem, ClearCurrentStatsAction, StaticMenuItemIcon<&bobbyicons::reboot>>>();