|
|
@ -20,6 +20,7 @@ SPIClass hspi(HSPI); |
|
|
|
DisplayEPaper::DisplayEPaper() { |
|
|
|
mDisplayRotation = 2; |
|
|
|
mHeadFootPadding = 16; |
|
|
|
memset(_fmtText, 0, EPAPER_MAX_TEXT_LEN); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -114,9 +115,9 @@ void DisplayEPaper::headlineIP() { |
|
|
|
|
|
|
|
do { |
|
|
|
if ((WiFi.isConnected() == true) && (WiFi.localIP() > 0)) { |
|
|
|
snprintf(_fmtText, sizeof(_fmtText), "%s", WiFi.localIP().toString().c_str()); |
|
|
|
snprintf(_fmtText, EPAPER_MAX_TEXT_LEN, "%s", WiFi.localIP().toString().c_str()); |
|
|
|
} else { |
|
|
|
snprintf(_fmtText, sizeof(_fmtText), "WiFi not connected"); |
|
|
|
snprintf(_fmtText, EPAPER_MAX_TEXT_LEN, "WiFi not connected"); |
|
|
|
} |
|
|
|
_display->getTextBounds(_fmtText, 0, 0, &tbx, &tby, &tbw, &tbh); |
|
|
|
uint16_t x = ((_display->width() - tbw) / 2) - tbx; |
|
|
@ -137,7 +138,7 @@ void DisplayEPaper::lastUpdatePaged() { |
|
|
|
_display->fillScreen(GxEPD_BLACK); |
|
|
|
do { |
|
|
|
if (NULL != mUtcTs) { |
|
|
|
snprintf(_fmtText, sizeof(_fmtText), ah::getDateTimeStr(gTimezone.toLocal(*mUtcTs)).c_str()); |
|
|
|
snprintf(_fmtText, EPAPER_MAX_TEXT_LEN, ah::getDateTimeStr(gTimezone.toLocal(*mUtcTs)).c_str()); |
|
|
|
|
|
|
|
_display->getTextBounds(_fmtText, 0, 0, &tbx, &tby, &tbw, &tbh); |
|
|
|
uint16_t x = ((_display->width() - tbw) / 2) - tbx; |
|
|
@ -158,7 +159,7 @@ void DisplayEPaper::versionFooter() { |
|
|
|
_display->setPartialWindow(0, _display->height() - mHeadFootPadding, _display->width(), mHeadFootPadding); |
|
|
|
_display->fillScreen(GxEPD_BLACK); |
|
|
|
do { |
|
|
|
snprintf(_fmtText, sizeof(_fmtText), "Version: %s", _version); |
|
|
|
snprintf(_fmtText, EPAPER_MAX_TEXT_LEN, "Version: %s", _version); |
|
|
|
|
|
|
|
_display->getTextBounds(_fmtText, 0, 0, &tbx, &tby, &tbw, &tbh); |
|
|
|
uint16_t x = ((_display->width() - tbw) / 2) - tbx; |
|
|
@ -179,7 +180,7 @@ void DisplayEPaper::offlineFooter() { |
|
|
|
_display->fillScreen(GxEPD_BLACK); |
|
|
|
do { |
|
|
|
if (NULL != mUtcTs) { |
|
|
|
snprintf(_fmtText, sizeof(_fmtText), "offline"); |
|
|
|
snprintf(_fmtText, EPAPER_MAX_TEXT_LEN, "offline"); |
|
|
|
|
|
|
|
_display->getTextBounds(_fmtText, 0, 0, &tbx, &tby, &tbw, &tbh); |
|
|
|
uint16_t x = ((_display->width() - tbw) / 2) - tbx; |
|
|
@ -203,13 +204,13 @@ void DisplayEPaper::actualPowerPaged(float totalPower, float totalYieldDay, floa |
|
|
|
do { |
|
|
|
// actual Production
|
|
|
|
if (totalPower > 9999) { |
|
|
|
snprintf(_fmtText, sizeof(_fmtText), "%.1f kW", (totalPower / 1000)); |
|
|
|
snprintf(_fmtText, EPAPER_MAX_TEXT_LEN, "%.1f kW", (totalPower / 1000)); |
|
|
|
_changed = true; |
|
|
|
} else if ((totalPower > 0) && (totalPower <= 9999)) { |
|
|
|
snprintf(_fmtText, sizeof(_fmtText), "%.0f W", totalPower); |
|
|
|
snprintf(_fmtText, EPAPER_MAX_TEXT_LEN, "%.0f W", totalPower); |
|
|
|
_changed = true; |
|
|
|
} else |
|
|
|
snprintf(_fmtText, sizeof(_fmtText), "offline"); |
|
|
|
snprintf(_fmtText, EPAPER_MAX_TEXT_LEN, "offline"); |
|
|
|
|
|
|
|
if ((totalPower == 0) && (mEnPowerSave)) { |
|
|
|
_display->fillRect(0, mHeadFootPadding, 200, 200, GxEPD_BLACK); |
|
|
@ -264,7 +265,7 @@ void DisplayEPaper::actualPowerPaged(float totalPower, float totalYieldDay, floa |
|
|
|
// Inverter online
|
|
|
|
_display->setFont(&FreeSans12pt7b); |
|
|
|
y = _display->height() - (mHeadFootPadding + 10); |
|
|
|
snprintf(_fmtText, sizeof(_fmtText), " %d online", isprod); |
|
|
|
snprintf(_fmtText, EPAPER_MAX_TEXT_LEN, " %d online", isprod); |
|
|
|
_display->getTextBounds(_fmtText, 0, 0, &tbx, &tby, &tbw, &tbh); |
|
|
|
_display->drawInvertedBitmap(10, y - tbh, myWR, 20, 20, GxEPD_BLACK); |
|
|
|
x = ((_display->width() - tbw - 20) / 2) - tbx; |
|
|
|