홈 오토메이션 솔루션 중 하나인 Home_Assistant(이하 HA) 설치 및 기본 설정 방법을 다루는 문서입니다.

파이썬 3.4.x 설치

HA 설치를 위해서는 파이썬 3.4 버전이 필요합니다. 파이썬 해당 버전이 기본으로 설치되어 있는 경우는 아래 내용을 건너 뛰어도 됩니다. 파이썬이 기본으로 설치되어 있어도 버전이 2.x 인 경우는 설치를 해줘야 합니다. 아래 명령으로 버전 확인하세요.

  • python -V
  • python3 -V

Python 3 다운로드 및 압축해제

  • wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
  • tar xvzf Python-3.4.4.tgz

빌드, 인스톨

  • cd Python-3.4.4
  • ./configure
  • make
  • sudo make install

PIP3 업그레이드

  • sudo pip3 install –upgrade pip

Home Assistant 설치

홈 어시스턴트 설치

  • sudo pip3 install homeassistant

홈 어시스턴트 실행

  • hass –open-ui

위 명령을 실행하면 웹 인터페이스가 8123 포트로 열립니다. http://x.x.x.x:8123 주소로 브라우저 접속하면 확인할 수 있습니다.

Home Assistant 설정

OpenHAB, Home Assistant 같은 범용 홈 오토메이션 솔루션들은 설정과정이 꽤나 복잡합니다. 여러가지 시도를 해보고 관련된 자료들도 보고 공부를 해야 제대로 쓸 수 있습니다. 여기서는 가장 간단한 설정만 다루겠습니다.

자신의 홈 디렉터리 아래 [~/.homeassistant] 경로에 있는 configuration.yaml 파일을 이용해 설정을 수정할 수 있습니다.

  • cd ~/.homeassistant
  • nano configuration.yaml

기본이 되는 환경 변수부터 설정해줍니다.

homeassistant:
  # Name of the location where Home Assistant is running
  name: your_home_name
  # Location required to calculate the time the sun rises and sets
  latitude: 37.5345
  longitude: 127.1324
  # C for Celcius, F for Fahrenheit
  temperature_unit: C
  # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
  time_zone: Asia/Seoul

name, latitude, longitude 등의 값을 원하는 대로 바꿔주면 됩니다.

그리고 아래 내용을 추가해서 웹 인터페이스 접근시 암호를 입력하도록 수정합니다.

http:
  api_password: YOUR_PASSWORD

암호 입력 후 저장합니다. 설정을 적용하기 위해서는 홈 어시스턴트 재실행이 필요합니다.

  • hass –open-ui

웹에 다시 접속해보면 아직 화면이 허전할겁니다. 날씨 정보를 상단 동그라미 아이콘으로 추가해 보겠습니다.

# Need to register on Forecast.io for your PRIVATE API
sensor 1:
  platform: forecast
  name: "Weather Seoul"
  api_key: your_api_key
  monitored_conditions:
    - summary
    - temperature
    - humidity
    - ozone
    - wind_speed

위 내용을 입력하면 센서 정보가 추가됩니다. 날씨 정보는 forecast.io 에서 가져오기 때문에 forecast.io 에 브라우저로 접속해서 회원가입-API 키를 발급 받으세요. 그리고 API 키를 적어주면 됩니다.

홈 어시스턴트 재실행 후 다시 접속해보면 상단에 날씨 정보가 표시될겁니다.

유사한 방법으로 HA 가 실행되는 하드웨어 정보도 보여줄 수 있습니다. 아래 내용을 입력 후

sensor 2:
  platform: systemmonitor
  resources:
    - type: 'disk_use'
      arg: '/home'
    - type: 'memory_use_percent'
    - type: 'processor_use'

재실행 하면 상단 정보창이 풍성해집니다.

ha_upper_deck

MQTT 를 이용한 센서 데이터 추가

MQTT 브로커와 센서 장치를 연동해서 HA 에서 센서값을 모니터링 할 수 있도록 해보겠습니다. MQTT 브로커 설치 방법과 센서 장치 제작 방법은 아래 링크를 참고하세요. (일단은 HA 설정부터 하시고 아래 가이드를 참고하세요)

HA 에서 MQTT 데이터를 받아오기 위해서는 MQTT 브로커와의 연결 설정을 해줘야 합니다. 아래 내용을 설정 파일에 추가합니다.

mqtt:
  broker: localhost
  port: 1883
  client_id: home-assistant-1
  keepalive: 60
  username:
  password:
  certificate:
  protocol: 3.1

제 경우는 라즈베리파이에 HA, MQTT 브로커가 모두 설치되어 있어서 localhost를 사용했습니다. 외부의 MQTT 브로커를 사용하는 경우 IP 또는 도메인 이름을 적어주면 됩니다.

이제 HA 설정 파일에서 특정 토픽을 구독(subscribe)하고 지정된 형식의 값이 도착하면 화면에 표시해주도록 설정하면 됩니다.

sensor 3:
  platform: mqtt
  state_topic: "home/thirdroom/temp_humi"
  name: "Thirdroom Humidity"
  qos: 0
  unit_of_measurement: "%"
  value_template: '{{ value_json.humi }}'

sensor 4:
  platform: mqtt
  state_topic: "home/thirdroom/temp_humi"
  name: "Thirdroom Temperature"
  qos: 0
  unit_of_measurement: "°C"
  value_template: '{{ value_json.temp }}'

여기까지 설정하면 앞선 날씨, 시스템 정보처럼 상단 동그라미 아이콘으로 온습도가 표시됩니다. 이걸 보기 편하게 하단 카드 형태로 표시하려면 아래와 같이 그룹으로 만들어줍니다.

group:
  Third Room:
    - sensor.thirdroom_temperature
    - sensor.thirdroom_humidity

홈 어시스턴트 서버 설정은 끝났습니다. 이제 MQTT 브로커를 설치하고 센서장치를 제작하면 됩니다. 아래 링크 하단부에 해당 내용이 나와 있습니다.

MQTT 브로커와 센서 장치가 준비되면 센서 장치에서 주기적으로 온도, 습도 데이터를 MQTT 브로커에 쏴주면 됩니다. 이때 데이터는 정해진 토픽에 JSON 데이터 형식으로 쏴주도록 만들어둬야 합니다.

  • 온습도 데이터
    • 토픽 : home/thirdroom/temp_humi
    • JSON 데이터 형식 : {“temp”: 26.14, “humi”: 68.71}

여기까지 문제가 없으면 주기적으로 도착하는 MQTT 메시지에서 temp, humi 값을 추출해 화면에 표시합니다. HA를 다시 실행하고 웹으로 확인하면 아래처럼 센서값을 계속 모니터링하게 됩니다.

ha_mqtt_device

이 외에도 MPD 오디오 스트리밍 제어, Plex 미디어 센터, 매크로, 스크립트 등등 수 많은 기능들을 설정할 수 있습니다. 아래 링크들을 참고해서 직접 추가해 보시길…

참고자료