Skip to content

Pool: source pzem6l24 from upstream PR, park the display stack - #92

Merged
nuttytree merged 2 commits into
masterfrom
f/pool-pzem6l24-from-upstream-pr
Aug 30, 2026
Merged

nuttytree merged 2 commits into
masterfrom
f/pool-pzem6l24-from-upstream-pr

Conversation

@nuttytree

@nuttytree nuttytree commented Aug 29, 2026 •

Copy link
Copy Markdown
Owner

The local pzem6l24 component stopped building cleanly against 2026.8.0, which moved the legacy on_modbus_data()/on_modbus_error() hooks off ModbusClientDevice onto the deprecated ModbusDevice shim. The rewrite in esphome/esphome#17849 supersedes the local copy entirely, so pool now pulls the component straight from that PR rather than carrying a patched local one.

At the same time the Waveshare panel is off the bench, so the whole display path is commented out rather than deleted — it comes back verbatim when the hardware is back. The pump flow inputs also picked up a short debounce: switch chatter was registering as flow and confusing the controller's runtime tracking.

Changes:

  • Source pzem6l24 from github://pr#17849 (refresh: 1h); pool_controller still comes from ../components
  • Comment out display, lvgl, touchscreen, font, the backlight light/output/power_supply, psram, and the wifi_rssi/time_source LVGL update handlers
  • Add delayed_on: 50ms to the main and auxiliary pump flow binary sensors
  • Set log_level: DEBUG for the current bring-up
  • Pin PZEM6L24's base class to modbus::ModbusDevice so the local component still compiles

That last one is unrelated to the pool config but blocks it. CI installs ESPHome unpinned, so the clang-tidy step began failing the moment 2026.8.0 shipped (only virtual member functions can be marked 'override' at pzem6l24.h:95) — master has been red on this since the release, independent of these changes. scripts/clang_tidy.py lints components/ off the pool build whether or not pool.yaml references them, so the local copy has to keep compiling even now that pool sources the component from #17849. The ModbusDevice shim is slated for removal in 2027.2.0; #17849 should land well before that, at which point components/pzem6l24/ can be dropped.

Verified with esphome config pool.yaml (valid) and a clean pre-commit run --all-files.

nuttytree and others added 2 commits August 29, 2026 18:51
The local pzem6l24 component no longer builds cleanly against 2026.8.0's
modbus refactor, and the rewrite in esphome/esphome#17849 supersedes it, so
pool now pulls the component straight from that PR instead of ../components.
The Waveshare display/LVGL stack is commented out rather than deleted while
the panel is off the bench, and the flow inputs get a short debounce so
switch chatter no longer registers as flow.

Changes:
- Source pzem6l24 from github://pr#17849 (refresh 1h); keep pool_controller local
- Comment out display, lvgl, touchscreen, font, backlight light/output/power_supply,
  psram, and the wifi/time on_value LVGL handlers
- Add `delayed_on: 50ms` to the main and auxiliary pump flow sensors
- Set log_level DEBUG for the current bring-up

Verified with `esphome config pool.yaml`.

Co-Authored-By: Claude <noreply@anthropic.com>
CI installs ESPHome unpinned, so the clang-tidy step started failing the
moment 2026.8.0 shipped: it moved the legacy on_modbus_data()/on_modbus_error()
hooks off ModbusClientDevice onto the deprecated ModbusDevice shim, leaving
`only virtual member functions can be marked 'override'` on pzem6l24.h:95.
This is unrelated to the pool config change but blocks it, since clang_tidy.py
lints components/ off the pool build whether or not pool.yaml references them.

Pin the base class to modbus::ModbusDevice so it builds again. The shim is
slated for removal in 2027.2.0, but esphome/esphome#17849 replaces this
component well before then -- pool.yaml already sources it from that PR.

Co-Authored-By: Claude <noreply@anthropic.com>
@nuttytree
nuttytree merged commit 53d7e58 into master Aug 30, 2026
7 checks passed
@nuttytree
nuttytree deleted the f/pool-pzem6l24-from-upstream-pr branch August 30, 2026 00:04
nuttytree added a commit that referenced this pull request Sep 30, 2026
`device_base.yaml` mixed the chip-agnostic core (api, ota, logger, diagnostics,
time) with wifi -- both the `wifi:` block and the wifi-only diagnostics -- so an
ethernet device could not reuse the core without dragging in a wifi stack the
board doesn't have. The static-IP/DHCP split compounded it: `wifi/wifi.yaml` and
`wifi/wifi_dhcp.yaml` were near-identical copies, and every device carried
`ip_address`/`ip_subnet`/`ip_gateway` substitutions whether it used them or not.

Devices now include exactly one combo package, which is nothing but a `packages:`
block pulling in one common, one chip and one network layer.

- Split `device_base.yaml` into `device_common.yaml`, `device_esp32.yaml` /
  `device_esp8266.yaml` (platform block only), and `device_wifi.yaml` /
  `device_eth.yaml` (network stack plus its own diagnostics).
- Add the combo packages devices include: `device_esp32_wifi.yaml`,
  `device_esp8266_wifi.yaml`, `device_esp32_eth.yaml`.
- Add `text_sensor/ethernet_info.yaml`, mirroring `text_sensor/wifi_info.yaml`.
  The `ethernet:` block stays in the device yaml, since PHY/pin wiring is
  board-specific.
- Drop `wifi/wifi_dhcp.yaml` and collapse `wifi/wifi.yaml` to the DHCP form;
  static IPs are DHCP reservations on the router now.
- Rename `econet_base.yaml` to `econet.yaml`; rename every device's
  `device_base:` package key to `device:`.
- Drop the OTA and AP passwords and `ap_timeout`. This changes behaviour on
  upgrade: the first OTA push to each device still needs the old password, every
  push after that is unauthenticated, as is the fallback AP.
- Widen the CI build-cache key from `device_base*.yaml` to `device_*.yaml`.
- bt-proxy-basement: drop `connection_slots` from 4 to 3.
- pool.yaml: pin the pzem6l24 source to esphome/esphome at `36d39416f0a7` with
  `refresh: never` instead of tracking `github://pr#17849`. That PR head moved to
  `automation.register_apply_action` (esphome/esphome#19469), which landed after
  the 2026.9 branch cut and is in no released ESPHome, taking `esphome config`
  and `compile pool` down with it.
- Add `.claude/settings.json` denying reads of `devices/secrets.yaml`.
- Update CLAUDE.md for the new layout, and document that Bash filesystem
  commands must be scoped away from `devices/.esphome/`.

Follows on from #92.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant