How oe9mdv/wordclock works
WordClock is an ESP8266-based German word clock: users provision Wi-Fi, configure the clock in its browser interface, and see the current time rendered on an LED word grid. Its main stages are network setup and web requests, saved color/time/DND settings, time and timezone acquisition, language-specific phrase selection, and physical LED output; startup health checking is also a documented feature. The sampled controller and renderers support several links below; wiring inside unsampled runtime modules is represented only where documented or otherwise evident from the repository tree and README.
Main entry points: controller.cpp Request controller · grid.cpp Language dispatch · led.cpp LED mapping · wifi.cpp Wi-Fi setup
Components 24
Network and UI
- Wi-Fi setup
wordclock/src/wifi.cpp - HTTP server
wordclock/src/httpServer.cpp - Settings interface
wordclock/src/gui.cpp - Request controller
wordclock/src/controller.cpp - Device runtime
wordclock/wordclock.ino
Clock settings
- Persistent settings
wordclock/src/config.cpp - Color conversion
wordclock/src/color.cpp - Do-not-disturb
wordclock/src/dnd.cpp - LED health check
wordclock/src/healthcheck.cpp
Time and language
- Network time
wordclock/src/time.cpp - Timezone offset
wordclock/src/utcOffset.cpp - Language dispatch
wordclock/src/grid.cpp - German layouts
wordclock/src/language/de_DE.cpp - Alternate layouts
wordclock/src/language/de_DE_alt.cpp - Rounded layout
wordclock/src/language/de_DE_round.cpp - Simplified layouts
wordclock/src/language/de_DE_s.cpp - S1 layout
wordclock/src/language/de_DE_s1.cpp
LED display
- LED mapping
wordclock/src/led.cpp - LED strip
Other components
- Clock owner
- Phone browser
- Wi-Fi router
- NTP service
- Timezone API
Connections 36
- Clock owner → Wi-Fi setup: provisions
- Phone browser → Wi-Fi setup: sets credentials
- Wi-Fi setup → Wi-Fi router: joins network
- Phone browser → HTTP server: requests settings
- HTTP server → Request controller: dispatches
- Request controller → Settings interface: requests page
- Settings interface → Phone browser: serves controls
- Request controller → Color conversion: converts colors
- Request controller → Persistent settings: saves settings
- Request controller → Timezone offset: updates offset
- Request controller → Language dispatch: refreshes display
- Request controller → Wi-Fi setup: resets credentials
- Device runtime → Wi-Fi setup: starts setup
- Device runtime → HTTP server: starts server
- Device runtime → Network time: starts timekeeping
- Device runtime → LED health check: runs check
- Network time → NTP service: synchronizes time
- Timezone offset → Timezone API: looks up offset
- Network time → Persistent settings: reads time settings
- Language dispatch → German layouts: selects layout
- Language dispatch → Alternate layouts: selects layout
- Language dispatch → Rounded layout: selects layout
- Language dispatch → Simplified layouts: selects layout
- Language dispatch → S1 layout: selects layout
- German layouts → Do-not-disturb: checks quiet hours
- Alternate layouts → Do-not-disturb: checks quiet hours
- Rounded layout → Do-not-disturb: checks quiet hours
- Simplified layouts → Do-not-disturb: checks quiet hours
- S1 layout → Do-not-disturb: checks quiet hours
- German layouts → LED mapping: sets LED colors
- Alternate layouts → LED mapping: sets LED colors
- Rounded layout → LED mapping: sets LED colors
- Simplified layouts → LED mapping: sets LED colors
- S1 layout → LED mapping: sets LED colors
- LED mapping → LED strip: drives strip
- LED health check → LED strip: tests LEDs