Homebridge-это легкий "мост" построен на NodeJS, который вы можете запустить в своей домашней сети, эмулирующий API iOS HomeKit. Он поддерживает плагины, которые являются модулями , которые обеспечивают базовый мост от HomeKit до различных сторонних API, предоставляемых производителями устройств "умный дом".
Поскольку Siri поддерживает устройства, добавленные через HomeKit, это означает, что с Homebridge вы можете попросить Siri управлять устройствами, которые вообще не поддерживают HomeKit. Например, используя только некоторые из доступных плагинов, вы можете сказать:
Сири, открой заднюю дверь. [на фото сверху]
Сири, открой дверь гаража.
Сири, включи кофеварку.
Сири, включи свет в гостиной.
Сири, Доброе утро!
Учитывая ценник на сертифицированные устройства от Яблочка, то возможность использовать очень много сторонних аксессуаров , да и просто самодельных - согласитесь весьма радует. Причем что бы запустить данный мост в вашей сети, нет необходимости устанавливать целый компьютер, а достаточно и одноплатного типа raspberry pi , причем запускается он даже на модификации zero стоимость которого на известном всем китайском сайте чуть более 1 т.р.
Есть даже нативная прошивка для ESP8266 и ESP32 , правда только в среде разработки RTOS, переводить в популярную нынче Arduino никто не будет, т.к. сообщество решило что, разработчик данного чипа в этом не заинтересован, а ценник на ESP32 уже сравним с одноплатным компьютером "апельсинка зеро", который способен на большее. Ну это так отступление.
Итак приступим:
Для запуска homebridge нам понадобится любой одноплатный компьютер с установленной ОС , в качестве "подопытного кролика ", я использовал Raspberi pi2 B с установленной официальной ОС 2018-11-13-raspbian-stretch-lite
Заходим по ssh через PuTTy (для Windows) или другой клиент на свой компьютер, авторизуемся.....
Первым делом обновимся.
можно обновить прошивку самой малинки
sudo rpi-update
и пакеты
sudo apt-get update
sudo apt-get upgrade
Идем пить чай, кофе процесс довольно долгий.
Если Вы используете образ системы raspbian-stretch-lite то смело пропустите следующий шаг, скорее всего у вас уже установлен git и C++ компилятор для других ОС :
sudo apt-get install git make
sudo apt-get install g++
проверьте версию установленного GCC командой g++ -v
У меня по умолчанию установлена
gcc version 6.3.0 20170516 (Raspbian 6.3.0-18+rpi1+deb9u1)
Если у Вас установлено несколько версий то необходимо сделать последнюю версией по умолчанию подробнее тут
Так как Homebridge публикуется через менеджер пакетов npm входящий в состав Node JS то проверяем установлен ли пакет Node JS и его версию
node --version
если выдало сообщение что команда не найдена, значит Node JS не установлен, или если версия ниже 4.3.2., то тоже необходимо установить версию не ниже 4.3.2 то произведем установку, если версия выше 4.3.2. то пропускаем следующий шаг.
Если вы используете новый Raspberry Pi с чипом ARMv7 или лучше, вы можете установить NodeJS, используя свой репозиторий apt-get. Следуйте инструкциям здесь .
Для просмотра версии выполните команду uname -a, получите сообщение примерно следующего типа Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux
Обратите внимание на текст armv7l который указывает, что следующий метод будет работать, можно использовать следующий пример:
su
cd
обязательно из под root либо ручками как бинарный архив
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
apt-get install nodejs
exit
в результате получим
pi@raspberrypi:~ $ node -v
v10.15.3
pi@raspberrypi:~ $ npm -v
6.4.1
почему 10 а не последний, у меня с 11 не заработали значительное количество плагинов.
обязательно установим пакет libavahi-compat-libdnssd-dev:
sudo apt-get install libavahi-compat-libdnssd-dev
sudo apt-get install avahi-daemon avahi-discover libnss-mdns libavahi-compat-libdnssd-dev
Установите Homebridge (Homebridge публикуется через NPM и должен быть установлен "глобально"). Указанный ниже способ нужно использовать только если не получиться обычным способом npm install -g homebridge
в случае возникновения ошибок пробуем следующее:
sudo npm set unsafe-perm=true
sudo npm install -g homebridge --allow-root
и на крайний случай :
sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
cd /usr/local/lib/node_modules/homebridge/
sudo npm install --unsafe-perm bignum
cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns
sudo node-gyp BUILDTYPE=Release rebuild
обратите внимание, что /usr / local/lib/ следует заменить на /usr/ lib / если вы установили узел с помощью метода apt-get выше или /opt/node/ lib / если вы использовали бинарный способ сборки.
проверяем :
homebridge
должно выдать следующее:
config.json (/home/pi/.homebridge/config.json) not found - говорит о том что конфигурационный файл не найден, а No plugins found. See the README for information on installing plugins - о том что нет установленных устройств.
Но это сейчас не важно, главное все заработало.
Теперь добавим homebridge в автозагрузку
Для этого создадим файл:
sudo nano /etc/init.d/homebridge
И впишем в него:
dir="/root"
cmd="DEBUG=* /usr/bin/homebridge"
user="root"
name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"
get_pid() {
cat "$pid_file"
}
is_running() {
[ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}
case "$1" in
start)
if is_running; then
echo "Already started"
else
echo "Starting $name"
cd "$dir"
if [ -z "$user" ]; then
sudo $cmd >> "$stdout_log" 2>> "$stderr_log" &
else
sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
fi
echo $! > "$pid_file"
if ! is_running; then
echo "Unable to start, see $stdout_log and $stderr_log"
exit 1
fi
fi
;;
stop)
if is_running; then
echo -n "Stopping $name.."
kill `get_pid`
for i in {1..10}
do
if ! is_running; then
break
fi
echo -n "."
sleep 1
done
echo
if is_running; then
echo "Not stopped; may still be shutting down or shutdown may have failed"
exit 1
else
echo "Stopped"
if [ -f "$pid_file" ]; then
rm "$pid_file"
fi
fi
else
echo "Not running"
fi
;;
restart)
$0 stop
if is_running; then
echo "Unable to stop, will not attempt to start"
exit 1
fi
$0 start
;;
status)
if is_running; then
echo "Running"
else
echo "Stopped"
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
Сохраним и выставим права доступа и зарегистрируем:
sudo chmod 755 /etc/init.d/homebridge
sudo update-rc.d homebridge defaults
Готово, теперь HomeBridge будет стартовать автоматически при включении Raspberry P
если все верно то
sudo /etc/init.d/homebridge start
будет исполнена.
Для просмотра запущенных журналов можно отслеживать журнал вывода или журнал ошибок:
tail -f /var/log/homebridge.log
tail -f /var/log/homebridge.err
теперь создадим конфигурационный файл
cd .homebridge
sudo nano config.json
и запишем в него пример из файла /usr/lib/node_modules/homebridge/config-sample.json
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-154"
}
}
сохраняем и выходим CTRL+0 CTRL+X
проверяем командой homebridge и в итоге надпись config.json (/home/pi/.homebridge/config.json) not found должна исчезнуть.
На этом пока все, в следующей статье я рассажу как добавить устройства и web интерфейс. До новых встреч.