# 🏠 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
