Summary
- Publish a retained
cameradiscovery payload for the existing/thermal.jpgMLX90640 feed so grow-app renders it on the dashboard through its generic camera path. - Device identifier is injected at runtime from
get_mac_address()so the camera shares the auto-discovered sensors' identifier and lands in the same device card. - Adds a grow-ui.v1
thermal_viewdashboard group (variantcamera); the existing device-settings thermal controls group is untouched.
Test plan
- ESPHome compile runs in CI (no local esphome); YAML validated locally.
- On-device acceptance: confirm retained
_discovery/camera/..., ~2s tile refresh, offline placeholder, and no image bytes in/api/snapshot.
Pairs with the grow-app ingestion + UI change.
Closes HGC-20
## Summary
- Publish a retained `camera` discovery payload for the existing `/thermal.jpg` MLX90640 feed so grow-app renders it on the dashboard through its generic camera path.
- Device identifier is injected at runtime from `get_mac_address()` so the camera shares the auto-discovered sensors' identifier and lands in the same device card.
- Adds a grow-ui.v1 `thermal_view` dashboard group (variant `camera`); the existing device-settings thermal controls group is untouched.
## Test plan
- ESPHome compile runs in CI (no local esphome); YAML validated locally.
- On-device acceptance: confirm retained `_discovery/camera/...`, ~2s tile refresh, offline placeholder, and no image bytes in `/api/snapshot`.
Pairs with the grow-app ingestion + UI change.
Closes HGC-20