zbt2-migration-checklist.md, zigbee2mqtt/state.json
This commit is contained in:
@@ -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
|
||||||
+21
-21
@@ -22,15 +22,15 @@
|
|||||||
},
|
},
|
||||||
"0xffffb40e0607af27": {
|
"0xffffb40e0607af27": {
|
||||||
"state": "ON",
|
"state": "ON",
|
||||||
"voltage": 120.6,
|
"voltage": 120.3,
|
||||||
"ac_frequency": 60,
|
"ac_frequency": 60,
|
||||||
"led_brightness": 100,
|
"led_brightness": 100,
|
||||||
"countdown_to_turn_off": 0,
|
"countdown_to_turn_off": 0,
|
||||||
"countdown_to_turn_on": 0,
|
"countdown_to_turn_on": 0,
|
||||||
"power": 9.9,
|
"power": 2.2,
|
||||||
"current": 0.1,
|
"current": 0.09,
|
||||||
"energy": 32.8,
|
"energy": 32.81,
|
||||||
"power_factor": 0.81,
|
"power_factor": 0.17,
|
||||||
"update": {
|
"update": {
|
||||||
"state": "idle",
|
"state": "idle",
|
||||||
"installed_version": 268513381,
|
"installed_version": 268513381,
|
||||||
@@ -47,8 +47,8 @@
|
|||||||
"countdown_to_turn_off": 0,
|
"countdown_to_turn_off": 0,
|
||||||
"voltage": 120.3,
|
"voltage": 120.3,
|
||||||
"countdown_to_turn_on": 0,
|
"countdown_to_turn_on": 0,
|
||||||
"energy": 66.12,
|
"energy": 66.14,
|
||||||
"power_factor": 0.89,
|
"power_factor": 0.2,
|
||||||
"ac_frequency": 60,
|
"ac_frequency": 60,
|
||||||
"update": {
|
"update": {
|
||||||
"state": "idle",
|
"state": "idle",
|
||||||
@@ -58,8 +58,8 @@
|
|||||||
"latest_release_notes": null
|
"latest_release_notes": null
|
||||||
},
|
},
|
||||||
"linkquality": 138,
|
"linkquality": 138,
|
||||||
"power": 83.8,
|
"power": 0.2,
|
||||||
"current": 10.19,
|
"current": 0.01,
|
||||||
"power_on_behavior": "on"
|
"power_on_behavior": "on"
|
||||||
},
|
},
|
||||||
"0xb40e060fffe031e3": {
|
"0xb40e060fffe031e3": {
|
||||||
@@ -77,10 +77,10 @@
|
|||||||
"voltage": 120.3,
|
"voltage": 120.3,
|
||||||
"state": "ON",
|
"state": "ON",
|
||||||
"ac_frequency": 60,
|
"ac_frequency": 60,
|
||||||
"energy": 133.76,
|
"energy": 133.78,
|
||||||
"power": 0.8,
|
"power": 92.6,
|
||||||
"current": 0.05,
|
"current": 0.84,
|
||||||
"power_factor": 0.41,
|
"power_factor": 0.38,
|
||||||
"update": {
|
"update": {
|
||||||
"state": "idle",
|
"state": "idle",
|
||||||
"installed_version": 268513381,
|
"installed_version": 268513381,
|
||||||
@@ -95,13 +95,13 @@
|
|||||||
"led_brightness": 100,
|
"led_brightness": 100,
|
||||||
"countdown_to_turn_off": 0,
|
"countdown_to_turn_off": 0,
|
||||||
"countdown_to_turn_on": 0,
|
"countdown_to_turn_on": 0,
|
||||||
"voltage": 120.5,
|
"voltage": 120.4,
|
||||||
"energy": 64.03,
|
"energy": 64.04,
|
||||||
"state": "ON",
|
"state": "ON",
|
||||||
"power": 22.7,
|
"power": 20.6,
|
||||||
"current": 0.32,
|
"current": 0.3,
|
||||||
"ac_frequency": 60,
|
"ac_frequency": 60,
|
||||||
"power_factor": 0.56,
|
"power_factor": 0.5,
|
||||||
"update": {
|
"update": {
|
||||||
"state": "idle",
|
"state": "idle",
|
||||||
"installed_version": 268513381,
|
"installed_version": 268513381,
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
"current": 0.02,
|
"current": 0.02,
|
||||||
"ac_frequency": 60,
|
"ac_frequency": 60,
|
||||||
"power": 0.4,
|
"power": 0.4,
|
||||||
"power_factor": 0.14,
|
"power_factor": 0.2,
|
||||||
"update": {
|
"update": {
|
||||||
"state": "idle",
|
"state": "idle",
|
||||||
"installed_version": 268513381,
|
"installed_version": 268513381,
|
||||||
@@ -172,7 +172,7 @@
|
|||||||
"0xffffb40e060893d8": {
|
"0xffffb40e060893d8": {
|
||||||
"state": "OFF",
|
"state": "OFF",
|
||||||
"led_brightness": 100,
|
"led_brightness": 100,
|
||||||
"voltage": 121.2,
|
"voltage": 121.3,
|
||||||
"countdown_to_turn_off": 0,
|
"countdown_to_turn_off": 0,
|
||||||
"countdown_to_turn_on": 0,
|
"countdown_to_turn_on": 0,
|
||||||
"energy": 3.71,
|
"energy": 3.71,
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
},
|
},
|
||||||
"0xa4c1380d0679ffff": {
|
"0xa4c1380d0679ffff": {
|
||||||
"battery": 100,
|
"battery": 100,
|
||||||
"temperature": 27.2,
|
"temperature": 27.1,
|
||||||
"temperature_units": "celsius",
|
"temperature_units": "celsius",
|
||||||
"temperature_calibration": 0,
|
"temperature_calibration": 0,
|
||||||
"update": {
|
"update": {
|
||||||
|
|||||||
Reference in New Issue
Block a user