From eff14e900cb6c20da2f87d0292b1d0dac43e34b0 Mon Sep 17 00:00:00 2001 From: Home Assistant Version Control Date: Tue, 25 Aug 2026 17:00:54 +0000 Subject: [PATCH] zbt2-migration-checklist.md, zigbee2mqtt/state.json --- zbt2-migration-checklist.md | 79 +++++++++++++++++++++++++++++++++++++ zigbee2mqtt/state.json | 42 ++++++++++---------- 2 files changed, 100 insertions(+), 21 deletions(-) create mode 100644 zbt2-migration-checklist.md diff --git a/zbt2-migration-checklist.md b/zbt2-migration-checklist.md new file mode 100644 index 00000000..36a281e6 --- /dev/null +++ b/zbt2-migration-checklist.md @@ -0,0 +1,79 @@ +# ZBT-2 OTBR Migration Checklist + +**Date:** 2026-08-25 +**Goal:** Replace Google TV Streamer as Thread Border Router with Home Assistant Connect ZBT-2 running OpenThread Border Router add-on. + +## Why + +Google TV Streamer silently re-forms the Thread mesh with fresh credentials after any disruption, stranding nodes. Google never exports the dataset, so there's no way to join its network. HA must host its own Thread network instead. + +## Before you start + +- [ ] Backup already taken (`2db4735e` — "Before ZBT-2 OTBR Migration") +- [ ] Locate Matter pairing labels on all 7 devices (flashlight — IKEA labels are tiny) + +## Devices to migrate (all Thread-over-Matter) + +| # | Device | Manufacturer | Model | Network | Notes | +|---|--------|-------------|-------|---------|-------| +| 1 | Bedroom Switch | IKEA | BILRESA scroll wheel | Google-75B7 | Bottom/back label | +| 2 | Bedroom Lamp | IKEA | KAJPLATS E12 WS | Google-75B7 | Bottom of lamp base | +| 3 | Office Button | IKEA | BILRESA dual button | Google-75B7 | Back/bottom | +| 4 | Office Scroll Wheel | IKEA | BILRESA scroll wheel | Google-75B7 | Assigned to Office area | +| 5 | Office Lamp | IKEA | KAJPLATS E12 CWS | Google-75B7 | Bottom of lamp base | +| 6 | Basement Switch | IKEA | BILRESA dual button | Google-75B7 | Back/bottom | +| 7 | Night Light | ThirdReality | Smart Night Light-W | **"st"** (separate) | Different network — good test case first | + +## Step 1 — Hardware setup + +1. [ ] Plug ZBT-2 into physical host machine +2. [ ] USB passthrough to HAOS VM in hypervisor (Proxmox/etc) +3. [ ] Confirm it appears: Settings -> System -> Hardware -> USB +4. [ ] Install OpenThread Border Router add-on (Settings -> Add-ons -> Add-on Store -> "OpenThread Border Router") +5. [ ] Configure device path: use `/dev/serial/by-id/...` (not `/dev/ttyUSB0`) +6. [ ] Start the add-on. Wait for logs to show `otbr-agent` running + +## Step 2 — Verify new Thread network + +7. [ ] Settings -> Devices & Services -> Thread — confirm border router is listed +8. [ ] Confirm a new network exists (name will be auto-generated, NOT "Google-75B7") +9. [ ] Verify enp1s0 IPv6 is still set to **Auto** (never static-no-gateway) + +## Step 3 — Set preferred network + +10. [ ] Thread integration -> configure -> set HA's new network as preferred + +## Step 4 — Migration (one device at a time) + +**CRITICAL: Keep Google TV Streamer powered on throughout migration.** + +Recommended order: Night Light first (different network, good test), then IKEA devices. + +For each device: +11. [ ] Settings -> Devices & Services -> Matter -> **Add Device** +12. [ ] Scan the device's QR / pairing label +13. [ ] HA detects it's already on the fabric -> choose **Move to HA's Thread Network** +14. [ ] Wait for device to come back `available` +15. [ ] Verify: `sensor.xxx_thread_network_name` = HA's new network (not "Google-75B7") +16. [ ] Move to next device + +Repeat for all 7 devices. + +## Step 5 — Disable Google TV Streamer + +17. [ ] All 7 devices showing HA's network name +18. [ ] Google Home app -> Settings -> Google TV Streamer -> disable Thread/Hub radio +19. [ ] Cold-boot the TV Streamer (unplug -> replug) — stops it advertising as border router + +## Step 6 — Verify + +20. [ ] Thread integration shows ZBT-2 as border router with 7 nodes +21. [ ] All 7 devices available and responsive +22. [ ] Restart Home Assistant — devices should stay available (the whole point) +23. [ ] Check entity IDs unchanged: `light.bedroom_lamp`, `light.office_lamp`, `sensor.bedroom_switch_battery`, etc. + +## Fallback (if a device refuses the move) + +- Factory reset the specific device (consult manual — usually hold button 10+ seconds) +- Re-commission from scratch via Add Device + scan label +- Entity IDs don't change, so automations/scripts/scenes still work diff --git a/zigbee2mqtt/state.json b/zigbee2mqtt/state.json index e75a5964..943434a7 100644 --- a/zigbee2mqtt/state.json +++ b/zigbee2mqtt/state.json @@ -22,15 +22,15 @@ }, "0xffffb40e0607af27": { "state": "ON", - "voltage": 120.6, + "voltage": 120.3, "ac_frequency": 60, "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "power": 9.9, - "current": 0.1, - "energy": 32.8, - "power_factor": 0.81, + "power": 2.2, + "current": 0.09, + "energy": 32.81, + "power_factor": 0.17, "update": { "state": "idle", "installed_version": 268513381, @@ -47,8 +47,8 @@ "countdown_to_turn_off": 0, "voltage": 120.3, "countdown_to_turn_on": 0, - "energy": 66.12, - "power_factor": 0.89, + "energy": 66.14, + "power_factor": 0.2, "ac_frequency": 60, "update": { "state": "idle", @@ -58,8 +58,8 @@ "latest_release_notes": null }, "linkquality": 138, - "power": 83.8, - "current": 10.19, + "power": 0.2, + "current": 0.01, "power_on_behavior": "on" }, "0xb40e060fffe031e3": { @@ -77,10 +77,10 @@ "voltage": 120.3, "state": "ON", "ac_frequency": 60, - "energy": 133.76, - "power": 0.8, - "current": 0.05, - "power_factor": 0.41, + "energy": 133.78, + "power": 92.6, + "current": 0.84, + "power_factor": 0.38, "update": { "state": "idle", "installed_version": 268513381, @@ -95,13 +95,13 @@ "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "voltage": 120.5, - "energy": 64.03, + "voltage": 120.4, + "energy": 64.04, "state": "ON", - "power": 22.7, - "current": 0.32, + "power": 20.6, + "current": 0.3, "ac_frequency": 60, - "power_factor": 0.56, + "power_factor": 0.5, "update": { "state": "idle", "installed_version": 268513381, @@ -143,7 +143,7 @@ "current": 0.02, "ac_frequency": 60, "power": 0.4, - "power_factor": 0.14, + "power_factor": 0.2, "update": { "state": "idle", "installed_version": 268513381, @@ -172,7 +172,7 @@ "0xffffb40e060893d8": { "state": "OFF", "led_brightness": 100, - "voltage": 121.2, + "voltage": 121.3, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, "energy": 3.71, @@ -192,7 +192,7 @@ }, "0xa4c1380d0679ffff": { "battery": 100, - "temperature": 27.2, + "temperature": 27.1, "temperature_units": "celsius", "temperature_calibration": 0, "update": {