Home Automation using Raspberry Pi and HomeKit
Currently this post is available only in russian (will translate it soon…)
Зачем мы всё это делаем?
Цель этого поста – показать как можно поставить homebridge
сервер на Raspberry Pi. Этот сервер позволит управлять через приложение Home (на iOS и macOS) подключенными к Raspberry Pi устройствами (лампочками, вентиляторами, etc.).
Возможно, тебе будет интересно как я делал “коробочку” с реле, которой можно управлять до 4ёх устройств.
Начнём
Прежде всего нам потребуется установить ОС на RPi. Ставить будем Raspbian. Скачиваем торрент-файл с официального сайта с помощью торрент-менеджера (я использовал Transmission):
На всякий случай! Для своего RPi я использую “lite” версию, потому что она занимает меньше места (в ней отсутствует визуальный интерфейс, который мне не нужен).
Затем разархивируем скачанный файл, чтобы получить сам образ – файл .img
. Для создания загрузочной microSD флешки я использовал приложение Etcher:
После завершения процесса записи вынимаем карточку и вставляем в RPi. Нам потребуется клавиатура и монитор, чтобы провести первую настройку. Затем можно будет подключаться с помощью ssh
к RPi.
На всякий случай! Мне удалось уместить всё необходимое на microSD с объёмом памяти в 2GB.
При первом подключении надо будет ввести “pi” в качестве username и “raspberry” в качестве password.
Подключаемся к Wi-Fi
sudo raspi-config
- “2. Network Options”
- “N2. Wi-fi”
- Choose your country
- Enter the SSID (name) of your network
- Enter the passphrase (password)
- Press “Finish” button
Теперь RPi подключён к сети Wi-Fi. Это можно проверить с помощью ping google.com
– должно быть “0% packet loss”.
SSH
sudo raspi-config
- “5. Interfacing Options”
- “P2. SSH”
- “Yes”
- “Ok”
- 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
:
На всякий случай! Если на каком-то этапе возникли трудности, то стоит поискать информацию в репозитории 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)
- Об этом написано подробно в репозитории
homebridge
- Понадобится программа
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