Files
homelab-optimized/docs/services/home-assistant/README.md
Gitea Mirror Bot e7652c8dab
Some checks failed
Documentation / Build Docusaurus (push) Failing after 5m3s
Documentation / Deploy to GitHub Pages (push) Has been skipped
Sanitized mirror from private repository - 2026-04-20 01:32:01 UTC
2026-04-20 01:32:01 +00:00

365 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🏠 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