home-assistant: record completed Matter recovery
This commit is contained in:
@@ -39,7 +39,7 @@ user-invocable: true
|
||||
|
||||
<references>
|
||||
<reference file="reference/home-assistant.md"
|
||||
summary="Home Assistant: access/WS+Supervisor API, dual Nest integration, matter.js 9.0.4 new fabric + re-commissioning (1/8 done, blocked on on-network code generation, addon-restart gotcha), first backup taken, main Lovelace dashboard"
|
||||
summary="Home Assistant: public API access, dual Nest paths, Matter Server 9.1.0 fabric 2 with all 8 nodes local, Matter-first scripts and Overview, cloud fallback, backups"
|
||||
categories=["home-automation"]
|
||||
keywords=["home assistant", "HA", "home.thelonglakelodge.com", "matter", "nest", "thermostat", "climate", "dashboard", "lovelace", "HVAC", "in floor heating", "environmentals", "core_matter_server", "172.24.24.50"] />
|
||||
</references>
|
||||
@@ -56,4 +56,4 @@ user-invocable: true
|
||||
summary="Lodge website: Latchkey managed-website service (latchkey-sites bucket, sites anycast edge, auto-TLS), Manage-files editing, /welcome PDF stub"
|
||||
categories=["website"]
|
||||
keywords=["website", "thelonglakelodge.com", "welcome packet", "PDF", "welcome.pdf", "/welcome", "Latchkey", "managed-website", "Manage files", "custom_domains", "cd-tll0001"] />
|
||||
</references>
|
||||
</references>
|
||||
|
||||
+53
-60
@@ -2,13 +2,15 @@
|
||||
|
||||
<overview>
|
||||
HA OS at `home.thelonglakelodge.com`, proxied via fritzlab sjc001 remote-proxy
|
||||
to `172.24.24.50:8123` (also directly reachable on the lab network). Supervisor
|
||||
Observer on `:4357` (read-only health, no auth). API token in `~/.env` as
|
||||
to the lodge LAN. Use the public HTTPS/WSS path; direct `172.24.24.50:8123` is
|
||||
unapproved IPv4 inventory, not an operational path. API token in `~/.env` as
|
||||
`HA_TOKEN` (long-lived admin token — core API + service calls + Supervisor:
|
||||
WS `{"type":"supervisor/api","endpoint":...}` for JSON endpoints, REST
|
||||
`/api/hassio/addons/<slug>/logs` for text logs; `/api/error_log` is 404 —
|
||||
use WS `system_log/list`). No SSH (`:22` closed, no terminal addon).
|
||||
No automatic backups configured (`backup/info` → 0 backups).
|
||||
No automatic Supervisor full-backup schedule. Local recovery backups include
|
||||
`pre-matter-recommission 2026-07-05` and
|
||||
`post-matter-recommission-2026-07-15`.
|
||||
|
||||
Local control via WebSocket: `wss://home.thelonglakelodge.com/api/websocket`,
|
||||
auth with `{"type":"auth","access_token":HA_TOKEN}`. Useful WS cmds:
|
||||
@@ -24,25 +26,24 @@ auth with `{"type":"auth","access_token":HA_TOKEN}`. Useful WS cmds:
|
||||
The 8 Nest thermostats appear via two independent paths:
|
||||
- **Cloud (Google Nest)** — `nest` integration, entities `climate.*_google_nest`
|
||||
(+ `climate.lodge_basement` = Basement Living Room) and per-zone
|
||||
`sensor.*_temperature` / `sensor.*_humidity`. Reliable; cloud-dependent.
|
||||
`sensor.*_temperature` / `sensor.*_humidity`. Retained as fallback.
|
||||
- **Matter (local)** — `matter` integration via the `core_matter_server` addon,
|
||||
entities `climate.*_nest`. Local control, but see incident below.
|
||||
entities `climate.*_nest`. Primary control path.
|
||||
|
||||
8 zones: Office, Kitchen, Bunkhouse Kitchen (forced-air "HVAC"); Eat-in Kitchen,
|
||||
Primary Bathroom, Basement Living Room, Basement Bedroom, Tub Room (in-floor heat).
|
||||
Matter fabric id `1E5211CA4C7B5275`, node ids 1–5,7,8,9 (temp sensors are bridged
|
||||
endpoint-101 sub-devices of their thermostat node).
|
||||
|
||||
`script.set_away_temperatures` (HVAC 55–78 / in-floor 55) and
|
||||
`script.set_occupied_temperatures` (HVAC 68–76 / in-floor 67) set all zones,
|
||||
targeting by **label**: `hvac` (3 forced-air) and `in_floor_heat` (5 in-floor),
|
||||
both applied to the cloud `*_google_nest` devices (resolved in-script via
|
||||
`script.set_away_temperatures` (HVAC `heat_cool` low/high 55–78 / in-floor 55)
|
||||
and `script.set_occupied_temperatures` (HVAC `heat_cool` low/high 68–76 /
|
||||
in-floor 67) set all zones,
|
||||
targeting Matter device labels `matter_hvac` (3 forced-air) and
|
||||
`matter_in_floor_heat` (5 in-floor). Both run with no delays and resolve device
|
||||
labels to climate entities via
|
||||
`label_devices(..) | map('device_entities') | ... | select('match','climate')`
|
||||
since the labels are on devices, not entities). Commands are **serialized one
|
||||
zone at a time with an 8 s delay** — firing all 8 at once trips the Google Nest
|
||||
SDM per-user `ExecuteDeviceCommand` rate limit (429 RESOURCE_EXHAUSTED). (Matter copies carry parallel
|
||||
`matter_hvac` / `matter_in_floor_heat` labels — used by the scripts before the
|
||||
2026-06-15 repoint to cloud.) `google_nest` labels all 8 cloud devices.
|
||||
because labels are on devices. Verified 8/8 for both profiles on 2026-07-15.
|
||||
Cloud devices retain `google_nest` plus `hvac` / `in_floor_heat` labels; any
|
||||
cloud fallback script must serialize commands with an 8 s delay to avoid the
|
||||
Google SDM `ExecuteDeviceCommand` 429 limit.
|
||||
</thermostats>
|
||||
|
||||
<matter-outage>
|
||||
@@ -55,56 +56,49 @@ Matter devices report `node_not_found`, all 59 `climate.*_nest` etc. entities
|
||||
simply has zero nodes. Addon restart + config-entry reload do NOT restore them
|
||||
(storage lost, not transient), and there is no backup to restore from.
|
||||
|
||||
Cloud Nest is unaffected → thermostat control intact via `*_google_nest`.
|
||||
|
||||
Recovery = re-commission each thermostat on-site (non-destructive, no factory
|
||||
reset needed — Nest supports Matter multi-admin):
|
||||
1. On lodge WiFi, Google Home app (lodge account) → tap thermostat → Settings →
|
||||
"Linked Matter apps & services" → "Link apps & services" → generate a Matter
|
||||
setup code (11-digit / QR). Code is single-use, ~5 min TTL.
|
||||
2. HA → Settings → Devices & Services → Matter → Add device → enter the code.
|
||||
Wait ~1–2 min; node appears (bridged temp sensor comes with it).
|
||||
3. Repeat per thermostat (one code at a time). Rename to match.
|
||||
4. Delete the stale unavailable Matter devices afterward.
|
||||
Then re-point dashboard climate tiles back to `climate.*_nest` if local control
|
||||
is wanted (see dashboard note).
|
||||
The 9.0.0 Python→matter.js migration created fabric 2; the old compressed fabric
|
||||
`1E5211CA4C7B5275` is gone. Recovery completed 2026-07-15 by recommissioning all
|
||||
8 thermostats through Nest multi-admin. Cloud Nest remained available throughout.
|
||||
</matter-outage>
|
||||
|
||||
<matter-recommission>
|
||||
## Matter re-commissioning (2026-07-05, in progress)
|
||||
## Matter fabric 2 (complete)
|
||||
|
||||
Addon `core_matter_server` 9.0.4 = matter.js server (schema 11). The 9.0.0
|
||||
migration from the Python server lost the fabric — new fabric_id 2; the old
|
||||
fabric `1E5211CA4C7B5275` is gone. All 8 Nest thermostats need re-commissioning
|
||||
onto the new fabric. DONE: Lodge Kitchen (node 16, `climate.lodge_kitchen_nest`,
|
||||
device labeled `matter_nest`+`matter_hvac`, bridged temp sensor "Kitchen").
|
||||
REMAINING (blocked until someone is on the lodge network to generate codes):
|
||||
Office, Primary Bathroom, Bunkhouse Kitchen, Eat-in Kitchen, Basement Bedroom,
|
||||
Tub Room, Basement Living Room. All stale old-fabric devices
|
||||
deleted from the registry.
|
||||
`core_matter_server` 9.1.0 runs matter.js. All nodes are available:
|
||||
|
||||
Procedure (requires phone ON the lodge network — Google Home refuses to
|
||||
generate a Matter code off-network, verified 2026-07-05; commissioning itself
|
||||
is then drivable remotely via WS):
|
||||
| Node | Device | Climate entity | Category | Child sensor |
|
||||
|---:|---|---|---|---|
|
||||
| 16 | Lodge Kitchen Nest | `climate.lodge_kitchen_nest` | `matter_hvac` | Lodge Kitchen Sensor Nest |
|
||||
| 17 | Lodge Office Nest | `climate.lodge_office_nest` | `matter_hvac` | Lodge Office Sensor Nest |
|
||||
| 18 | Bunkhouse Kitchen Nest | `climate.bunkhouse_kitchen_nest` | `matter_hvac` | Bunkhouse Kitchen Sensor Nest |
|
||||
| 19 | Lodge Primary Bathroom Nest | `climate.lodge_primary_bathroom_nest` | `matter_in_floor_heat` | — |
|
||||
| 20 | Lodge Eat-in Kitchen Nest | `climate.lodge_eat_in_kitchen_nest` | `matter_in_floor_heat` | — |
|
||||
| 21 | Lodge Basement Bedroom Nest | `climate.lodge_basement_bedroom_nest` | `matter_in_floor_heat` | — |
|
||||
| 22 | Lodge Tub Room Nest | `climate.lodge_tub_room_nest` | `matter_in_floor_heat` | — |
|
||||
| 23 | Lodge Basement Living Room Nest | `climate.lodge_basement_living_room_nest` | `matter_in_floor_heat` | — |
|
||||
|
||||
Every thermostat also has `matter_nest`. Eight thermostat nodes plus the three
|
||||
bridged sensors equal 11 HA Matter devices. All stale fabric-1 registry devices
|
||||
are deleted.
|
||||
|
||||
Recommissioning requires a phone on lodge WiFi; Google Home refuses to generate
|
||||
a Matter code off-network:
|
||||
1. Google Home app (lodge account) → thermostat → Settings → Linked Matter
|
||||
apps & services → Link apps & services → 11-digit code (single-use, ~5 min).
|
||||
2. WS `{"type":"matter/commission","code":"<code>"}` (or HA UI Add device).
|
||||
2. WS `{"type":"matter/commission","code":"<code>","network_only":true}`
|
||||
(or HA UI Add device).
|
||||
3. Rename device to "<Zone> Nest", label `matter_nest` + `matter_hvac`
|
||||
(Office, Kitchen, Bunkhouse Kitchen) or `matter_in_floor_heat` (the 5
|
||||
in-floor zones), rename climate entity to `climate.<zone>_nest`.
|
||||
|
||||
GOTCHA — "Address unreachable" / commission timeout: the matter.js server's
|
||||
sockets can wedge when the addon starts at host boot (observed: fe80 dial to
|
||||
the Nest unreachable for hours, `1 of 1 attempt(s) failed, 1 discovered`).
|
||||
FIX: restart the Matter Server addon, then retry — same address connects fine.
|
||||
Restart the addon BEFORE a commissioning session if the host rebooted since
|
||||
the addon last restarted. Network is NOT the issue (Nests + HA share the flat
|
||||
`vino` 172.24.24.0/24; vino has no IPv6 RA so everything is fe80 + IPv4).
|
||||
GOTCHA — `Address unreachable` / commission timeout after host boot can be a
|
||||
wedged matter.js socket (`1 of 1 attempt(s) failed, 1 discovered`). Restart
|
||||
`core_matter_server`, then retry. Do not treat add-on restart as lost-fabric
|
||||
recovery.
|
||||
|
||||
Backups: first-ever backup taken 2026-07-05 ("pre-matter-recommission",
|
||||
hassio.local, unprotected). Automatic backups still NOT configured — set up
|
||||
Settings → System → Backups automatic schedule (the June fabric loss was
|
||||
unrecoverable because there were zero backups).
|
||||
`post-matter-recommission-2026-07-15` (backup id `2e0efde0`) includes HA,
|
||||
database, and `core_matter_server` data on `hassio.local`. The nightly Git export
|
||||
does NOT contain Matter fabric storage. Automatic Supervisor backups remain off.
|
||||
</matter-recommission>
|
||||
|
||||
<dashboard>
|
||||
@@ -117,10 +111,9 @@ grids — **Lodge HVAC** (office, kitchen), **In-Floor Heat** (5 in-floor zones)
|
||||
`Environmentals` (history page), and `Lock Management`. Edit via
|
||||
`lovelace/config` / `lovelace/config/save` (WS).
|
||||
|
||||
HVAC climate tiles point at the **cloud** `*_google_nest` entities (repointed
|
||||
off the dead Matter `*_nest` during the 2026-06-15 outage). The `Environmentals`
|
||||
page is three per-category vertical-stacks (Lodge HVAC / In-Floor Heat /
|
||||
Bunkhouse), each with Temperature, Humidity, and Heating/Cooling history-graphs
|
||||
(72h) scoped to that category's entities.
|
||||
If Matter is re-commissioned and local control is preferred, repoint these back.
|
||||
Overview thermostat cards point at all 8 local Matter `climate.*_nest` entities.
|
||||
The `Environmentals` page remains cloud-backed: three per-category
|
||||
vertical-stacks (Lodge HVAC / In-Floor Heat / Bunkhouse), each with Temperature,
|
||||
Humidity, and Heating/Cooling history graphs (72h). Five in-floor thermostats
|
||||
have no Matter humidity entity, so cloud humidity remains required there.
|
||||
</dashboard>
|
||||
|
||||
Reference in New Issue
Block a user