Home Assistant: 오픈소스 스마트홈 자동화의 중심




로컬 제어와 프라이버시를 최우선으로 하는 오픈소스 홈 오토메이션 플랫폼


개요

Home Assistant는 전 세계 DIY 커뮤니티가 만들어가는 오픈소스 스마트홈 플랫폼입니다. 클라우드 의존성 없이 로컬에서 모든 스마트 기기를 통합 제어할 수 있으며, Raspberry Pi부터 NAS, 전용 서버까지 다양한 환경에서 Docker로 쉽게 구축할 수 있습니다.

항목내용
공식 사이트https://www.home-assistant.io
GitHubhttps://github.com/home-assistant
라이선스Apache 2.0
최신 버전2026.1 (2026년 1월 기준)
Docker 이미지ghcr.io/home-assistant/home-assistant:stable

왜 Home Assistant인가?

1. 로컬 우선 (Local First)

클라우드 서버 없이 집 안에서 모든 자동화가 동작합니다. 인터넷이 끊겨도 스마트홈은 계속 작동합니다.

2. 프라이버시 보장

데이터가 외부로 나가지 않습니다. 음성 명령, 카메라 영상, 센서 데이터 모두 로컬에서 처리됩니다.

3. 압도적인 통합 지원

3,000개 이상의 통합(Integration)을 지원합니다. Zigbee, Z-Wave, Matter, Thread, Wi-Fi, Bluetooth 등 거의 모든 스마트홈 프로토콜을 커버합니다.

4. 강력한 자동화

“해가 지면 조명 켜기” 같은 단순 자동화부터 “가족이 모두 외출하면 난방 끄고, 마지막 사람이 집에 오면 다시 켜기” 같은 복잡한 시나리오까지 가능합니다.

5. 활발한 커뮤니티

매달 새로운 기능이 추가되고, HACS(Home Assistant Community Store)를 통해 수천 개의 커뮤니티 통합을 설치할 수 있습니다.


2026년 주요 업데이트

Home Assistant Labs

새로운 기능을 미리 체험할 수 있는 실험실 기능이 추가되었습니다. Winter mode로 대시보드에 눈 내리는 효과를 즐길 수도 있습니다.

휴먼 프렌들리 트리거

자동화 작성이 더 직관적으로 바뀌었습니다.

# 기존 방식 (상태값 기반)
trigger:
  - platform: state
    entity_id: light.living_room
    to: "on"

# 새로운 방식 (자연어 스타일)
trigger:
  - platform: light
    entity_id: light.living_room
    event: turn_on

이제 “조명이 켜지면”, “버튼이 눌리면”, “누군가 집에 도착하면” 같은 자연스러운 표현으로 자동화를 만들 수 있습니다.

프로토콜 패널

Zigbee, Z-Wave, Thread, Matter 네트워크 상태를 한눈에 볼 수 있는 전용 패널이 추가되었습니다. 디바이스 연결 상태, 신호 강도, 네트워크 토폴로지를 시각적으로 확인할 수 있습니다.

WebRTC 카메라 스트리밍

실시간 카메라 스트리밍이 WebRTC로 개선되어 지연 시간이 대폭 줄었습니다.

모바일 대시보드 개선

홈 대시보드에서 요약 카드를 바로 확인할 수 있어 탭 없이 핵심 정보에 접근할 수 있습니다.


Docker Compose로 설치하기

기본 설치

services:
  homeassistant:
    container_name: homeassistant
    image: ghcr.io/home-assistant/home-assistant:stable
    volumes:
      - ./config:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    privileged: true
    network_mode: host
    environment:
      - TZ=Asia/Seoul

확장 스택 (Node-RED, Mosquitto, InfluxDB 포함)

services:
  homeassistant:
    container_name: homeassistant
    image: ghcr.io/home-assistant/home-assistant:stable
    volumes:
      - ./ha-config:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    privileged: true
    network_mode: host
    environment:
      - TZ=Asia/Seoul

  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto:latest
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    ports:
      - "1883:1883"
      - "9001:9001"
    restart: unless-stopped

  nodered:
    container_name: nodered
    image: nodered/node-red:latest
    volumes:
      - ./nodered-data:/data
    ports:
      - "1880:1880"
    restart: unless-stopped
    environment:
      - TZ=Asia/Seoul
    depends_on:
      - homeassistant
      - mosquitto

  influxdb:
    container_name: influxdb
    image: influxdb:2
    volumes:
      - ./influxdb-data:/var/lib/influxdb2
      - ./influxdb-config:/etc/influxdb2
    ports:
      - "8086:8086"
    restart: unless-stopped
    environment:
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=admin
      - DOCKER_INFLUXDB_INIT_PASSWORD=your_password_here
      - DOCKER_INFLUXDB_INIT_ORG=homelab
      - DOCKER_INFLUXDB_INIT_BUCKET=homeassistant

  grafana:
    container_name: grafana
    image: grafana/grafana:latest
    volumes:
      - ./grafana-data:/var/lib/grafana
    ports:
      - "3000:3000"
    restart: unless-stopped
    depends_on:
      - influxdb

설치 및 실행

# 디렉토리 생성
mkdir -p ~/homeassistant && cd ~/homeassistant

# docker-compose.yml 파일 생성 후
docker compose up -d

# 로그 확인
docker logs -f homeassistant

브라우저에서 http://<서버IP>:8123으로 접속하면 초기 설정 화면이 나타납니다.


핵심 개념

Entities (엔티티)

Home Assistant가 인식하는 모든 것은 엔티티입니다. 조명, 스위치, 센서, 카메라 등 각각 고유한 ID를 가집니다.

light.living_room_ceiling    # 거실 천장 조명
sensor.outdoor_temperature   # 실외 온도 센서
binary_sensor.front_door     # 현관문 열림 센서

Integrations (통합)

외부 기기나 서비스를 Home Assistant에 연결하는 방법입니다. UI에서 대부분 자동으로 설정됩니다.

Automations (자동화)

트리거, 조건, 액션으로 구성됩니다.

automation:
  - alias: "퇴근 후 조명 켜기"
    trigger:
      - platform: zone
        entity_id: person.me
        zone: zone.home
        event: enter
    condition:
      - condition: sun
        after: sunset
    action:
      - service: light.turn_on
        target:
          entity_id: light.living_room

Scripts (스크립트)

재사용 가능한 액션 시퀀스입니다.

Scenes (씬)

여러 기기의 상태를 한 번에 설정합니다. “영화 모드”, “취침 모드” 등을 만들 수 있습니다.


추천 통합 (Integrations)

필수 통합

통합용도
HACS커뮤니티 통합 스토어. 수천 개의 추가 기능
Zigbee Home Automation (ZHA)Zigbee 기기 연결
Z-Wave JSZ-Wave 기기 연결
MQTTIoT 기기 통신 프로토콜
ESPHomeDIY 센서/스위치 제작

AI/카메라 통합

통합용도
Frigate실시간 객체 감지 NVR
LLM VisionAI 이미지 분석 (GPT-4 Vision 등)
Google Generative AIAI 기반 자동화

유틸리티

통합용도
Music Assistant멀티룸 오디오 통합
Proxmox VE가상머신 제어
Plex/Jellyfin미디어 서버 연동

HACS 필수 커스텀 컴포넌트

HACS(Home Assistant Community Store)를 설치하면 다음 커뮤니티 통합을 추가할 수 있습니다.

컴포넌트용도
Browser Mod브라우저별 대시보드 커스터마이징
Mushroom Cards현대적인 카드 UI
Card Mod카드 CSS 커스터마이징
Auto Entities동적 엔티티 카드 생성
Bubble Card모바일 친화적 팝업 UI
Scheduler스케줄 기반 자동화 UI
Watchman설정 오류 감지

자동화 예제

1. 모션 감지 조명

automation:
  - alias: "현관 모션 조명"
    trigger:
      - platform: state
        entity_id: binary_sensor.front_door_motion
        to: "on"
    condition:
      - condition: numeric_state
        entity_id: sensor.front_door_illuminance
        below: 100
    action:
      - service: light.turn_on
        target:
          entity_id: light.front_door
        data:
          brightness_pct: 100
      - delay: "00:03:00"
      - service: light.turn_off
        target:
          entity_id: light.front_door

2. 에어컨 자동 제어

automation:
  - alias: "온도 기반 에어컨 제어"
    trigger:
      - platform: numeric_state
        entity_id: sensor.living_room_temperature
        above: 26
    condition:
      - condition: state
        entity_id: person.me
        state: "home"
    action:
      - service: climate.set_temperature
        target:
          entity_id: climate.living_room_ac
        data:
          temperature: 24
          hvac_mode: cool

3. 외출 시 전체 꺼짐

automation:
  - alias: "외출 모드"
    trigger:
      - platform: state
        entity_id: group.family
        to: "not_home"
        for: "00:10:00"
    action:
      - service: light.turn_off
        target:
          entity_id: all
      - service: climate.turn_off
        target:
          entity_id: all
      - service: media_player.turn_off
        target:
          entity_id: all
      - service: notify.mobile_app
        data:
          title: "외출 모드 활성화"
          message: "모든 기기가 꺼졌습니다."

보안 설정

HTTPS 설정 (리버스 프록시)

Nginx Proxy Manager나 Traefik을 사용해 HTTPS를 적용하세요.

configuration.yaml에 추가:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.16.0.0/12
    - 192.168.0.0/16
    - 10.0.0.0/8

2단계 인증

설정 → 사용자 → 프로필에서 TOTP 기반 2FA를 활성화할 수 있습니다.

IP 차단

configuration.yaml:

http:
  ip_ban_enabled: true
  login_attempts_threshold: 5

백업 및 복구

자동 백업 설정

설정 → 시스템 → 백업에서 자동 백업 일정을 설정할 수 있습니다.

수동 백업

# Docker 컨테이너 정지
docker stop homeassistant

# config 폴더 백업
tar -czvf ha-backup-$(date +%Y%m%d).tar.gz ./config

# 컨테이너 재시작
docker start homeassistant

복구

docker stop homeassistant
tar -xzvf ha-backup-20260120.tar.gz -C ./
docker start homeassistant

성능 최적화

데이터베이스 최적화

기본 SQLite 대신 MariaDB나 PostgreSQL을 사용하면 대규모 히스토리 데이터 처리가 빨라집니다.

# configuration.yaml
recorder:
  db_url: mysql://user:password@localhost/homeassistant
  purge_keep_days: 10
  commit_interval: 1
  exclude:
    domains:
      - automation
      - updater
    entity_globs:
      - sensor.weather_*

로그 레벨 조정

logger:
  default: warning
  logs:
    homeassistant.components.mqtt: debug

관련 프로젝트

프로젝트설명
ESPHomeESP32/ESP8266 기반 DIY 센서 펌웨어
Zigbee2MQTTZigbee 기기를 MQTT로 연결
FrigateAI 객체 감지 NVR
Node-RED플로우 기반 자동화 도구
Rhasspy로컬 음성 어시스턴트

마무리

Home Assistant는 단순한 스마트홈 허브를 넘어, 집 전체를 프로그래밍 가능한 공간으로 만들어줍니다. 처음에는 조명 자동화로 시작하더라도, 점점 에너지 모니터링, 보안 시스템, AI 기반 자동화까지 확장할 수 있습니다.

Docker로 설치하면 업데이트와 백업이 간편하고, 다른 서비스(Grafana, InfluxDB, Node-RED)와의 연동도 쉽습니다. 스마트홈을 시작하려는 분들에게 Home Assistant는 최고의 선택입니다.




댓글 남기기