Sanitized mirror from private repository - 2026-04-20 01:32:01 UTC
This commit is contained in:
364
docs/services/home-assistant/README.md
Normal file
364
docs/services/home-assistant/README.md
Normal file
@@ -0,0 +1,364 @@
|
||||
# 🏠 Home Assistant Configuration
|
||||
|
||||
This document covers all Home Assistant instances across the homelab, including automations, integrations, and configurations.
|
||||
|
||||
## Overview
|
||||
|
||||
| Instance | Location | Hardware | HA Version | Purpose |
|
||||
|----------|----------|----------|------------|---------|
|
||||
| **HA Green** | Honolulu, HI | Home Assistant Green | 2026.1.3 | Hawaii smart home control |
|
||||
| **HA NUC** | Concord, CA | Intel NUC6i3SYB | TBD | Primary home automation hub |
|
||||
|
||||
---
|
||||
|
||||
## 🌺 Honolulu Instance (Home Assistant Green)
|
||||
|
||||
### Hardware Details
|
||||
- **Device**: Home Assistant Green
|
||||
- **CPU**: ARM Cortex-A55 (4-core)
|
||||
- **RAM**: 4GB LPDDR4
|
||||
- **Storage**: 32GB eMMC (8.2GB used, 31%)
|
||||
- **Network**: 192.168.12.202/24
|
||||
- **OS**: Home Assistant OS 6.12.63-haos
|
||||
|
||||
### Add-ons Installed
|
||||
| Add-on | Purpose |
|
||||
|--------|---------|
|
||||
| **Matter Server** | Matter/Thread smart home protocol support |
|
||||
| **Advanced SSH & Web Terminal** | Remote shell access |
|
||||
|
||||
### Custom Components (HACS)
|
||||
| Component | Purpose |
|
||||
|-----------|---------|
|
||||
| **HACS** | Home Assistant Community Store |
|
||||
| **Oura** | Oura Ring health/sleep tracking integration |
|
||||
| **Tapo Control** | TP-Link Tapo camera PTZ control |
|
||||
|
||||
---
|
||||
|
||||
### 🤖 Automations
|
||||
|
||||
#### 1. Hawaii Living Room - Motion Lights On
|
||||
**Purpose**: Automatically turn on living room lights when motion is detected in the evening.
|
||||
|
||||
```yaml
|
||||
id: '1767509760079'
|
||||
alias: Hawaii Living Room Camera Motion Turn On Lights
|
||||
triggers:
|
||||
- type: motion
|
||||
device_id: b598fe803597a6826c0d1be292ea6990
|
||||
entity_id: 600ef0e63bf50b958663b6602769c43d
|
||||
domain: binary_sensor
|
||||
trigger: device
|
||||
conditions:
|
||||
- condition: time
|
||||
after: '16:00:00'
|
||||
before: '01:00:00'
|
||||
weekday: [sun, mon, tue, wed, thu, fri, sat]
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
- light.hawaii_cocina_white_fan_2_bulbs
|
||||
- light.hawaii_lightstrip
|
||||
- light.hawaii_white_fan_1_bulb_2
|
||||
- light.hawaii_pineapple_light_l535e
|
||||
- light.hawaii_white_fan_1_bulb_2_2
|
||||
mode: single
|
||||
```
|
||||
|
||||
| Setting | Value |
|
||||
|---------|-------|
|
||||
| **Trigger** | Living room camera motion sensor |
|
||||
| **Time Window** | 4:00 PM - 1:00 AM |
|
||||
| **Days** | Every day |
|
||||
| **Lights Controlled** | 5 (fan bulbs, lightstrip, pineapple lamp) |
|
||||
|
||||
---
|
||||
|
||||
#### 2. Hawaii Living Room - No Motion Lights Off
|
||||
**Purpose**: Turn off living room lights after 20 minutes of no motion.
|
||||
|
||||
```yaml
|
||||
id: '1767511914724'
|
||||
alias: Hawaii Living Room Camera No Motion Turn Off Lights
|
||||
triggers:
|
||||
- type: no_motion
|
||||
device_id: 6977aea8e1b5d86fa5fdb01618568353
|
||||
entity_id: a00adebc3cff7657057b84e983f401e3
|
||||
domain: binary_sensor
|
||||
trigger: device
|
||||
for:
|
||||
hours: 0
|
||||
minutes: 20
|
||||
seconds: 0
|
||||
conditions: []
|
||||
actions:
|
||||
- action: light.turn_off
|
||||
target:
|
||||
entity_id:
|
||||
- light.hawaii_cocina_white_fan_2_bulbs
|
||||
- light.hawaii_lightstrip
|
||||
- light.hawaii_pineapple_light_l535e
|
||||
- light.hawaii_white_fan_1_bulb_2_2
|
||||
- light.hawaii_white_fan_1_bulb_2
|
||||
mode: single
|
||||
```
|
||||
|
||||
| Setting | Value |
|
||||
|---------|-------|
|
||||
| **Trigger** | No motion for 20 minutes |
|
||||
| **Time Window** | Always active |
|
||||
| **Lights Controlled** | 5 (same as above) |
|
||||
|
||||
---
|
||||
|
||||
#### 3. Hawaii Bedroom - Motion Lights On
|
||||
**Purpose**: Turn on bedroom lights when motion is detected in the evening.
|
||||
|
||||
```yaml
|
||||
id: '1767514792077'
|
||||
alias: Hawaii Bedroom Camera Motion Turn On Lights
|
||||
triggers:
|
||||
- type: motion
|
||||
device_id: 6977aea8e1b5d86fa5fdb01618568353
|
||||
entity_id: 9e71062255147ddd4a698a593a343307
|
||||
domain: binary_sensor
|
||||
trigger: device
|
||||
conditions:
|
||||
- condition: time
|
||||
after: '18:00:00'
|
||||
before: '23:00:00'
|
||||
weekday: [sun, mon, tue, wed, thu, fri, sat]
|
||||
actions:
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
- light.hawaii_bedroom_palm_lights
|
||||
- light.hawaii_pink_rose_dimmer_plug
|
||||
mode: single
|
||||
```
|
||||
|
||||
| Setting | Value |
|
||||
|---------|-------|
|
||||
| **Trigger** | Bedroom camera motion sensor |
|
||||
| **Time Window** | 6:00 PM - 11:00 PM |
|
||||
| **Days** | Every day |
|
||||
| **Lights Controlled** | 2 (palm lights, rose dimmer) |
|
||||
|
||||
---
|
||||
|
||||
### 📊 Automation Summary
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ HAWAII AUTOMATION FLOW │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ LIVING ROOM BEDROOM │
|
||||
│ ════════════ ═══════ │
|
||||
│ │
|
||||
│ ┌──────────────┐ ┌──────────────┐ │
|
||||
│ │ Tapo Camera │ │ Tapo Camera │ │
|
||||
│ │ Motion Sensor│ │ Motion Sensor│ │
|
||||
│ └──────┬───────┘ └──────┬───────┘ │
|
||||
│ │ │ │
|
||||
│ ▼ ▼ │
|
||||
│ ┌──────────────┐ ┌──────────────┐ │
|
||||
│ │ Motion │ │ Motion │ │
|
||||
│ │ Detected? │ │ Detected? │ │
|
||||
│ └──────┬───────┘ └──────┬───────┘ │
|
||||
│ │ │ │
|
||||
│ YES │ NO (20min) YES │ │
|
||||
│ │ │ │
|
||||
│ ▼ ▼ │
|
||||
│ ┌──────────────┐ ┌──────────────┐ │
|
||||
│ │ 4PM - 1AM? │ │ 6PM - 11PM? │ │
|
||||
│ └──────┬───────┘ └──────┬───────┘ │
|
||||
│ │ │ │
|
||||
│ ▼ ▼ │
|
||||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||||
│ │ 💡 Turn ON │ │ 💡 Turn OFF │ │ 💡 Turn ON │ │
|
||||
│ │ • Fan bulbs │ │ All lights │ │ • Palm lights│ │
|
||||
│ │ • Lightstrip │ │ │ │ • Rose dimmer│ │
|
||||
│ │ • Pineapple │ │ │ │ │ │
|
||||
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 🔌 Device Inventory (Hawaii)
|
||||
|
||||
#### Lights
|
||||
| Entity ID | Device | Location |
|
||||
|-----------|--------|----------|
|
||||
| `light.hawaii_cocina_white_fan_2_bulbs` | Ceiling fan bulbs | Kitchen/Living |
|
||||
| `light.hawaii_lightstrip` | LED strip | Living room |
|
||||
| `light.hawaii_white_fan_1_bulb_2` | Ceiling fan bulb | Living room |
|
||||
| `light.hawaii_white_fan_1_bulb_2_2` | Ceiling fan bulb | Living room |
|
||||
| `light.hawaii_pineapple_light_l535e` | Pineapple lamp (Tapo L535E) | Living room |
|
||||
| `light.hawaii_bedroom_palm_lights` | Palm tree lights | Bedroom |
|
||||
| `light.hawaii_pink_rose_dimmer_plug` | Rose lamp (dimmer plug) | Bedroom |
|
||||
|
||||
#### Cameras (Tapo)
|
||||
| Device | Location | Features |
|
||||
|--------|----------|----------|
|
||||
| Living Room Camera | Living room | Motion detection, PTZ |
|
||||
| Bedroom Camera | Bedroom | Motion detection |
|
||||
|
||||
---
|
||||
|
||||
## 🏠 Concord Instance (Intel NUC) - Verified 2026-04-19
|
||||
|
||||
### Hardware Details
|
||||
- **Hostname**: vish-concord-nuc
|
||||
- **Device**: Intel NUC6i3SYB
|
||||
- **CPU**: Intel Core i3-6100U (2-core/4-thread, 2.3GHz)
|
||||
- **RAM**: 16GB DDR4
|
||||
- **Storage**: 240GB Toshiba VX500 SSD (67% used)
|
||||
- **OS**: Ubuntu 24.04.3 LTS
|
||||
- **Network**: `eth0` 192.168.68.100/22 — deliberately on a separate LAN from 192.168.0.0/24 homelab (see mDNS / Thread BR notes in [gl-s200-integration.md](gl-s200-integration.md))
|
||||
- **Tailscale**: 100.72.55.21 (internal_url set to this)
|
||||
|
||||
### Deployment
|
||||
- **Type**: Docker container, `network_mode: host`
|
||||
- **Image**: `ghcr.io/home-assistant/home-assistant:stable` — HA 2026.4.3
|
||||
- **Config Path**: `/home/vish/docker/homeassistant/` (version-controlled at [`hosts/physical/concord-nuc/homeassistant/`](../../../hosts/physical/concord-nuc/homeassistant/))
|
||||
- **Compose**: [`concord_nuc/homeassistant.yaml`](../../../hosts/physical/concord-nuc/homeassistant.yaml) — includes homeassistant + matter-server + piper + whisper + openwakeword
|
||||
|
||||
### 9 Custom Dashboards (YAML mode, in-repo)
|
||||
|
||||
| Dashboard | File | Content |
|
||||
|---|---|---|
|
||||
| **Home** | [`home.yaml`](../../../hosts/physical/concord-nuc/homeassistant/dashboards/home.yaml) | Time-aware greeting, chip strip (weather/Oura/Plex/AdGuard/speedtest), persons, Oura gauges, weather forecast, 5-room nav with live state templates, quick scenes, homelab strip |
|
||||
| **Living Room** | [`livingroom.yaml`](../../../hosts/physical/concord-nuc/homeassistant/dashboards/livingroom.yaml) | Weather (daily+hourly), TV media, network gauges (speedtest), PG&E billing, AdGuard stats |
|
||||
| **Kitchen** | [`kitchen.yaml`](../../../hosts/physical/concord-nuc/homeassistant/dashboards/kitchen.yaml) | 5 TL135 bulbs + scene buttons (Cooking / Dim / All) |
|
||||
| **Bathroom** | [`bathroom.yaml`](../../../hosts/physical/concord-nuc/homeassistant/dashboards/bathroom.yaml) | 6 TL135 bulbs + Relax scene |
|
||||
| **Bedroom** | [`bedroom.yaml`](../../../hosts/physical/concord-nuc/homeassistant/dashboards/bedroom.yaml) | 3 lights, Tapo 4K PTZ camera, 3 media players, Guava-TrueNAS power plug, full Oura Ring section (4 gauges + sleep breakdown + 14d trends + vitals) |
|
||||
| **Cameras** | [`cameras.yaml`](../../../hosts/physical/concord-nuc/homeassistant/dashboards/cameras.yaml) | Live camera grid + motion-event logbook |
|
||||
| **Homelab** | [`homelab.yaml`](../../../hosts/physical/concord-nuc/homeassistant/dashboards/homelab.yaml) | **Multi-tab dashboard** — 4 subviews: Overview / Media / Servers / Monitoring (see Tabbed Homelab Views below) |
|
||||
| **Homelab Web** | [`homelab_web.yaml`](../../../hosts/physical/concord-nuc/homeassistant/dashboards/homelab_web.yaml) | Full-page iframe embedding `http://homelab.tail.vish.gg:3100/` |
|
||||
| **Crista** | [`crista.yaml`](../../../hosts/physical/concord-nuc/homeassistant/dashboards/crista.yaml) | Full-page iframe embedding `https://crista.love` (replaces the old iframe card on the default Overview dashboard) |
|
||||
|
||||
### Tabbed Homelab Views
|
||||
|
||||
The Homelab dashboard is split into 4 subviews (tabs at top of page):
|
||||
|
||||
| Tab | URL path | Content |
|
||||
|---|---|---|
|
||||
| **Overview** | `/homelab-view/homelab` | Calendar (Baikal + Radarr upcoming), Kuma summary chips, library totals (Movies/TV/Anime/Music/Ebooks), Quick Launch 12-button grid |
|
||||
| **Media** | `/homelab-view/media` | Plex now-playing + library, Sonarr/Radarr (queue/shows/movies/upcoming/wanted), Bazarr + Prowlarr, Books (ABS + LazyLib), SABnzbd (speed/queue/details + pause/resume buttons) |
|
||||
| **Servers** | `/homelab-view/servers` | Atlantis NAS (8-bay, wide), Calypso NAS + Setillo NAS (compact rails, Setillo includes Surveillance Home Mode switch), Guava TrueNAS Scale (pools/services/VM/disks, wide), Proxmox VE (gauges + PVE host + start/stop/restart actions) |
|
||||
| **Monitoring** | `/homelab-view/monitoring` | Kuma live chips (total/down/avg-ms/certs<30d), Core Infrastructure entity list (NAS/Proxmox/HA/Authentik/Headscale/CrowdSec/NPM/Portainer), Apps & Services (Jellyfin/Ollama/Gitea/Grafana/Homarr/Bitwarden/Paperless/Immich/Seafile), SSL Certificates expiry watch list |
|
||||
|
||||
### 4 Themes (all with Google-fonts auto-loaded via `www/fonts-loader.js`)
|
||||
|
||||
| Theme | Aesthetic | Font |
|
||||
|---|---|---|
|
||||
| **glass_exo** | Cool glassmorphism, purple + pink on deep navy | Exo 2 |
|
||||
| **cyberpunk** | Neon pink + cyan + yellow on near-black | Orbitron / Rajdhani |
|
||||
| **steampunk** | Brass + copper on aged leather | Playfair Display / Cormorant Garamond |
|
||||
| **samurai** | Imperial red + gold on sumi-ink black | Noto Serif JP / Shippori Mincho |
|
||||
|
||||
Each theme overrides `--mdc-select-*` + `--mdc-text-field-*` + `--mdc-theme-surface` so dialogs and dropdowns stay readable across all aesthetics.
|
||||
|
||||
### HACS Frontend Cards (installed + registered)
|
||||
|
||||
- `mushroom` (v5.1.1) — touch-friendly tiles (template/chips/person/light)
|
||||
- `card-mod` (v4.2.1) — CSS-in-theme overrides
|
||||
- `bubble-card` (v3.1.6) — mobile bottom-nav
|
||||
- `advanced-camera-card`, `calendar-card-pro`, `rgb-light-card`, `lovelace-entity-progress-card`, `lovelace-navbar-card` (pre-existing)
|
||||
|
||||
### Integrations Summary
|
||||
|
||||
| Domain | Title | Role |
|
||||
|---|---|---|
|
||||
| `matter` × 2 | Matter BETA | Thread/Matter (awaiting GL-S200 Thread BR — [gl-s200-integration.md](gl-s200-integration.md)) |
|
||||
| `thread` | Thread | Thread credentials |
|
||||
| `oura` (HACS) | admin@thevish.io | Oura Ring — 64 sensors (sleep/readiness/activity/HRV/VO2/steps/etc.) |
|
||||
| `plex` | Atlantis | 9 entities — now-playing + 6 library counts (Movies 246 / TV 2711 / Anime 8131 / Music 116k) |
|
||||
| `ollama` | Atlantis Ollama | `conversation.jarvis` → llama3.2:3b on Atlantis CPU, default voice pipeline |
|
||||
| `local_openai` | Local LLM Server | ⏸ disabled — shinku-ryuu LM Studio endpoint (enable when PC on) |
|
||||
| `tplink` × 20+ | TL135 bulbs, P110 energy plug, C260 4K camera, hubs | Rooms |
|
||||
| `tplink_deco` | http://192.168.68.1 | Deco mesh WiFi + device_trackers |
|
||||
| `tapo_control` | 192.168.68.67 | Bedroom 4K PTZ control, motion/person detection |
|
||||
| `icloud` | your-email@example.com | iPhone + iPad device trackers |
|
||||
| `spotify` | Vish Khemraj | Music media player + song-attr sensors |
|
||||
| `adguard` | 192.168.68.100 | Local DNS blocker on NUC — stats |
|
||||
| `opower` | PG&E | Electric + gas billing + cost |
|
||||
| `wyoming` × 3 | piper / faster-whisper / openwakeword | Voice-assist pipeline |
|
||||
| `caldav` | vish | Baikal calendar → calendar-card-pro |
|
||||
| `cast` | Google Cast | Chromecast / bedroom display |
|
||||
| `speedtestdotnet` | SpeedTest | Network gauges |
|
||||
| `syncthing` | 192.168.68.100 | File sync stats |
|
||||
| `met` | Home | Weather forecast |
|
||||
| `sonarr` | 100.83.230.112 | Native — queue/shows/upcoming/wanted/disk_space + commands |
|
||||
| `radarr` | Radarr | Native — queue/movies/disk_space + health + `calendar.radarr` |
|
||||
| `sabnzbd` | 100.83.230.112 | Native — speed/queue/left/free_disk + daily/weekly/monthly totals + pause/resume/speedlimit controls |
|
||||
| `synology_dsm` × 3 | atlantis, calypso, setillo | 158+48+40 entities — CPU/mem/temp/volumes/drives/NICs, Setillo also has `camera.estudio` + Surveillance Home Mode switch |
|
||||
| `proxmoxve` | 100.87.12.28 | 18 entities — host CPU/mem/disk/uptime + backup status + start/stop/restart/suspend buttons (token auth: `vish@pam!homarr`) |
|
||||
| `uptime_kuma` | 100.77.151.40:3001 | **1324 entities** across 112 monitors — status, response_time, 35 certificate_expiry sensors |
|
||||
| `truenas` (HACS tomaae) | Guava (100.75.252.64) | 64 entities — system/pools/services/disks/apps/VMs/datasets. Local patch in `coordinator.py:846` guards None VM memory (TrueNAS 25.04 quirk) |
|
||||
|
||||
### Voice Assist Pipeline
|
||||
|
||||
**Jarvis (default)** — `conversation.jarvis` ← Ollama @ `http://100.83.230.112:11434` (Atlantis, ~11 tok/s on CPU). Wake word: **"Ok Nabu"** via openWakeword. `prefer_local_intents: true` — HA's built-in matcher handles light/scene commands; Ollama kicks in for ambiguous queries.
|
||||
|
||||
```
|
||||
┌──────────────┐ ┌────────────┐ ┌─────────────────────┐ ┌─────────────┐ ┌──────────┐
|
||||
│ openWakeword │→ │ whisper │→ │ HA built-in intents │→ │ Ollama │→ │ piper │
|
||||
│ (NUC) │ │ (NUC, STT)│ │ (if unmatched →) │ │ (atlantis) │ │ (NUC,TTS)│
|
||||
└──────────────┘ └────────────┘ └─────────────────────┘ └─────────────┘ └──────────┘
|
||||
```
|
||||
|
||||
### REST sensors — live homelab telemetry
|
||||
|
||||
Defined in [`sensors.yaml`](../../../hosts/physical/concord-nuc/homeassistant/sensors.yaml), API keys in [`secrets.yaml`](../../../hosts/physical/concord-nuc/homeassistant/secrets.yaml). Covers Prowlarr, Bazarr, LazyLibrarian, Audiobookshelf. Sonarr/Radarr/SABnzbd/Plex migrated to native HA integrations. All REST sensors have `homelab_rest_*` unique_ids.
|
||||
|
||||
### Energy Dashboard (built-in, configured)
|
||||
|
||||
- **Grid**: `sensor.current_bill_electric_usage_to_date` + `sensor.current_bill_electric_cost_to_date` (opower/PG&E)
|
||||
- **Gas**: `sensor.current_bill_gas_usage_to_date` + `sensor.current_bill_gas_cost_to_date`
|
||||
- **Device**: Guava-TrueNAS plug — `sensor.guava_energy_today_s_consumption`
|
||||
|
||||
### Automations
|
||||
|
||||
📭 **None configured** — `automations.yaml` is still empty. Planned: lights-off when no one home, bedtime routine triggered by `binary_sensor.oura_ring_rest_mode`, Movie Mode on Plex play detection.
|
||||
|
||||
### Co-located Services (Same NUC Host)
|
||||
|
||||
| Service | Port |
|
||||
|---|---|
|
||||
| Matter Server | host network |
|
||||
| Plex | 32400 |
|
||||
| AdGuard Home | 53, 3000 |
|
||||
| WireGuard (wg-easy) | 51820 |
|
||||
| Syncthing | 8384 |
|
||||
| Invidious / Materialious | 3000 / 3001 |
|
||||
| YourSpotify | 4000 |
|
||||
| Piper / Whisper / OpenWakeword | 10200 / 10300 / 10400 |
|
||||
| Watchtower, Node Exporter, Dozzle agent, Diun | — |
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Open work
|
||||
|
||||
### Concord
|
||||
- **Plex integration**: added via UI 2026-04-19 — 6 library sensors enabled (were `disabled_by=integration` by default)
|
||||
- **Frigate NVR**: deferred — see [FRIGATE_PLAN.md](../../../hosts/physical/concord-nuc/homeassistant/FRIGATE_PLAN.md) for full deployment plan
|
||||
- **Automations**: empty; user building these manually
|
||||
- **opower reauth**: PG&E integration flagged reauth — needed to refresh bill/cost data
|
||||
|
||||
### Honolulu
|
||||
|
||||
1. **Add Bedroom "No Motion" Automation** (auto-off after 15-20 min)
|
||||
2. **Add Tailscale Add-on** for remote access without Cloudflare tunnel
|
||||
3. **Consider**: phone-presence detection, sunrise/sunset-based timing, time-of-day brightness
|
||||
|
||||
---
|
||||
|
||||
## 📁 Related Documentation
|
||||
- [GL-S200 Thread Border Router Integration Plan](gl-s200-integration.md) - Planned Thread BR for Concord instance
|
||||
- [Hardware Inventory](../infrastructure/hardware-inventory.md) - HA Green specs
|
||||
- [Network Topology](../diagrams/network-topology.md) - Network layout
|
||||
- [Tailscale Mesh](../diagrams/tailscale-mesh.md) - VPN connectivity
|
||||
82
docs/services/home-assistant/gl-s200-integration.md
Normal file
82
docs/services/home-assistant/gl-s200-integration.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# GL-S200 Thread Border Router Integration Plan
|
||||
|
||||
Planning notes for adding a GL.iNet GL-S200 as a Thread Border Router for Home Assistant on concord NUC.
|
||||
|
||||
## Device Overview
|
||||
|
||||
**GL-S200** ([product page](https://www.gl-inet.com/products/gl-s200/))
|
||||
|
||||
| Spec | Value |
|
||||
|------|-------|
|
||||
| CPU | QCA9531 @ 650 MHz |
|
||||
| RAM / Flash | 128 MB DDR2 / 128 MB NAND |
|
||||
| OS | GL.iNet firmware (OpenWrt 21.02, kernel 5.4) |
|
||||
| Radios | Thread + BLE 5.0 + Wi-Fi 2.4 GHz b/g/n (150 Mbps) |
|
||||
| Ports | 1x WAN, 1x LAN (10/100 Mbps) |
|
||||
| Power | USB-C 5V / 2A |
|
||||
| Role | Thread Border Router (OTBR) — not a Matter controller; Matter runs on top via python-matter-server already deployed on the NUC |
|
||||
|
||||
## Where to Plug It In
|
||||
|
||||
**Must land on the same L2 segment as Home Assistant.**
|
||||
|
||||
HA runs as a Docker container on `vish-concord-nuc` with `network_mode: host`. The NUC sits on `192.168.68.0/22` (gateway `192.168.68.1`) — **deliberately separated** from the main homelab LAN (`192.168.0.0/24`).
|
||||
|
||||
Thread/Matter border router discovery uses mDNS (`_meshcop._udp`), which is link-local. Cross-subnet discovery would require an mDNS reflector (not currently deployed). So:
|
||||
|
||||
- ✅ Plug S200 WAN into a switch/AP on `192.168.68.0/22` (same segment as the NUC).
|
||||
- ❌ Do not plug into the main 192.168.0.0/24 LAN — HA will not see it.
|
||||
|
||||
## Existing Stack on Concord NUC
|
||||
|
||||
Compose: `concord_nuc/homeassistant.yaml`
|
||||
|
||||
| Service | Purpose | Status |
|
||||
|---------|---------|--------|
|
||||
| `homeassistant` | HA Core (host networking) | Running |
|
||||
| `matter-server` | python-matter-server (host networking) | Running |
|
||||
| `piper` | Wyoming TTS (port 10200) | Running |
|
||||
| `whisper` | Wyoming STT (port 10300) | Running |
|
||||
| `openwakeword` | Wyoming wake word (port 10400) | Running |
|
||||
|
||||
The Matter server is already in place — the S200 plugs in as the *radio* layer for Thread. No compose changes needed to add the S200 itself.
|
||||
|
||||
## Integration Steps (When Device Arrives)
|
||||
|
||||
1. **Physical setup**
|
||||
- Connect S200 WAN to the 192.168.68.0/22 network.
|
||||
- Power via USB-C (5V/2A).
|
||||
- First-boot admin UI reachable at `192.168.8.1` until reconfigured, then at the DHCP-assigned 192.168.68.x address.
|
||||
- Update firmware, set an admin password.
|
||||
|
||||
2. **Verify mDNS discovery from the NUC**
|
||||
```bash
|
||||
# Run on concord NUC (Tailscale: 100.72.55.21)
|
||||
avahi-browse -rt _meshcop._udp
|
||||
```
|
||||
Should list the S200 as a Thread Border Router with a TXT record containing `rv=1`, `tv=1.3.0`, etc.
|
||||
|
||||
3. **Add to Home Assistant**
|
||||
- Settings → Devices & Services → Add Integration → **Thread**
|
||||
- S200 should auto-discover. Add it as an External Thread Border Router.
|
||||
- Settings → Devices & Services → Add Integration → **Matter (BETA)** (already configured to talk to the local matter-server container).
|
||||
|
||||
4. **Pair Matter devices**
|
||||
- Use the Home Assistant Companion app (iOS/Android) to pair.
|
||||
- The app hands off Thread commissioning credentials to each device so it joins the S200's mesh.
|
||||
|
||||
## Gotchas
|
||||
|
||||
- **Firmware lag**: GL.iNet's OTBR implementation trails upstream OpenThread. Check the admin UI for firmware updates before committing to the device.
|
||||
- **No Zigbee**: S200 is Thread-only. Existing Zigbee devices (if any) still need a separate coordinator (e.g., a Zigbee stick on the NUC via Zigbee2MQTT or ZHA).
|
||||
- **Thread credential backup**: Once the S200 forms an operational dataset (network name, PAN ID, network key), export and back it up — losing it means re-commissioning every Thread device.
|
||||
- **HA network_mode: host is load-bearing**: If HA is ever migrated to bridge networking, Matter/Thread discovery breaks. Keep host networking.
|
||||
|
||||
## Status
|
||||
|
||||
- [ ] S200 acquired
|
||||
- [ ] Plugged into 192.168.68.0/22 segment
|
||||
- [ ] mDNS discovery verified from NUC
|
||||
- [ ] Added to HA Thread integration
|
||||
- [ ] First Matter device paired
|
||||
- [ ] Thread operational dataset backed up
|
||||
Reference in New Issue
Block a user