Files
homeassistant_espscreen/docs/TEST_RESULTS_0288.md
T
Max Gramser fcdea12c44 Keep every screen's Wi-Fi awake from the shared core, so Home Assistant's messages no longer wait for the router's next beacon (0.2.88)
packages/core.yaml sets wifi: power_save_mode: none. ESPHome merges it
under the screen's own wifi: block, which keeps the network, the password
and the hotspot, and the screen's own YAML still wins on the mode. The
YAML ESP Screens writes has had the line since app 0.2.24; screens with
an older or hand-written YAML ran ESPHome's ESP32 default light, and
their messages from Home Assistant waited 76-117 ms on the bench.

esphome config on the bench screens' Device Builder YAMLs: NONE for both
without a line of their own, LIGHT when the YAML says light. The bench
Guition, flashed from its Device Builder YAML: ping 15 ms average instead
of 117 ms. tools/check.sh: 474 Python tests (a new one keeps the core's
wifi: block to this one key), 19/19 C++, editor; firmware unchanged in
size (CYD 1,678,816 B, 91.5 %; Guition 2,055,280 B), since the checkout
profiles already had the line.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 09:06:53 +02:00

59 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Test results app 0.2.88 / firmware 0.2.74 (2026-09-19)
The camera measurements of 0.2.87 showed the bench screens' Wi-Fi dozing: their Device Builder YAMLs date from before
app 0.2.24 and have no `power_save_mode`, so they ran ESPHome's default for the ESP32, `light` (`WIFI_PS_MIN_MODEM`: the
radio sleeps between the router's beacons, and what Home Assistant sends waits at the router until the next one). After
the pros and cons Max chose: "zet hem maar op none, voor iedereen vanaf nu voor altijd", with overriding still possible.
## What changed
`packages/core.yaml` has a `wifi:` block with one key, `power_save_mode: none`. ESPHome merges it under the screen's own
`wifi:` (the network, the password, the fallback hotspot stay there), and the screen's own YAML wins on any key it sets
(`merge_config` in `esphome/config_helpers.py`: the main config over every package, a later package over an earlier
one). The YAML ESP Screens writes has had the same line since app 0.2.24 and keeps it. The app's Override YAML still
refuses a `wifi:` section (`Firmware.PROTECTED_OVERRIDE_KEYS`), so the way to another mode is the screen's own YAML in
the ESPHome Device Builder.
## Checked
`esphome config` (ESPHome 2026.6.2) on copies of the bench screens' Device Builder YAMLs with the packages of this
branch:
| YAML | `power_save_mode` after the merge |
|---|---|
| Guition Wallbox, as the Device Builder has it (no line) | `NONE` |
| the same with `power_save_mode: light` under `wifi:` | `LIGHT` |
| CYD, as the Device Builder has it (no line) | `NONE` |
The Guition's build from its Device Builder YAML generates `set_power_save_mode(wifi::WIFI_POWER_SAVE_NONE)`.
## Measured on the bench Guition
Flashed over the air from its Device Builder YAML (no `power_save_mode` line) with this branch:
| | fw 0.2.73, `light` | fw 0.2.74, `none` from the package |
|---|---|---|
| Ping from the Mac (30 × 0.2 s) | 103-191 ms, 117 ms average | 5-89 ms, 15 ms average |
| Camera, cold open | 4.55 s | 4.37 s |
| Camera, warm open | 2.06 s | 2.08 s |
| Loop over 50 ms during an open | 5 of 12 opens (58-107 ms) | 1 of 5 opens (101 ms) |
With the 0.2.87 measurements of a power-save-off build (none in six opens), a loop waited over 50 ms in one of eleven
opens with the Wi-Fi awake. The camera times hardly change: the camera's own snapshot and the download dominate them.
The power the radio now spends listening was not measured; by Espressif's datasheets the receiver draws about
90-100 mA while it listens, a few tenths of a watt on a mains-powered screen.
## Automated
- `tools/check.sh`: Python 474 tests OK (new: `test_easy_package` "the Wi-Fi never dozes but stays the owner's": the
core's `wifi:` block holds only that key, no other package has one, the app's YAML still writes it), C++ 19/19,
packages, icons, editor tests, types, build and bundle PASS.
- `tools/check.sh --firmware --baseline 1678816`: CYD 1,678,816 B = 91.5 % (+0 B: the checkout profiles already set
`power_save_mode: none`), Guition 2,055,280 B = 25.3 %.
## Not tested
- The CYD on its panel: config check only. It gets the setting with its next **Update**.
- Studio 1: its YAML is in the studio's Home Assistant; it gets the setting with its next **Update** unless its own
YAML sets another mode.