Home Automation using Raspberry Pi and HomeKit


6 minute read

image-center

Currently this post is available only in russian (will translate it soon…)

Зачем мы всё это делаем?

Цель этого поста – показать как можно поставить homebridge сервер на Raspberry Pi. Этот сервер позволит управлять через приложение Home (на iOS и macOS) подключенными к Raspberry Pi устройствами (лампочками, вентиляторами, etc.).

Возможно, тебе будет интересно как я делал “коробочку” с реле, которой можно управлять до 4ёх устройств.

Центр Управления, подключение и настройка нового устройства
Программа Home на iOS
Программа Home на macOS

Начнём

Прежде всего нам потребуется установить ОС на RPi. Ставить будем Raspbian. Скачиваем торрент-файл с официального сайта с помощью торрент-менеджера (я использовал Transmission):

alt

На всякий случай! Для своего RPi я использую “lite” версию, потому что она занимает меньше места (в ней отсутствует визуальный интерфейс, который мне не нужен).

Затем разархивируем скачанный файл, чтобы получить сам образ – файл .img. Для создания загрузочной microSD флешки я использовал приложение Etcher:

alt

alt После завершения процесса записи вынимаем карточку и вставляем в RPi. Нам потребуется клавиатура и монитор, чтобы провести первую настройку. Затем можно будет подключаться с помощью ssh к RPi.

На всякий случай! Мне удалось уместить всё необходимое на microSD с объёмом памяти в 2GB.

При первом подключении надо будет ввести “pi” в качестве username и “raspberry” в качестве password.

Подключаемся к Wi-Fi

  1. sudo raspi-config
  2. “2. Network Options”
  3. “N2. Wi-fi”
  4. Choose your country
  5. Enter the SSID (name) of your network
  6. Enter the passphrase (password)
  7. Press “Finish” button

Теперь RPi подключён к сети Wi-Fi. Это можно проверить с помощью ping google.com – должно быть “0% packet loss”.

SSH

  1. sudo raspi-config
  2. “5. Interfacing Options”
  3. “P2. SSH”
  4. “Yes”
  5. “Ok”
  6. Press “Finish” button

Установка homebridge

Начнём с того, что обновим списки доступных пакетов, а также обновим уже установленные пакеты (которые идут сразу с ОС). Доустанавливаем git и screen:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git
sudo apt-get install screen

Установка Python’a и необходимой библиотеки RPi.GPIO, с помощью которой осуществляется управление пинами (штырьки, торчащие из RPi):

sudo apt-get install python-pip python3-pip python-dev python-rpi.gpio
pip3 install RPi.GPIO

Для homebridge и установки плагинов нам потребуется Node.js, который установим следующими командами:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

На данном этапе стоит проверить тип чипа у RPi. Если это “armv7l”, то всё ок, идём дальше:

uname -a

Устанавливаем homebridge:

sudo apt-get install libavahi-compat-libdnssd-dev
sudo npm install -g --unsafe-perm homebridge

Проверим, что всё установилось как надо. Для этого надо запустить команду homebridge: alt

На всякий случай! Если на каком-то этапе возникли трудности, то стоит поискать информацию в репозитории homebridge, посмотреть хороший туториал по установке homebridge, либо же написать мне удобным для тебя способом.

Установка плагинов для homebridge

Плагины очень сильно упрощают подключения внешних устройств (таких как термостаты, реле, лампочки, датчики температуры, etc.). Все доступные плагины искать можно здесь.

Разберём пару тех, которые я использую:

  • CmdSwitch2 – предоставляет интерфейс для управления выключателем (я его использую для управления реле).
  • homebridge-temperature-file – удобный плагин для вывода температуры из файла в приложение Home.

С помощью таких команд их можно установить:

sudo npm install -g homebridge-temperature-file
sudo npm install -g homebridge-cmdswitch2

Вся информация о “собранной системе” для homebridge находится в папке ~/.homebridge. На моём RPi структура этой папки выглядит так:

.homebridge/
|-- accessories
|   `-- cachedAccessories
|-- config.json
`-- persist
    |-- AccessoryInfo.CC213DE3CE30.json
    |-- AccessoryInfo.CC223DE3CE30.json
    |-- IdentifierCache.CC213DE3CE30.json
    `-- IdentifierCache.CC223DE3CE30.json

При первом знакомстве с homebridge я не понимал как должен быть устроен файл config.json. Поэтому я прикладываю копию своего, чтобы тебе было с чем сверяться.

TODO_BEGIN

Запуск сервера homebridge при включении RPi (on boot)

  1. Об этом написано подробно в репозитории homebridge
  2. Понадобится программа screen:
    sudo apt-get install screen
    

Добавление строк в файл /etc/rc.local

TODO_END

Проверка статуса сервиса. Тут должно отразиться, что мы действительно внесли изменения в файл /etc/rc.local:

sudo systemctl status rc-local

После этого перезапускаем сервис rc-local:

sudo systemctl daemon-reload

Буду рад услышать пожелания/предложения/замечания от тебя. Если что – напиши мне :)

Leave a comment