В одной из прошлых статей мы сделали устройство на базе ESP8266, которым можно управлять с устройств Apple, с помощью приложения “Дом”. Официально поддерживаемых устройств очень мало, а сторонние легко подключать с помощью HomeBridge, который можно сделать на одноплатном компьютере, например Raspberry Pi. Кстати, в качестве испытуемого я взял самый первый старинный экземпляр c 512мб ОЗУ – по идее, нам же много мощности не надо. Все примеры сделаны для 3 версии компьютера и до последнего я сомневался, заведётся ли это ПО. А что вообще такое HomeBridge? – это сервер, написанный на NodeJS, который эмулирует API HomeKit и позволяет подключать к умному дому Apple не сертифицированные устройства (т.е. всё будет намного дешевле).
Я перепробовал несколько инструкций с рунета, но все они либо старые, либо упускают какие-то шаги. Быстрая установка из 4 команд с гитхаб у меня также не заработала, и я пошёл по длинному пути зарубежного сайта .instructables.com (в итоге рабочему). Сначала нужно скачать образ системы для компьютера. Я выбрал самый минимальный, ведь для homebridge совсем не нужно иметь графический интерфейс системы или подключать монитор. Ссылка на образ
Перед тем, как что-то записывать на флешку, лучше её отформатировать программой SD Formatter. Например, если флеш-карта уже была загрузочной, то средства windows её отформатировать не смогут.
Дальше понадобится программа для создания образов на флешку. Я обычно использую UNETBOOTIN, но также пробовал ETCHER Установки не требует, весит немного, пользоваться просто – указываете образ, имя sd-карты, и нажимаете “ок”.
Etcher конечно выглядит по современнее, но смысл один.
Как вы помните, я скачал минимальную версию без десктопа, да и монитор мне подключать лень. К сожалению, поддержка SSH в последних версиях была выпилена, но её несложно добавить обратно. Пока карточка с образом ещё в компьютере, создайте в корне файл без расширения с именем “SSH”. Система при загрузке в одноплатном компьютере сама поймёт, что надо включить SSH и удалит этот файл.
Теперь загружаем Raspberry PI и подключаем сетевым патч-кордом в роутер. Смотрим в любой программе сканере адрес, который получил наш компьютер. У меня это 192.168.1.30
Теперь запускаем putty, и переключаем режим на SSH, вводим адрес, который мы узнали в сканере и жмём кнопку “ОК”.
Система запросит логин, который будет PI, а далее пароль – raspberry. Это значения по умолчанию
Затем нам придётся вводить много команд, и иногда долго ждать. Сначала обновим систему.
sudo apt-get update
sudo apt-get upgrade
Этот шаг вроде не обязателен, ведь по умолчанию NPM и NodeJS не установлен, но я на всякий случай выполнил эти команды.
sudo apt --auto-remove purge npm
sudo apt --auto-remove purge nodejs
Затем устанавливаем актуальные версии этих пакетов.
sudo apt install nodejs
curl -L https://www.npmjs.com/install.sh | sudo sh
И проверяем версии.
node -v
npm -v
Устанавливаем Homebridge.
sudo apt-get install libavahi-compat-libdnssd-dev
sudo npm install -g --unsafe-perm homebridge
И тестово запускаем его.
homebridge
Прямо в консоли вы увидите работоспособность сервиса. Бридж уже можно добавлять в телефон, но не торопитесь.
Сначала нужно закончить все настройки, для этого создадим следующий файл.
sudo nano ~/.homebridge/config.json
Копируем в новый файл следующий текст. В поле username удалите последовательность XX: XX: XX: XX: XX: XX и введите свой MAC адрес. Проще всего его также подсмотреть в программе advanced IP scanner, которой мы смотрели адрес raspberry на первых шагах. PIN код я также поменял на свой, главное соблюдать последовательность тире.
{
"bridge": {
"name": "HomeBridge",
"username": "XX:XX:XX:XX:XX:XX",
"port": 51826,
"pin": "031-45-154"
},
"description": "Your description here",
"accessories": [
],
"platforms": [
]
}
Чтобы сохранить файл, нажмите CTRL + O, а затем CTRL + X для выхода. Или сразу CTRL + X и затем подтвердите сохранение кнопкой Y + enter. Тем временем нужно сделать ещё один файл.
sudo nano /etc/default/homebridge
Куда сохраняем следующий текст.
# Defaults / Configuration options for homebridge
# The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
HOMEBRIDGE_OPTS=-U /var/homebridge
# If you uncomment the following line, homebridge will log more
# You can display this via systemd’s journalctl: journalctl -f -u homebridge
# DEBUG=*
Эти и следующие действия мы делаем для автоматического запуска сервиса, при рестарте компьютера. Вы же не хотите запускать сервис вручную каждый раз, как выключат свет. Создаём третий файл.
sudo nano /etc/systemd/system/homebridge.service
Копируем текст и сохраняем файл.
[Unit]
Description=Node.js HomeKit Server
After=syslog.target network-online.target
[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
После этого нужно сделать следующую цепочку действий. Команд много, но ждать выполнения почти не придётся, этот блок не отнимет у вас много времени.
sudo useradd --system homebridge
sudo mkdir /var/homebridge
sudo cp ~/.homebridge/config.json /var/homebridge/
sudo cp -r ~/.homebridge/persist /var/homebridge
sudo chmod -R 0777 /var/homebridge
sudo systemctl daemon-reload
sudo systemctl enable homebridge
sudo systemctl start homebridge
Перезагружаем компьютер
sudo reboot
И проверяем статус сервиса – должно быть active и выделено зелёным.
systemctl status homebridge
Теперь уже можно добавить и в телефон. Не забудьте включить wi-fi и присоединиться к той-же сети. В программе ДОМ (HOME) нажимаем добавить аксессуар, у меня новый bridge высветился автоматически.
Вводим код, который мы создавали в файле (PIN) и соглашаемся, что устройство не сертифицировано и не безопасно.
Теперь во вкладке homebridge мы можем видеть наше устройство.
Осталось сделать последнюю деталь (по желанию) – установить графический интерфейс, который можно открыть по ip-адресу. Для этого установим UI-X для Homebridge.
sudo npm install -g --unsafe-perm homebridge-config-ui-x
Откроем файл
sudo nano /etc/sudoers
И в самый конец допишем следующую строку.
homebridge ALL=(ALL) NOPASSWD: ALL
Сохраняем и переходим к следующему файлу, с которым мы уже работали.
sudo nano /etc/default/homebridge
В конце строки HOMEBRIDGE_OPTS=-U /var/homebridge добавляем пробел и дописываем “-I”. Должно получиться так.
Ну и последний редактируемый файл
sudo nano /var/homebridge/config.json
В блок platforms вписываем следующий код. Должно получиться как на скриншоте.
{
"platform": "config",
"name": "Config",
"port": 8080,
"sudo": true,
"restart": "sudo -n systemctl restart homebridge",
"log": {
"method": "systemd",
"service": "homebridge"
}
}
Перезагружаем.
sudo reboot
Вспоминаем свой адрес и добавляем порт :8080.
http://192.168.1.2:8080
Видим интерфейс, где логин и пароль будет admin (можно поменять)
Приятный и понятный интерфейс. Кстати, работает на самой первой модели Raspberry! Даже процессор и память не нагружены по полной.
В следующих статья мы нагрузим бридж разными датчиками и протестируем работу более плотно.
Комментарии
Один комментарий на ««Установка Apple Homebridge на RaspberryPi»»
[…] Зайдём на наш одноплатный компьютер Raspberry PI, с установленным Homebridge (как это сделать, писали в прошлой статье). И через SSH установим следующий плагин, который позволяет выводить иконки температуры и влажности. […]