# Home Assistant 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 `HA_TOKEN` (long-lived admin token — core API + service calls + Supervisor: WS `{"type":"supervisor/api","endpoint":...}` for JSON endpoints, REST `/api/hassio/addons//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). Local control via WebSocket: `wss://home.thelonglakelodge.com/api/websocket`, auth with `{"type":"auth","access_token":HA_TOKEN}`. Useful WS cmds: `config_entries/get`, `config/device_registry/list`, `config/entity_registry/list`, `matter/node_diagnostics{device_id}`, `lovelace/config{url_path:null}` / `lovelace/config/save`. Addon control via REST service: `POST /api/services/hassio/addon_restart {"addon":"core_matter_server"}`. ## Nest thermostats are integrated TWICE 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. - **Matter (local)** — `matter` integration via the `core_matter_server` addon, entities `climate.*_nest`. Local control, but see incident below. 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 `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. ## Matter fabric loss (2026-06-15) At 2026-06-15 13:53 UTC an HA Core/Supervisor restart (Supervisor → 2026.06.1) left the `core_matter_server` addon (v8.5.0) with an **empty fabric** — all 11 Matter devices report `node_not_found`, all 59 `climate.*_nest` etc. entities `unavailable`. Integration reconnects fine (config entry `loaded`); the server 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). ## Matter re-commissioning (2026-07-05, in progress) 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. 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): 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":""}` (or HA UI Add device). 3. Rename device to " 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._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). 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). ## Main Lovelace (`lovelace` / "Overview", storage mode) Views: `main` (single grid card, columns:1, headed sections: locks/lights, Helpful Scripts, Water Sensors, then climate as three 2-col thermostat-card grids — **Lodge HVAC** (office, kitchen), **In-Floor Heat** (5 in-floor zones), **Bunkhouse** (bunkhouse kitchen)), `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.