Skip to content

Commit 58513a3

Browse files
committed
Get the live delivered power
1 parent 8a8e1ba commit 58513a3

File tree

2 files changed

+34
-9
lines changed

2 files changed

+34
-9
lines changed

src/lcd_tft.cpp

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ void LcdTask::display(const char *msg, int x, int y, int time, uint32_t flags)
5656

5757
void LcdTask::begin(EvseManager &evse, Scheduler &scheduler, ManualOverride &manual)
5858
{
59+
_evse = &evse;
60+
_scheduler = &scheduler;
61+
_manual = &manual;
5962
MicroTask.startTask(this);
6063
}
6164

@@ -96,22 +99,17 @@ unsigned long LcdTask::loop(MicroTasks::WakeReason reason)
9699
case State::Charge:
97100
render_image("/ChargeScreen.png", 0, 0);
98101

99-
// _lcd.setCursor(120, 180);
100-
// _lcd.setTextColor(TFT_BLACK, TFT_WHITE);
101-
// _lcd.setFreeFont(&DejaVu_Sans_72);
102-
// _lcd.setTextSize(1);
103-
// _lcd.setFreeFont(&FreeSans24pt7b);
104-
// _lcd.setTextSize(3);
105-
// _lcd.print("16");
106-
107102
render_right_text("16", 266, 180, &FreeSans24pt7b, TFT_BLACK, 3);
108103
_lcd.setTextSize(1);
109104
_lcd.print("A");
110105

106+
char buffer[32];
107+
111108
render_centered_text(esp_hostname.c_str(), 324, 72, 140, &FreeSans9pt7b, TFT_OPENEVSE_TEXT);
112109
render_centered_text("11/08/2023, 3:45 AM", 324, 92, 140, &FreeSans9pt7b, TFT_OPENEVSE_TEXT);
113110
render_centered_text("00:00:00", 324, 144, 140, &FreeSans9pt7b, TFT_WHITE);
114-
render_centered_text("0 kWh", 324, 196, 140, &FreeSans9pt7b, TFT_WHITE);
111+
get_scaled_number_value(_evse->getSessionEnergy(), 0, "Wh", buffer, sizeof(buffer));
112+
render_centered_text(buffer, 324, 196, 140, &FreeSans9pt7b, TFT_WHITE);
115113
//nextUpdate = 1000;
116114
break;
117115

@@ -123,6 +121,28 @@ unsigned long LcdTask::loop(MicroTasks::WakeReason reason)
123121
return nextUpdate;
124122
}
125123

124+
void LcdTask::get_scaled_number_value(double value, int precision, const char *unit, char *buffer, size_t size)
125+
{
126+
static const char *mod[] = {
127+
"",
128+
"k",
129+
"M",
130+
"G",
131+
"T",
132+
"P"
133+
};
134+
135+
int index = 0;
136+
while (value > 1000 && index < ARRAY_ITEMS(mod))
137+
{
138+
value /= 1000;
139+
index++;
140+
}
141+
142+
snprintf(buffer, size, "%.*f %s%s", precision, value, mod[index], unit);
143+
}
144+
145+
126146
void LcdTask::render_centered_text(const char *text, int16_t x, int16_t y, int16_t width, const GFXfont *font, uint16_t color, uint8_t size)
127147
{
128148
_lcd.setFreeFont(font);

src/lcd_tft.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ class LcdTask : public MicroTasks::Task
3030
};
3131

3232
State _state = State::Boot;
33+
EvseManager *_evse;
34+
Scheduler *_scheduler;
35+
ManualOverride *_manual;
3336

3437
static void png_draw(PNGDRAW *pDraw);
3538
protected:
@@ -41,6 +44,8 @@ class LcdTask : public MicroTasks::Task
4144
void render_right_text(const char *text, int16_t x, int16_t y, const GFXfont *font, uint16_t color, uint8_t size = 1);
4245
void load_font(const char *filename);
4346

47+
void get_scaled_number_value(double value, int precision, const char *unit, char *buffer, size_t size);
48+
4449
public:
4550
LcdTask();
4651

0 commit comments

Comments
 (0)