Free memory on the CYD and drop the old manual profile (0.2.50)
The CYD restarted under load: a slider fill rounded less than its track made LVGL draw the fill into a buffer of its own size on every redraw (15-20 KB), and when that allocation failed the refresh retried until the task watchdog fired. Track and fill now share one radius, and tests/test_layer_free.py keeps every layer-making style out of the profiles, the packages and the firmware headers. A tile keeps only the fields every card uses; climate modes, select options, weather, sun and timer times, the media title and the vacuum rows moved to an Extra block that exists only while a state needs one, and the state copy became a fingerprint. runtime_tiles::model went from 24,296 to 8,216 bytes. The manual profile that bound tiles to fixed entities in the YAML is gone: 331 TILE* substitutions, DYNAMIC_TILES/TILE_COUNT/DIRECT_ACTIONS, the 80 Home Assistant subscriptions, its tap handlers and scripts, its own vacuum card, its guides and helper scripts, and the five stale header copies in the repository root that two C++ tests were compiling instead of the components. esphome config of both Easy profiles is unchanged by that cleanup. tile_scroll and the wake overlay no longer light up on a tap, and the debug sensor min_free reports the lowest free heap since boot. On the bench CYD static RAM went from 32.0% to 22.8% and free heap from 64-77 KB to about 101 KB, with 78 KB as the lowest point over thirteen hours without a restart. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+20
-11
@@ -11,14 +11,20 @@ panel, a loose connection, unstable power, or random outliers.
|
||||
|
||||
## Preparing
|
||||
|
||||
1. Use the `device.yaml` from `tools/new_device.py`, with your own
|
||||
`calibration.yaml` that starts as identity. Don't carry over the personal
|
||||
correction from the historical base profile.
|
||||
1. Use the screen's own ESPHome YAML, the one ESP Screens wrote when it was
|
||||
installed, and add your own `calibration.yaml` to its `packages:` (it starts as
|
||||
identity). Don't carry over another panel's correction.
|
||||
|
||||
```yaml
|
||||
packages:
|
||||
display: ... # what ESP Screens put there
|
||||
calibration: !include calibration.yaml
|
||||
```
|
||||
2. Check the data cable and the USB port with `python -m serial.tools.list_ports`.
|
||||
3. Flash from the repo root:
|
||||
|
||||
```sh
|
||||
python -m esphome -s CALIBRATION_ON_BOOT true run device.yaml --device <USB_PORT>
|
||||
python -m esphome -s CALIBRATION_ON_BOOT true run <your-screen>.yaml --device <USB_PORT>
|
||||
```
|
||||
|
||||
4. Physically check for the **dark screen with five white + marks**.
|
||||
@@ -75,8 +81,8 @@ The script:
|
||||
placing a new, complete version.
|
||||
|
||||
The output contains only the four base bounds and six affine coefficients in
|
||||
an ESPHome substitutions map. `device.yaml` imports this as the calibration
|
||||
package. Don't change the coefficients by feel, and don't add a second correction
|
||||
an ESPHome substitutions map, which the screen's YAML imports as the
|
||||
calibration package. Don't change the coefficients by feel, and don't add a second correction
|
||||
in the driver. The `raw=` logs contain the filtered **physical ADC values**,
|
||||
even once a correction is already set; recalibrating therefore doesn't stack twice.
|
||||
|
||||
@@ -87,7 +93,7 @@ A successful fit on existing data is not yet a successful physical test.
|
||||
Flash the correction, still with the measurement screen:
|
||||
|
||||
```sh
|
||||
python -m esphome -s CALIBRATION_ON_BOOT true run device.yaml --device <USB_PORT>
|
||||
python -m esphome -s CALIBRATION_ON_BOOT true run <your-screen>.yaml --device <USB_PORT>
|
||||
```
|
||||
|
||||
Close the log reader with Ctrl+C and collect **new taps**:
|
||||
@@ -109,12 +115,15 @@ test to pass. Report any remaining hardware deviation honestly.
|
||||
## Back to normal operation
|
||||
|
||||
```sh
|
||||
python -m esphome run device.yaml --device <USB_PORT>
|
||||
python -m esphome run <your-screen>.yaml --device <USB_PORT>
|
||||
```
|
||||
|
||||
No `-s CALIBRATION_ON_BOOT true` is given here. In `device.yaml`, the
|
||||
setting stays `false`. Check the actual tiles and navigation per
|
||||
[ACCEPTANCE.md](ACCEPTANCE.md).
|
||||
No `-s CALIBRATION_ON_BOOT true` is given here; the profile keeps it `false`.
|
||||
Then check the real thing: the tiles, the navigation and a few taps in the corners.
|
||||
|
||||
Most screens never need this. A CYD shows its calibration on the screen itself when
|
||||
it first starts, and ESP Screens has **Calibrate touch** for a repeat. This USB route
|
||||
is for a panel that stays off after that, or for a measurement report.
|
||||
|
||||
If calibration mode was opened only via the API, you can close it:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user