Operation¶
Update cycle and deep sleep¶
On battery the pace depends on the charge level and the time of day. With the defaults
(BATTERY_MODES, LOW_BATTERY_PERCENT,
NIGHT; adjustable in src/config.py):
Condition |
Fetch data (WLAN) |
Note |
|---|---|---|
Battery from 50 % |
every 10 minutes |
|
Battery 25–50 % |
every 30 minutes |
|
Battery below 25 % |
hourly |
bottom-left tile: “<hostname> aufladen” |
Night 01–07 |
at most hourly |
The header shows the time of the last data and of the next update (“Stand 14:20 · neu 14:30”).
The next update is due one interval after the last one started, on a full minute. A clock updated every minute cost too much battery.
In between the board is in deep sleep until the next update, and it wakes on time at the end
of the night. At each update it sets the clock via NTP, fetches the values from Home Assistant
and redraws the screen (without flashing; a full refresh comes at least every
FULL_REFRESH_INTERVAL_S). The last values are kept in RTC memory, which survives deep sleep; if
Home Assistant cannot be reached, they stay on screen marked “offline”.
While the board is in deep sleep it cannot be reached via USB or WLAN: press the reset button
before make deploy or make monitor, or use make deploy-wlan.
Awake mode and web interface¶
On USB power (the battery is charging or full) the board stays awake: time and data are updated
as on battery, the web interface is always up, and a WLAN symbol in the header shows that the
board can be reached. With SHOW_QR_CODE = True in src/config.py the bottom-left tile also
shows a QR code linking to the web interface; tools/qr_sticker.py prints one as a sticker for
the frame instead. With a voltage divider on USB_SENSE_PIN (see
Wiring) plugging in USB wakes the board at once, and the charging symbol shows
while USB is plugged in. Without it, external power is guessed from the fuel gauge, so the
switch takes a few minutes after plugging in or out.
The WLAN symbol also shows during the web window after a reset (see
AWAKE_AFTER_RESET_S); the screen is redrawn without it before
the board goes to sleep.
http://epaper.local/– for each of the six tiles choose the data source, label, style (number, text, weather icon) and decimals. They are saved intiles.jsonon the board and the display is redrawn. Until thenDEFAULT_TILESfromsrc/defaults.pyapplies. Without waiting at the browser,tools/board_tiles.pyfetches the settings into a local file (pull) and sends the edited file back (push), waking a sleeping board through the maintenance switch.Number tiles can show a trend: an arrow in the top right corner when the value rose or fell by at least a threshold over up to three hours (1 hPa is the usual barometer tendency; the page suggests a threshold from the unit). The board keeps the history of all number tiles itself in
trend.json, one value per half hour, and compares with the oldest value of the last three hours; so an arrow can appear as soon as the trend is switched on, and within half an hour after a restart. Steady values show no arrow.“Warnungen” on the same page lists the warning sources (default
DEFAULT_ALERTS, such as the NINA sensors of your area; saved inalerts.json). If one of them is active, a warning screen replaces the tiles at the next data update: title, text, severity, validity and sender of the most severe warning; further ones are counted.http://epaper.local/battery– battery state as JSONhttp://epaper.local/log– boot log
On battery the board is reachable for AWAKE_AFTER_RESET_S after a reset (power on, reset button,
make deploy), or while the maintenance switch in Home Assistant is on.
With STATUS_SCREENS the display shows the boot sequence after every
reset (power on, reset button, restart after an update, watchdog): “Dashboard startet”, each
WLAN connection attempt and the result, then the dashboard. An update over the WLAN
(make deploy-wlan) also shows how many and which files it changed before the board restarts.
Since USB output during boot is usually lost, boot.py also writes to boot.log (last 40
lines), available at http://epaper.local/log.
The texts on the display and in the web interface are German for now; a configurable language is on the backlog.