docs: bring the whole set up to the shipped vacuum feature

TESTING gets a manual checklist matching the current contracts (modes,
teleport-on-view-change, tip glued to the icon, fit panel, multi-floor);
ARCHITECTURE gains trails.py and the trail/get command; VACUUM records
the display modes and what P1 actually shipped; README/PRODUCT/ROADMAP/
STATUS mention the feature.
This commit is contained in:
Matysh
2026-07-31 11:48:29 +03:00
parent f3bc3278e5
commit d27864e90e
4 changed files with 31 additions and 3 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ An interactive floor plan for Home Assistant delivered as one HACS package:
a storage **integration** (server-side config, WS API, file uploads, auth) + a a storage **integration** (server-side config, WS API, file uploads, auth) + a
**Lovelace card** (rendering, room markup editor, drag layout, zoom, live states, **Lovelace card** (rendering, room markup editor, drag layout, zoom, live states,
temperature, Zigbee LQI, device metadata with PDF manuals, virtual markers, temperature, Zigbee LQI, device metadata with PDF manuals, virtual markers,
en/ru localization). GUI-first: no YAML, no hand-made SVG. live robot vacuums, en/ru localization). GUI-first: no YAML, no hand-made SVG.
## Competitive landscape (stars verified 2026-07-06) ## Competitive landscape (stars verified 2026-07-06)
+7 -1
View File
@@ -57,7 +57,13 @@ Track progress in `custom_components/houseplan/quality_scale.yaml` (done/exempt
mapping (regex/domain/device_class → mdi icon) stored in config, shipping EN+RU mapping (regex/domain/device_class → mdi icon) stored in config, shipping EN+RU
defaults; drop dacha-specific patterns from code. defaults; drop dacha-specific patterns from code.
- [x] **Click actions** per device (v1.13.0, simplified v1.38.1): card / more-info / - [x] **Click actions** per device (v1.13.0, simplified v1.38.1): card / more-info /
toggle, with the lock/alarm safety model. toggle, with the lock/alarm safety model; running an automation/script/scene
with an optional confirmation landed in v1.53.0.
- [x] **Live robot vacuums** (docs/VACUUM.md): a puck driving the plan over a
solved affine transform, one-click calibration by room names or a
drag-and-stretch fit panel, server-recorded trails (current + previous run)
with never/cleaning/always display modes. Adapters: Xiaomi Cloud Map
Extractor, Tasshack dreame-vacuum, Valetudo. Display only — no commands.
- [x] **Theming**: light-theme pass done in v1.13.0; HA theme variables - [x] **Theming**: light-theme pass done in v1.13.0; HA theme variables
everywhere, optional per-space background color. everywhere, optional per-space background color.
- [ ] Multi-instance question: keep single-instance (one house) but support **multiple - [ ] Multi-instance question: keep single-instance (one house) but support **multiple
+1
View File
@@ -23,6 +23,7 @@
| Home instance | ha.jbstudio.pro (SSH port **22222**, key `ha_jb`; HA config root is `/mnt/data/supervisor/homeassistant``/config` does NOT exist in this SSH environment), deployed **v1.53.1** via direct copy (HACS custom repo also installed) | | Home instance | ha.jbstudio.pro (SSH port **22222**, key `ha_jb`; HA config root is `/mnt/data/supervisor/homeassistant``/config` does NOT exist in this SSH environment), deployed **v1.53.1** via direct copy (HACS custom repo also installed) |
| Localization | UI en/ru (src/i18n/*.json), everything user-visible localized incl. kiosk popover | | Localization | UI en/ru (src/i18n/*.json), everything user-visible localized incl. kiosk popover |
| Tests | Four layers: frontend unit (`npm test`, node:test over `test-build/`), pure backend (`pytest tests_backend`, runs anywhere), HA-harness backend (same folder, CI only — needs py3.13 + pytest-homeassistant-custom-component), and browser smokes (`demo/smoke_*.mjs`, headless chromium). **Counts are not written down here** — they went stale within two releases while the version line beside them was kept current, which reads as less coverage than exists (review R5-2). Run `npm run inventory` for the current numbers, or read them off the last CI run | | Tests | Four layers: frontend unit (`npm test`, node:test over `test-build/`), pure backend (`pytest tests_backend`, runs anywhere), HA-harness backend (same folder, CI only — needs py3.13 + pytest-homeassistant-custom-component), and browser smokes (`demo/smoke_*.mjs`, headless chromium). **Counts are not written down here** — they went stale within two releases while the version line beside them was kept current, which reads as less coverage than exists (review R5-2). Run `npm run inventory` for the current numbers, or read them off the last CI run |
| Vacuums | Live robot vacuums shipped (docs/VACUUM.md): puck, server-side trails with display modes, fit-panel calibration. Verified on a live Dreame X50 Master |
| Demo stand | **https://demo.houseplan.tech** — public, login `demo`/`demo`, resets to a pristine synthetic home every hour. **https://dev.houseplan.tech** — closed (basic auth), auto-deploys the `dev` branch every 10 min. Host: `ssh -i ~/.ssh/hp_stand hp@135.106.166.146`; layout, seeds and gotchas in the memory note `houseplan-demo-stand` | | Demo stand | **https://demo.houseplan.tech** — public, login `demo`/`demo`, resets to a pristine synthetic home every hour. **https://dev.houseplan.tech** — closed (basic auth), auto-deploys the `dev` branch every 10 min. Host: `ssh -i ~/.ssh/hp_stand hp@135.106.166.146`; layout, seeds and gotchas in the memory note `houseplan-demo-stand` |
| Community | **Telegram chat: https://t.me/ha_houseplan** (created 2026-07-27) — the primary user-facing support channel; GitHub issues stay for bugs/features. Link it from any new release notes and posts | | Community | **Telegram chat: https://t.me/ha_houseplan** (created 2026-07-27) — the primary user-facing support channel; GitHub issues stay for bugs/features. Link it from any new release notes and posts |
| Product scope | docs/SCOPE.md (2026-07-22) is the feature guard rail — check before accepting any feature | | Product scope | docs/SCOPE.md (2026-07-22) is the feature guard rail — check before accepting any feature |
+22 -1
View File
@@ -122,10 +122,31 @@ Commands of any kind (owner decision: display only) — no tap-to-clean,
no zone sending. No-go zones, cleaned-area polygons, cleaning history, no zone sending. No-go zones, cleaned-area polygons, cleaning history,
multi-robot collision avoidance — v2 candidates. multi-robot collision avoidance — v2 candidates.
## Trail display modes
`marker.vacuum.trail_mode`: `never` | `cleaning` (default — the line hides
the instant the run ends) | `always` (the only mode that also draws the
previous run, at 40% opacity). The legacy boolean `trail` still maps in
(`false` → never). Recording is independent of the mode: the server always
records, the mode only decides what is drawn.
The last segment is a rAF-driven tip line whose endpoint is glued to the
puck's animated centre every frame, so the path pours out from under the
icon instead of popping in when the next telemetry point lands.
## Phases ## Phases
- **P1:** adapter framework + all three Tier-A adapters + - **P1:** adapter framework + all three Tier-A adapters +
auto-calibration by rooms + manual 3-point wizard + the puck + trail (both sources). auto-calibration by rooms + manual 3-point wizard + the puck + trail (both sources).
- **P2:** Tier C room highlight + the demo-stand scripted robot. - **P2 (next):** Tier C room highlight + the demo-stand scripted robot.
- **P3:** Tier B zoo (Roomba, raw Valetudo MQTT), Deebot, multi-map - **P3:** Tier B zoo (Roomba, raw Valetudo MQTT), Deebot, multi-map
polish by feedback. polish by feedback.
## Shipped in P1
Adapters for the three Tier-A integrations, auto-calibration by room
names, the drag-and-stretch fit panel, the puck, server-side trails
(current + previous run) with the three display modes. Verified against a
live Dreame X50 Master: room centres arrive as plain x/y, the active map
name lives on the vacuum entity (`selected_map`), and the robot's Y axis
is flipped versus the screen — hence mirror-on by default.