How jef-sure/dotview-clock works
This ESP32 firmware runs a dot-font clock: users provision Wi-Fi and location, then the device obtains time-zone and weather context and renders animated time and weather across paired OLED displays. The README documents setup, automatic or manual location, forecasts, color transitions, and the display library’s virtual-screen and font capabilities. Source excerpts are partial, so links between orchestration and unsampled subsystems are based on documented behavior; uncertain implementation details are omitted.
Main entry points: main.c Clock firmware · http_client_request.c HTTP client · weather.c Weather processing · provisioning.c Wi-Fi provisioning
Components 22
Provisioning
- Clock firmware
main/main.c - Wi-Fi provisioning
main/provisioning.c - QR generation
managed_components/espressif__qrcode - Settings interface
main/http_server.c - Persistent settings
main/nvs_config.c
Time and weather
- Location lookup
main/auto_location.c - Time-zone setup
main/tzones.c - Weather processing
main/weather.c - HTTP client
main/http_client_request.c - JSON parsing
components/mjson/src/mjson.c
Clock rendering
- Clock and weather drawing
main/main.c - Font rendering and morphs
components/dgx/src/font.c - Bundled fonts
components/dgx/src/fonts/CasusDotView.c
Display component
- Drawing primitives
components/dgx/src/draw.c - Virtual screens
components/dgx/src/drivers/vscreen.c - SSD1351 driver
components/dgx/src/drivers/ssd1351.c - ESP32 SPI bus
components/dgx/src/bus/spi_esp32.c
Other components
- Clock user
- OpenWeather
- ipinfo
- Time servers
- Paired OLED displays
Connections 23
- Clock user → Wi-Fi provisioning: sets up Wi-Fi
- Wi-Fi provisioning → QR generation: generates code
- Clock user → Settings interface: enters settings
- Settings interface → Persistent settings: saves settings
- Clock firmware → Wi-Fi provisioning: starts setup
- Clock firmware → Settings interface: enables settings
- Clock firmware → Location lookup: requests location
- Location lookup → HTTP client: requests lookup
- HTTP client → ipinfo: sends request
- Clock firmware → Time-zone setup: sets time zone
- Clock firmware → Weather processing: polls weather
- Weather processing → HTTP client: requests forecast
- HTTP client → OpenWeather: sends request
- HTTP client → Time servers: synchronizes time
- Weather processing → JSON parsing: parses response
- Clock firmware → Clock and weather drawing: dispatches display updates
- Clock and weather drawing → Font rendering and morphs: draws glyphs
- Font rendering and morphs → Bundled fonts: reads glyph data
- Clock and weather drawing → Drawing primitives: draws graphics
- Clock and weather drawing → Virtual screens: renders frames
- Virtual screens → SSD1351 driver: transfers image
- SSD1351 driver → ESP32 SPI bus: sends display data
- ESP32 SPI bus → Paired OLED displays: drives displays