установка homebridge на raspberry pi

Установка Apple Homebridge на RaspberryPi

В одной из прошлых статей мы сделали устройство на базе ESP8266, которым можно управлять с устройств Apple, с помощью приложения “Дом”. Официально поддерживаемых устройств очень мало, а сторонние легко подключать с помощью HomeBridge, который можно сделать на одноплатном компьютере, например Raspberry Pi. Кстати, в качестве испытуемого я взял самый первый старинный экземпляр c 512мб ОЗУ – по идее, нам же много мощности не надо. Все примеры сделаны для 3 версии компьютера и до последнего я сомневался, заведётся ли это ПО. А что вообще такое HomeBridge? – это сервер, написанный на NodeJS, который эмулирует API HomeKit и позволяет подключать к умному дому Apple не сертифицированные устройства (т.е. всё будет намного дешевле).

Я перепробовал несколько инструкций с рунета, но все они либо старые, либо упускают какие-то шаги. Быстрая установка из 4 команд с гитхаб у меня также не заработала, и я пошёл по длинному пути зарубежного сайта .instructables.com (в итоге рабочему). Сначала нужно скачать образ системы для компьютера. Я выбрал самый минимальный, ведь для homebridge совсем не нужно иметь графический интерфейс системы или подключать монитор. Ссылка на образ

Образ raspbian для homebridge

Перед тем, как что-то записывать на флешку, лучше её отформатировать программой SD Formatter. Например, если флеш-карта уже была загрузочной, то средства windows её отформатировать не смогут.

форматирование перед записью образа

Дальше понадобится программа для создания образов на флешку. Я обычно использую UNETBOOTIN, но также пробовал ETCHER Установки не требует, весит немного, пользоваться просто – указываете образ, имя sd-карты, и нажимаете “ок”.

unetbottin образ raspbian на флеш карту

Etcher конечно выглядит по современнее, но смысл один.

Смотрите также:  Подключение дисплея ili9341 к ESP8266. Вывод JPG картинки
etcher закачиваем образ на загрузочную флешку

Как вы помните, я скачал минимальную версию без десктопа, да и монитор мне подключать лень. К сожалению, поддержка SSH в последних версиях была выпилена, но её несложно добавить обратно. Пока карточка с образом ещё в компьютере, создайте в корне файл без расширения с именем “SSH”. Система при загрузке в одноплатном компьютере сама поймёт, что надо включить SSH и удалит этот файл.

SSH на raspberry pi без монитора

Теперь загружаем 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
Версии пакетов npm и json для установки homebridge

Устанавливаем Homebridge.

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

И тестово запускаем его.

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=*

Эти и следующие действия мы делаем для автоматического запуска сервиса, при рестарте компьютера. Вы же не хотите запускать сервис вручную каждый раз, как выключат свет. Создаём третий файл.

Смотрите также:  Демо плата на AVR и глаза робота

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 высветился автоматически.

добавляем homebridge на iphone

Вводим код, который мы создавали в файле (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”. Должно получиться так.

Смотрите также:  i2c передача данных между двумя arduino. Передаём числа float и int

Ну и последний редактируемый файл

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! Даже процессор и память не нагружены по полной.

В следующих статья мы нагрузим бридж разными датчиками и протестируем работу более плотно.

1 комментарий к “Установка Apple Homebridge на RaspberryPi”

  1. Пингбэк: Влажность и температура через Homebridge (DHT-11)

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *