При создании умного дома мной было испробовано несколько систем. На данный момент я остановился на Home Assistant (далее по тексту «HA»). В этой статье я расскажу как его установить и настроить на Raspberry Pi.

Установка и настройка на автозапуск:

$ sudo pip3 install home assistant
$ wget https://raw.githubusercontent.com/balloob/home-assistant/dev/script/hass-daemon
$ sudo cp hass-daemon /etc/init.d/hass-daemon
$ sudo chmod +x /etc/init.d/hass-daemon

В файле /etc/init.d/hass-daemon вносим следующие изменения (можно создать любого пользователя, например hass):

RUN_AS="has"
PID_FILE="/var/run/hass/hass.pid"

И добавляем в автозагрузку:

$ sudo mkdir /var/run/hass
$ chown hass:hass /var/run/hass
$ sudo update-rc.d hass-daemon defaults
$ sudo service hass-daemon install

После запуска HA будет доступен по адресу http://localhost:8123
Конфигурационный файл расположен здесь: /var/opt/homeassistant/configuration.yaml

Я не буду заострять внимание на панели управления. Хоть она и на английском, там все очень понятно.

Первым делом мне захотелось добавить функционал, который определял бы мое местоположение по отношению к некоторым ключевым точкам (дом, работа, зал). HA умеет это делать либо проскандировав локальную сеть на наличие подключенных устройств (например, телефона или планшета) или же через сторонние сервисы OwnTracks и Geofancy. Я решил использовать Owntracks, потому что моего роутера все равно не было в списке поддерживаемых устройств, а поддержки Geofancy на момент написания статьи еще не было. OwnTracks — это небольшое приложение для телефона, которое публикует местоположение через протокол MQTT. Но не будем забегать вперед.

Сначала нужно настроить хотя бы одно местоположение в HA, для которого велось бы наблюдение. При первом запуске и создании конфигурационного файла HA пытается автоматически определить местоположение и установить необходимые координаты. К сожалению, положение у меня определилось как «Москва» и на карте я отображался как живущий в Кремле. Чтобы это исправить необходимо определить точные координаты. Сделать это можно через сервис maps.google.ru, найдя свой дом. В URL будут координаты. Их мы вносим в конфигурационный файл и перезагружаем HA. Теперь в разделе Home наше местоположение должно быть обведено кружком.

Чтобы активировать поддержку OwnTrack добавляем в конфигурационный файл следующие строчки:

device_tracker:
  platform: owntracks

Чтобы определять наличие подключенных устройств в сети через nmap. Устанавливаем его в системе и активируем в HA:

$ sudo apt-get install net-tools nmap
device_tracker:
  platform: nmap_tracker
  hosts: 192.168.1.1/24
  home_interval: 900

Осталось настроить MQTT. HA поддерживает несколько вариантов подключения MQTT:

  • Свой брокер MQTT
  • Общедоступный брокер (например, этот). Любой может подписаться на данный брокер, и ваше местоположение будет общедоступным.
  • Сервис по предоставлению частного MQTT брокера (например, CloudMQTT).

Я буду использовать брокер Mosquitto, установленный на Raspberry Pi.

Установка проста. Ставить мы будем на Raspberry Pi. Версия, которая доступна через apt-get устаревшая, поэтому добавляем репозиторий с новой версией:

$ wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
$ sudo apt-key add mosquitto-repo.gpg.key
$ cd /etc/apt/sources.list.d/
$ sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list
$ sudo apt-get update
$ sudo apt-get install mosquito mosquitto-clients

Для работы с клиентским приложением OwnTrack нужно настроить аутентификацию. Делается это командой:

$ sudo mosquitto_passwd -c /etc/mosquitto/passwd <Имя пользователя>

Будет предложено ввести пароль. Флаг «-c» означает, что мы создаем новую базу с пользователями. Для добавление дополнительных пользователей, не удаляя текущих, нужно просто убрать «-c» при выполнении команды.

В файле /etc/mosquitto/mosquitto.conf добавляем следующие строчки:

bind_address <ip-адрес raspberry pi>
listener 8883
connection_messages true
allow_anonymous false
password_file /etc/mosquitto/passwd

В конфигурационный файл HA добавляем следующие строчки:

mqtt:
  broker: <ip-адрес raspberry pi>
  port: 8883
  client_id: home-assistant
  keepalive: 60
  username: USERNAME
  password: PASSWORD

В принципе, все. Осталось лишь пробросить порты на роутере для HA и Mosquitto. Но это уже выходит за рамки данной статьи.

P.S. Обновить HA можно командой:

$ sudo pip3 install --upgrade homeassistant