Skip to main content

Home Hub

Entertainment system with Home Assistant, smart speakers, and voice control

Overview

Home Hub is a Dell Inspiron 14 5420 laptop repurposed as a living room entertainment center and smart home controller. It runs Debian 12 with a Cinnamon desktop and combines:

  • Media playback — YouTube, Netflix, and web browsing via Brave browser
  • Home Assistant Supervised — Orchestrating smart home devices and automations
  • Custom ESP32 WiFi smart speaker — Voice-controlled audio routing and assistant capabilities
  • PipeWire audio — Managing audio output between laptop speakers and networked devices

Hardware

ComponentDetail
MachineDell Inspiron 14 5420
AudioIntel sof-hda-dsp (ALSA card 0) via PipeWire
OSDebian 12 (Bookworm)
DesktopCinnamon / LightDM
DockerHome Assistant Supervised

Architecture

┌──────────────────────────────────────────┐
│ Home Hub (Laptop) │
│ │
│ ┌──────────┐ ┌───────────────────────┐ │
│ │ Brave │ │ Home Assistant │ │
│ │ Browser │ │ (Docker/Supervised) │ │
│ │ │ │ │ │
│ │ YouTube │ │ Assist Pipeline │ │
│ │ Netflix │ │ (STT/TTS) │ │
│ └────┬─────┘ └──────────┬────────────┘ │
│ │ │ │
│ ┌────▼───────────────────▼────────────┐ │
│ │ PipeWire Audio │ │
│ └────┬────────────────────────────────┘ │
│ │ │
└───────┼──────────────────────────────────┘

▼ (WiFi)
┌─────────────┐
│ ESP32 │
│ Smart │
│ Speaker │
│ (ESPHome) │
└─────────────┘

Features

  • Reliable audio — PipeWire audio stack with hassio_audio conflict permanently resolved via systemd service
  • Home Assistant Supervised — Full HA installation with ESPHome addon for ESP32 firmware management
  • hassio_audio isolation — Custom systemd service uses nsenter to mask /dev/snd inside the container, keeping the supervisor happy while freeing ALSA for PipeWire
  • ESP32 smart speaker (planned) — WiFi-based voice assistant using ESPHome's voice_assistant component
  • Voice-controlled audio routing (planned) — Route audio between laptop speakers and ESP32 via voice commands

Quick Start

# SSH into Home Hub
ssh rob@192.168.0.166

# Check audio status
wpctl status

# Check Home Assistant containers
sudo docker ps --format "table {{.Names}}\t{{.Status}}"

# Verify hassio_audio is neutered
sudo systemctl status disable-hassio-audio.service

# Access Home Assistant web UI
# http://192.168.0.166:8123

Key Decisions

  • PipeWire over PulseAudio — Better ALSA integration and lower latency
  • hassio_audio disabled — Home Assistant's audio container locks ALSA devices; ESP32 speaker communicates over WiFi instead
  • ESPHome for ESP32 — Native Home Assistant integration via voice_assistant component
  • Browser-based streaming — No dedicated media server needed for initial setup

This project is part of the development ecosystem: