1. 홈어시스턴트란? 홈어시스턴트(HomeAssistant; HA)는 IOT 기기의 로컬제어와 개인 정보 보호를 목적으로 하는 무료 오픈 소스 소프트웨어입니다. 블루투스, 지그비, MQTT 같은 로컬 프로토콜을 이용하는 기기뿐만 아니라 SmartThings 같은 독립적인 생태계를 형성하는 기기들도 Open API를 제공한다면 이를 통해 홈어시스턴트에 통합하여 제어할 수 있습니다.
홈어시스턴트는 2013년 Paulus Schoutsen에 의해 파이썬 어플리케이션으로 처음 시작되었습니다. 2017년에는 Hass.io라는 관리형 운영체제가 도입되어 라즈베리파이에서 쉽게 사용할 수 있게 되었습니다. 2020년에는 소프트웨어의 주요부분은 HomeAssistant Core로 이름이 바뀌었고, Hass.io 와 관리시스템이 포함된 전체 소프트웨어 제품군은 HomeAssistant로 이름이 바뀌었습니다.
출처 : https://developers.home-assistant.io/docs/architecture_index
2. 홈어시스턴트 코어(Core)
코어(Core)는 상태 머신(State Machine), 이벤트 버스(Event Bus), 서비스 레지스트리(Service Registry), 타이머(Timer) 4개가 주된 부분으로 구성됩니다.
상태 머신은 모든 디바이스 상태를 모니터링하여 상태가 변했을때 이벤트 버스에 state_changed 이벤트를 발행합니다. 이벤트 버스는 홈어시스턴트의 핵심이며, 이벤트를 수신하고 발행하는 역할을 합니다. 서비스 레지스트리는 컴포넌트의 서비스를 관리합니다. 타이머는 1초마다 이벤트 버스에 time_changed 이벤트를 발행합니다.
3. 통합 구성요소(Integrations)
홈어시스턴트 코어는 통합 구성요소(Integrations)에 의해 확장될 수 있습니다. 통합 구성요소는 파이썬으로 작성되며 주요한 통합 구성요소는 코어에 내장되어 있습니다.(https://www.home-assistant.io/integrations/) 각각의 통합 구성요소는 특정 도메인을 가지며, 이벤트를 수신하거나 발행하고 서비스를 제공합니다. 또한 디바이스 상태를 유지하여 상태 머신에 디바이스 상태를 설정합니다.
통합 구성요소는 컴포넌트(Component)와 플랫폼(Platform)으로 구성됩니다. 컴포넌트는 통합 구성요소의 핵심 부분으로 외부 디바이스와 상호작용하여 디바이스를 제어합니다. 플랫폼은 다른 통합 구성요소에 포함되어 구성요소(Entity)를 형성하는 모듈입니다.
아래 구성요소(Entity)의 흐름도를 보면 Device Integration과 Integration Platform이 있는데 Device Integration이 컴포넌트, Integration Platform이 플랫폼에 해당합니다.
4. 설치
홈어시스턴트의 설치는 다양한 OS에서 설치가 가능하며, 다양한 설치방법이 존재합니다. https://www.home-assistant.io/installation/ 이 글에서는 우분투 기반 하모니카OS에서 도커를 통해 HomeAssistant supervised를 설치해보겠습니다. 도커와 portainer의 설치는 https://www.robotstory.co.kr/raspberry/?board_name=raspberry_bbs&order_by=fn_pid&order_type=desc&vid=32 이 글을 참고해주세요.
먼저 터미널에 접속하여 OS를 업데이트 합니다.
$ sudo apt update && sudo apt upgrade |
다음 사이트에서 설명하는대로 인스톨러를 설치하고 실행합니다. https://github.com/home-assistant/supervised-installer/
$ apt-get install jq wget curl udisks2 libglib2.0-bin network-manager dbus -y |
$ dpkg -i homeassistant-supervised.deb |
종속성 문제가 발생했습니다.. os-agent를 설치합시다.
https://github.com/home-assistant/os-agent
아래 페이지에서 OS에 맞는 os-agent를 설치합니다. 저는 amd64 아키텍쳐이므로 os-agent_1.2.2_linux_x86_64.deb를 다운로드 했습니다. https://github.com/home-assistant/os-agent/releases/tag/1.2.2
패키지를 설치합니다.
$ sudo dpkg -i os-agent_1.0.0_linux_x86_64.deb |
다시 인스톨러를 설치하면 종속성 문제가 해결되어있습니다.
설치가 완료되면 도커에서 supervisor가 자동 설치되어 실행되고 있습니다.
homeassistant 랜딩페이지가 설치되면 localhost:8123 으로 접속해봅시다. 설치가 진행중입니다.
설치가 완료되면 다음 화면이 뜹니다.
이름에는 화면에 표시될 이름이나 닉네임, 사용자 이름에는 아이디를 넣습니다. 비밀번호를 적고 계정을 만듭니다.
집 위치를 표시해줍니다. 탐색을 누르면 자동으로 위치를 잡아줍니다. 다음, 다음을 누르고 완료를 누르면 다음 그림과 같이 메인페이지가 나옵니다.
이렇게 카드로 형성된 패널을 홈어시스턴트에서는 세계 최초 프로그래머인 에이다 러브레이스(Ada Lovelace)의 이름을 붙여 러브레이스(lovelace)라고 합니다. |