Public Access
The Nano's periodic full redraw blocked for ~0.8 s. A frame that arrived meanwhile overflowed its 64-byte serial buffer; lost bytes in a bitmap shift the rest of the image (picture moved up), and diff frames never repaired it. - Nano: all drawing (frames, effects, the dot refresh) runs from update() in ~1 ms slices; the refresh pauses while a frame is received or shown - New commands: C (reply with the image checksum) and I (refresh minutes, EEPROM) - ESP32: NanoMonitor asks for the checksum after frames and sends the whole image again on a mismatch, missing answer or Nano restart; counts ERR replies. Periodic whole-image resync. - Settings: "Dot refresh" and "Image resync" intervals (settings v5, v4 records are migrated) - System tab: loop timing, free memory, frame check counts - test_driver: the real driver against a simulated panel Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.0 KiB
2.0 KiB
How it works
- ESP32 boot. The ESP32 connects to WiFi and starts ArduinoOTA. After a crash it
runs only OTA for 15 seconds, and after repeated crashes it goes to safe mode. Bad OTA
firmware is rolled back automatically, see
Keeping OTA alive. It then switches the display relay on, waits for
the Nano's
READYmessage (at most 3 s), shows "Connecting...", starts NTP and connects to MQTT. - Clock. Once the time is synced, the ESP32 sends a new frame whenever the screen
changes, mostly once a minute:
- 08:00–22:00: the page: the chosen page (by default the built-in Clock page,
Pikachu with a thought bubble showing
HH:MM, yawning from 17:00), or what the schedule and rules pick. - 22:00–23:30: the clock is only shown during the minutes :00, :15, :30 and :45. 30 seconds after each of those minutes, the relay turns the display off.
- 23:31–08:00: the screen is cleared (or shows the off image chosen in the web UI) and power is cut after 30 seconds.
- 08:00–22:00: the page: the chosen page (by default the built-in Clock page,
Pikachu with a thought bubble showing
- Home Assistant: switches, dropdowns and sensors over MQTT, see Home Assistant.
- Nano. The Nano reads commands from the serial line and updates its frame buffer.
On
Dit flips only the dots that changed, in small steps so it never stops reading the serial port. Every 2 minutes (Settings, "Dot refresh") it flips every dot once more to fix dots that did not flip. - Frame check. After a frame the ESP asks the Nano for a checksum of its image and compares it with what it sent. When they differ (lost bytes can shift the picture), the Nano doesn't answer, or it restarted, the ESP sends the whole image again. It also does that every 10 minutes (Settings, "Image resync"); only dots that differ flip, so normally nothing changes. The counts are on the System tab.
The serial protocol is described in src/nano/README.md.