name: "Home Assistant"
description: "Open-source home automation platform for smart home control and monitoring"
category: "automation"
priority: "high"
version: "2024.6"
homepage: "https://home-assistant.io"
# System requirements (Pi 3+ supported, Pi 4+ recommended)
requirements:
ports: [8123]
memory_gb: 2 # Minimum for Pi
disk_gb: 32 # For database and automations
cpu_cores: 2 # Pi 3+ minimum
dependencies:
- docker
# Default configuration
default_port: 8123
default_config:
data_path: "/opt/homeassistant"
timezone: "America/New_York"
enable_recorder: true
database_type: "sqlite" # Pi-optimized
# Installation method
installation:
method: "docker-compose"
docker_compose:
version: "3.8"
services:
homeassistant:
container_name: "homeassistant"
image: "ghcr.io/home-assistant/home-assistant:stable"
restart: "unless-stopped"
privileged: true # For hardware access
network_mode: "host" # For device discovery
environment:
- "TZ=America/New_York"
volumes:
- "/opt/homeassistant/config:/config"
- "/opt/homeassistant/media:/media"
- "/etc/localtime:/etc/localtime:ro"
# Pi-specific hardware access
- "/dev:/dev"
- "/sys:/sys:ro"
- "/run/dbus:/run/dbus:ro"
# Pi resource optimization
deploy:
resources:
limits:
memory: 1.5G
reservations:
memory: 512M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8123"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
# Optional: Mosquitto MQTT broker for IoT devices
mosquitto:
container_name: "mosquitto"
image: "eclipse-mosquitto:2"
restart: "unless-stopped"
ports:
- "1883:1883"
- "9001:9001"
volumes:
- "/opt/homeassistant/mosquitto/config:/mosquitto/config"
- "/opt/homeassistant/mosquitto/data:/mosquitto/data"
- "/opt/homeassistant/mosquitto/log:/mosquitto/log"
networks:
- homeassistant-network
# Optional: Node-RED for visual automation
nodered:
container_name: "nodered"
image: "nodered/node-red:latest"
restart: "unless-stopped"
ports:
- "1880:1880"
environment:
- "TZ=America/New_York"
volumes:
- "/opt/homeassistant/nodered:/data"
networks:
- homeassistant-network
networks:
homeassistant-network:
driver: bridge
# Pi-specific hardware integrations
pi_integrations:
gpio_access:
description: "Direct GPIO control from Home Assistant"
config: |
# Add to configuration.yaml
rpi_gpio:
- port: 18
name: "Relay 1"
direction: out
- port: 19
name: "Motion Sensor"
direction: in
pull_mode: up
camera_module:
description: "Pi Camera module integration"
config: |
# Enable Pi camera
camera:
- platform: rpi_camera
name: "Pi Camera"
image_width: 1280
image_height: 720
image_rotation: 180
bluetooth_tracking:
description: "Device presence detection via Bluetooth"
config: |
device_tracker:
- platform: bluetooth_tracker
request_rssi: true
interval_seconds: 10
# Smart home device support
device_integrations:
zigbee_devices:
via_usb_stick:
- "Sonoff Zigbee 3.0 USB Dongle"
- "ConBee II"
- "SkyConnect"
setup: "Plug USB stick → Settings → Integrations → ZHA"
wifi_devices:
auto_discovery:
- "Philips Hue lights"
- "TP-Link Kasa switches"
- "Shelly relays"
- "Tasmota devices"
setup: "Settings → Integrations → Add Integration"
bluetooth_devices:
supported:
- "Bluetooth temperature sensors"
- "Mi Flora plant sensors"
- "Bluetooth beacons"
setup: "Settings → Integrations → Bluetooth"
# Basic automation examples
automation_examples:
motion_light:
description: "Turn on lights when motion detected"
yaml: |
automation:
- alias: "Motion Light"
trigger:
platform: state
entity_id: binary_sensor.motion_sensor
to: 'on'
action:
service: light.turn_on
entity_id: light.living_room
sunset_routine:
description: "Close blinds and dim lights at sunset"
yaml: |
automation:
- alias: "Sunset Routine"
trigger:
platform: sun
event: sunset
action:
- service: cover.close_cover
entity_id: cover.living_room_blinds
- service: light.turn_on
entity_id: light.all_lights
data:
brightness_pct: 30
# Post-installation configuration
post_install:
initial_setup:
- "Access Home Assistant at http://{hostname}:8123"
- "Complete onboarding wizard"
- "Set up location and timezone"
- "Configure first user account"
- "Install HACS (Home Assistant Community Store) for additional integrations"
essential_integrations:
- "Settings → Integrations → Add Integration:"
- " • Sun (for sunrise/sunset automation)"
- " • Weather (choose local weather service)"
- " • Mobile App (for notifications)"
- " • File Editor (for config editing)"
- " • Terminal & SSH (for system access)"
backup_setup:
- "Settings → System → Backups"
- "Enable automatic backups to external storage"
- "Consider Google Drive Backup add-on"
# Performance optimization for Pi
performance_tuning:
database_optimization:
recorder_config: |
# Add to configuration.yaml
recorder:
purge_keep_days: 7 # Reduce history retention
db_url: "sqlite:////config/home-assistant_v2.db"
exclude:
domains:
- automation
- script
include:
domains:
- sensor
- binary_sensor
- light
- switch
logging_optimization:
logger_config: |
# Reduce log verbosity
logger:
default: warning
logs:
homeassistant.core: info
homeassistant.components.recorder: warning
storage_optimization:
- "Use fast SD card (Class 10 U3) or USB 3.0 SSD"
- "Enable log2ram to reduce SD card wear"
- "Move database to external storage if needed"
# Add-ons for enhanced functionality
recommended_addons:
core_addons:
- name: "File Editor"
purpose: "Edit configuration files in browser"
- name: "Terminal & SSH"
purpose: "Command line access"
- name: "Samba Share"
purpose: "Network file access"
monitoring_addons:
- name: "Glances"
purpose: "System monitoring dashboard"
- name: "Log Viewer"
purpose: "Centralized log viewing"
automation_addons:
- name: "Node-RED"
purpose: "Visual automation builder"
- name: "AppDaemon"
purpose: "Python-based automation"
# Energy monitoring setup
energy_monitoring:
smart_plugs:
recommended: ["TP-Link Kasa HS110", "Shelly Plug S"]
setup: "Auto-discovered → Configure energy monitoring"
whole_home_monitoring:
devices: ["Emporia Vue", "Sense Energy Monitor"]
integration: "Custom component or ESPHome"
solar_integration:
inverters: ["SolarEdge", "Enphase", "Fronius"]
setup: "Add integration → Configure API access"
# Mobile integration
mobile_apps:
official_app:
android: "Home Assistant (Google Play)"
ios: "Home Assistant (App Store)"
features:
- "Remote control"
- "Location tracking"
- "Push notifications"
- "Quick actions"
companion_features:
sensors: "Battery, network, location"
actions: "Trigger automations remotely"
notifications: "Send alerts to phone"
# Security and remote access
security:
local_access:
- "Default: http://{hostname}:8123"
- "Enable HTTPS with SSL certificate"
- "Use strong passwords and 2FA"
remote_access_options:
nabu_casa:
description: "Official cloud service ($6/month)"
benefits: "Easy setup, supports Alexa/Google"
vpn_access:
description: "VPN to home network"
options: ["Tailscale", "WireGuard", "OpenVPN"]
reverse_proxy:
description: "Self-hosted with domain"
tools: ["nginx", "Caddy", "Traefik"]
# Monitoring and maintenance
monitoring:
system_health:
builtin: "Settings → System → Repairs"
addon: "Glances for detailed Pi metrics"
performance_metrics:
- "CPU usage and temperature"
- "Memory consumption"
- "SD card/storage health"
- "Network connectivity"
backup_verification:
schedule: "Weekly automatic backups"
testing: "Restore test quarterly"
# Troubleshooting
troubleshooting:
common_issues:
- issue: "Home Assistant won't start"
solutions:
- "Check container logs: docker logs homeassistant"
- "Verify configuration.yaml syntax"
- "Check available disk space"
- "Restart container: docker restart homeassistant"
- issue: "Devices not discovered"
solutions:
- "Ensure network_mode: host is set"
- "Check firewall settings"
- "Verify devices are on same network"
- "Enable multicast/mDNS"
- issue: "Poor performance on Pi"
solutions:
- "Reduce recorder retention days"
- "Exclude unnecessary entities from recorder"
- "Use faster storage (SSD)"
- "Monitor CPU temperature"
- issue: "GPIO integration not working"
solutions:
- "Ensure privileged: true is set"
- "Check /dev volume mount"
- "Verify GPIO permissions"
- "Install RPi.GPIO in container"
# Integration with other homelab services
homelab_integrations:
with_pi_hole:
description: "Network-wide ad blocking"
setup: "Add Pi-hole as DNS server in router settings"
with_jellyfin:
description: "Media server control"
integration: "Jellyfin integration for media control"
with_truenas:
description: "Network storage access"
setup: "Mount NFS/SMB shares for media storage"
with_cameras:
description: "Security camera integration"
options: ["Frigate NVR", "MotionEye", "Blue Iris"]
# Advanced Pi-specific features
advanced_pi_features:
gpio_sensors:
temperature: "DS18B20 one-wire sensors"
motion: "PIR motion sensors"
door_window: "Reed switches"
light: "Photoresistors"
hat_support:
sense_hat: "LED matrix and environmental sensors"
enviro_plus: "Air quality monitoring"
automation_hat: "Relays and analog inputs"
usb_devices:
zigbee_coordinator: "ConBee II, SkyConnect"
zwave_controller: "Aeotec Z-Stick 7"
sdr_radio: "RTL-SDR for 433MHz devices"