Public Access
Add dynamic pages with clock, date, Home Assistant values and fonts
The hardcoded clock is now the built-in dynamic page "Clock". A dynamic page has a background bitmap per time of day and up to 8 elements (clock, date, Home Assistant value, text), each with position, alignment, font and overlay. Pages are drawn on the ESP32, also for the web previews. - Pages tab in the web UI: page editor with drag and drop, font upload (TTF/OTF converted in the browser to the FDF1 dot font format) - Built-in fonts Small, Normal, Large and Full height (generated by tools/make_builtin_fonts.py), built-in bitmaps Pikachu and Pikachu yawning - Home Assistant values over the REST API (URL and token in the HA tab) - Settings version 4: evening settings removed (now time slots of the Clock page), old records are converted - HA Mode dropdown lists the dynamic pages and bitmaps Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1d3b084de1
commit
0411804a2f
49 files changed
+3058
-331
No files matched your search
@@ -12,8 +12,7 @@ static bool terminated(const char *text, int size)
|
||||
|
||||
const char *validateSettings(const Settings &s)
|
||||
{
|
||||
if (!terminated(s.page, sizeof(s.page)) ||
|
||||
(strcmp(s.page, PAGE_CLOCK) != 0 && !validBitmapName(s.page)))
|
||||
if (!terminated(s.page, sizeof(s.page)) || !validBitmapName(s.page))
|
||||
return "Unknown page";
|
||||
if (!terminated(s.off_page, sizeof(s.off_page)) || (s.off_page[0] && !validBitmapName(s.off_page)))
|
||||
return "Unknown off image";
|
||||
@@ -24,9 +23,6 @@ const char *validateSettings(const Settings &s)
|
||||
if (t.day_start > t.late_start || t.late_start > t.night_start)
|
||||
return "The times must be in order: day start, late evening, night";
|
||||
|
||||
if (s.clock.evening_start >= MINUTES_PER_DAY)
|
||||
return "The evening must start before 24:00";
|
||||
|
||||
if (s.flip_time < SETTINGS_FLIP_TIME_MIN || s.flip_time > SETTINGS_FLIP_TIME_MAX)
|
||||
return "The flip time must be between 50 and 2000 us";
|
||||
|
||||
@@ -42,10 +38,13 @@ const char *validateSettings(const Settings &s)
|
||||
|
||||
const HomeAssistantSettings &ha = s.home_assistant;
|
||||
if (!terminated(ha.host, sizeof(ha.host)) || !terminated(ha.user, sizeof(ha.user)) ||
|
||||
!terminated(ha.password, sizeof(ha.password)))
|
||||
!terminated(ha.password, sizeof(ha.password)) || !terminated(ha.api_url, sizeof(ha.api_url)) ||
|
||||
!terminated(ha.token, sizeof(ha.token)))
|
||||
return "Home Assistant text too long";
|
||||
if (ha.port == 0)
|
||||
return "Invalid MQTT port";
|
||||
if (ha.api_url[0] && strncmp(ha.api_url, "http://", 7) != 0)
|
||||
return "The Home Assistant URL must start with http:// (https is not supported)";
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user