Jump to content

[HomeBridge] Подключение с роутера к девайсам в локальной сети


Recommended Posts

20 часов назад, Юлия сказал:

подскажите, пожалуйста,  ваше мнение.

Тут, к сожалению, ни чем помочь не могу, т.к. не пользуюсь ни тем, ни другим, поскольку отсутствует соотв. оборудование и под одно, и под другое + нет желания делать дом умнее себя )))

  • Upvote 1
Link to comment
Share on other sites

Поставил по инструкции. UI завелся. сам homebridge работает (как бы), но после скана qr мост не цепляет. В логах пусто. Пробовал и 5g и 3g сети роутера. Мб кто сталкивался?

Link to comment
Share on other sites

4 дня я пытался запустить Homebridge на Keenetic Hero 4G (KN-2310).

Мне удалось добавить Homebridge в HomeKit, по совету sc0rp1d:

В 12.01.2019 в 13:18, sc0rp1d сказал:

Я как раз позавчера начал настраивать Homebridge и столкнулся с тем же самым.

Проблема в том, что SRP шифрование очень требовательно к ресурсам, собственно поэтому все HomeKit устройства такие дорогие - там специальный алгоритм шифрования, который быстро работает на очень слабых устройствах.

Я смог обойти это место, переписал исходники, но там будет еще одно, которое обойти не удастся, поэтому сделал очень хитрый трюк.

SRP нужен только для первого раза - сопряжения iOS и Bridge. Берем запускаем Homebridge на компьютере, без платформ, с теме же настройками bridge, что и на роутере. Делаем сопряжение, а потом переносим папки persist и accessories с компьютера на роутер. Homebridge на компьютере нам больше не нужен, а iOS уже будет считать, что сделал пару с Homebridge на роутере.

Уточню порядок действий, для тех, кому как и мне его сообщение было не до конца понятным.
Заранее предупреждаю, в итоге у меня ничего не работает, из-за недостатка ресурсов моего роутера. Но вы можете сделать свою попытку.


Прежде всего вам нужно подготовить роутер по инструкции из базы знаний Keenetic.

Когда закончите с подготовкой роутера, подключайтесь к нему по SSH и устанавливайте пакеты:

opkg update
opkg upgrade
opkg install http://bin.entware.net/mipselsf-k3.4/test/node-js/node-pty-prebuilt-multiarch_0.10.1-pre.5-1_mipsel-3.4.ipk
opkg install http://bin.entware.net/mipselsf-k3.4/test/node-js/node-homebridge_1.5.0-2_mipsel-3.4.ipk
opkg install http://bin.entware.net/mipselsf-k3.4/test/node-js/node-bufferutil_4.0.6-1_mipsel-3.4.ipk
opkg install http://bin.entware.net/mipselsf-k3.4/test/node-js/node-utf-8-validate_5.0.9-1_mipsel-3.4.ipk
opkg install http://bin.entware.net/mipselsf-k3.4/test/node-js/node-homebridge-config-ui-x_4.50.1-2_mipsel-3.4.ipk

(В репозитории entware нет архива, через какое-то время они обновят версии файлов и ссылки могут быть недоступны. Найдите их пути по названию, просто открыв список файлов по ссылке)

После установки всех файлов, запускаем команду для автоматической конфигурации Homebridge-config-ui-x:

hb-service install --user root -U /opt/share/homebridge

Затем запускаете сам homebridge-config-ui-x (Он запускается и перезапускается о-о-очень долго, 2-3 минуты):

/opt/etc/init.d/S98homebridge restart

Проверьте что Homebridge-config-ui-x доступен через веб-интерфейс по адресу http://192.168.1.1:8581.
Больше никаких действий с роутером не делайте, на нём не получится добавить мост в HomeKit.

Устанавливаете Homebridge на ПК, инструкции есть на официальном сайте: homebridge.io
Если вы на Debian/Ubuntu, он у вас стартанёт после установки самостоятельно, подключайтесь к нему по адресу: http://127.0.0.1:8581
Добавляйте мост, (с помощью QR-кода Homebridge на компьютере), устанавливайте нужные плагины (для меня это был Yeelighter), добавляйте мосты для ваших плагинов, подключайте устройства в HomeKit до состояния полной работоспособности.

Затем, вам нужно перенести config.json и папки (accessories и persist) со всем их содержимым с ПК на роутер. Переносить node_modules не нужно
Вот список:

/var/lib/homebridge/config.json
/var/lib/homebridge/accessories/*
/var/lib/homebridge/persist/*

Таким образом вы перенесёте весь кэш подключений к мостам, ваш iPhone не заметит подмены.

Теперь вам нужно установить на роутере все те плагины, что вы устанавливали на ПК.

Далее, очень важно отредактировать config.json, добавив к нему элемент "mdns". Без этого Homebridge на роутере будет долбиться в не ту сеть и не сможет подключиться к устройствам локальной сети. В вашем config.json должно быть примерно следующее:

{
    //Это указывает homebridge правильный сетевой интерфейс
    "mdns": {
        "interface": "192.168.1.1"
    },
    //Остальные настройки будут отличаться, их изменять не нужно
    "bridge": {
        "name": "Homebridge 52E0",
        "username": "0E:28:13:36:52:E0",
        "port": 51064,
        "pin": "111-11-111",
        "advertiser": "bonjour-hap"
    },
    "accessories": [],
    "platforms": [
        {
            "name": "Config",
            "port": 8581,
            "auth": "form",
            "theme": "auto",
            "tempUnits": "c",
            "lang": "auto",
            //Это чтобы работало логирование homebridge-config-ui-x
            "log": {
                "method": "file",
                "path": "/opt/var/log/homebridge.log"
            },
            "platform": "config"
        },
        {
            "name": "Yeelighter",
            "timeout": 300000,
            "interval": 300000,
            "ctforcolor": true,
            "blocking": false,
            "split": false,
            "manual": [
                {
                    "ignorePower": false
                }
            ],
            "platform": "Yeelighter",
            "_bridge": {
                "username": "0E:F8:94:F1:1C:92",
                "port": 34836
            }
        }
    ]
}

И в общем-то это всё.
Чтобы у вас работало логирование, укажите Homebridge-config-ui-x где лежит лог-файл и как к нему обращаться (Это есть в коде выше, секция platforms[0]->log).

В итоге, к сожалению, я пришёл к выводу что мой Keenetic Hero 4G не вывозит эту задачу и лампа которую я пытался добавить с его помощью в HomeKit кажется не успевает ответить вовремя. Из-за этого в моём приложении "Дом" светильник то появляется, то "не отвечает", пользоваться я им не могу. Попытки увеличить тайм-аут и интервал опроса в конфигурации Homebridge не увенчались успехом. Надеюсь это сможет вам помочь, удачи! 🤞

P.S.
Я пытался организовать Homebridge на VDS, подключая сервер к роутеру по Wireguard. Мне удалось дать доступ VDS к локальной сети роутера, но к сожалению попытки добавить мост в HomeKit были не успешны. В обе стороны адреса пингуются и мне кажется что это какое-то ограничение HomeKit.

Вероятнее всего, самым лучшим решением будет купить Orange PI или Raspberry PI. Но я как и вы, хотел сэкономить деньги и задействовать уже существующие ресурсы.

Если кому-то удастся подключить Keenetic Hero 4G к Homebridge, дайте знать✌️

Edited by Nikita_Komissarov
  • Thanks 1
Link to comment
Share on other sites

27 минут назад, Nikita_Komissarov сказал:

(В репозитории entware нет архива, через какое-то время они обновят версии файлов и ссылки могут быть недоступны. Найдите их пути по названию, просто открыв список файлов по ссылке)

файлы индекса были добавлены...

Скрытый текст
~ # opkg list | grep ^node | cut -f-3 -d' '
node - v16.16.0-1
node-actions-on-google - 3.0.0-1
node-alexa-app - 4.2.3-4
node-arduino-firmata - 0.3.4-33
node-argon2 - 0.29.1-1
node-ask-sdk - 2.12.1-1
node-authenticate-pam - 1.0.5-1
node-autobahn - 20.9.2-4
node-aws-crt - 1.14.1-1
node-aws-iot-device-sdk - 2.2.12-1
node-aws-iot-device-sdk-v2 - 1.8.7-1
node-aws-sdk - 2.1167.0-1
node-azure-event-hubs - 5.8.0-1
node-azure-iot-device - 1.18.0-1
node-azure-iot-device-amqp - 1.14.0-1
node-azure-iot-device-http - 1.14.0-1
node-azure-iot-device-mqtt - 1.16.0-1
node-azure-iothub - 1.15.0-1
node-bcrypt - 5.0.1-2
node-bignum - 0.13.1-4
node-binaryjs - 0.2.1-14
node-bleacon - 0.5.1-11
node-bleno - 0.5.0-4
node-bluetooth-hci-socket - 0.5.3-4
node-browserify - 17.0.0-3
node-bufferutil - 4.0.6-1
node-classic-level - 1.2.0-1
node-clean-modules - 2.0.6-1
node-coap - 1.0.11-1
node-cpx - 1.5.0-12
node-cylon - 1.3.0-26
node-cylon-firmata - 0.24.0-26
node-cylon-gpio - 0.30.1-14
node-cylon-i2c - 0.26.1-26
node-deasync - 0.1.28-1
node-deasync-promise - 1.0.1-3
node-eddystone-beacon - 1.0.7-9
node-enocean-utils - 0.5.1-3
node-epoll - 4.0.1-2
node-exorcist - 2.0.0-2
node-expat - 2.4.0-2
node-express - 4.18.1-1
node-ffi-napi - 4.0.3-3
node-ffmpeg-for-homebridge - 0.1.4-1
node-firmata - 2.3.0-2
node-forever - 4.0.3-1
node-fuse-bindings - 2.12.4-3
node-gulp - 4.0.2-1
node-gyp - 9.1.0-1
node-hap-nodejs - 0.10.2-1
node-hashmap - 2.4.0-4
node-hid - 2.1.1-2
node-hid-stream - 1.1.0-3
node-homebridge - 1.5.0-2
node-homebridge-camera-ffmpeg - 3.1.4-1
node-homebridge-cmd4 - 6.3.0-1
node-homebridge-config-ui-x - 4.50.1-2
node-homebridge-z2m - 1.9.0-1
node-homekit2mqtt - 1.1.2-2
node-i2c-bus - 5.2.2-2
node-inspect - 2.0.0-4
node-javascript-obfuscator - 4.0.0-1
node-johnny-five - 2.1.0-1
node-jsonfile - 6.1.0-3
node-lambda - 1.0.0-1
node-level - 8.0.0-1
node-leveldown - 6.1.1-1
node-levelup - 5.1.1-1
node-logfmt - 1.3.2-3
node-lwm2m-node-lib - 1.4.0-1
node-mdns - 2.7.2-3
node-megahash - 1.0.5-2
node-mocha - 10.0.0-1
node-modbus-serial - 8.0.5-2
node-modclean - 3.0.0-beta.1-1
node-mqtt - 4.3.7-1
node-nconf - 0.12.0-1
node-net-ping - 1.2.3-4
node-noble - 1.9.1-4
node-noble-device - 1.4.1-2
node-npm - v16.16.0-1
node-npm-check-updates - 16.0.6-1
node-onoff - 6.0.3-2
node-openzwave-shared - 1.7.2-2
node-pi-spi - 1.2.1-4
node-pm2 - 5.2.0-1
node-pty - 0.10.1-2
node-pty-prebuilt-multiarch - 0.10.1-pre.5-1
node-red - 3.0.2-1
node-red-contrib-gpio - 0.51.0-3
node-red-contrib-homekit-bridged - 1.4.3-1
node-red-contrib-modbus - 5.23.1-1
node-red-dashboard - 3.1.7-1
node-red-node-arduino - 0.3.1-3
node-red-node-discovery - 0.0.23-1
node-red-node-serialport - 1.0.1-1
node-red-node-sqlite - 1.0.3-1
node-rimraf - 3.0.2-3
node-rpi-gpio - 2.1.7-3
node-rpio - 2.4.2-2
node-serialport - 10.4.0-1
node-serialport-bindings - 10.0.1-1
node-serialport-bindings-cpp - 10.7.0-1
node-serialport-list - 10.4.0-1
node-simple-xmpp - 2.3.1-2
node-sleep - 6.3.0-3
node-socket.io - 4.5.1-1
node-socket.io-client - 4.5.1-1
node-spi-device - 3.1.2-1
node-sqlite3 - 5.0.11-1
node-static - 0.7.11-4
node-statvfs - 2.2.1-1
node-system-sleep - 1.3.7-3
node-twilio - 3.81.0-1
node-typescript - 4.8.2-1
node-uglify-js - 3.17.0-1
node-usb - 2.5.1-1
node-utf-8-validate - 5.0.9-1
node-websocket - 1.0.34-2
node-ws - 8.8.1-1
node-yarn - 1.22.19-1
node-zigbee2mqtt - 1.27.2-1
~ # 

 

 

Link to comment
Share on other sites

Хочу уточнить в рамках развития этой темы, почему в интерфейсах Homebridge Debian/Ubuntu и пакета для Mipsel есть визуальные различия? При этом они отмечены одинаковой версией. Может ли это играть роль в работоспособности добавления моста на iPhone?

Я заметил разницу в том, что для пакета Debian/Ubuntu в основном меню веб-интерфейса есть раздел "Аксессуары", а в настройках дополнительные параметры запуска Homebridge в режиме отладки. Может ли быть так, что пакет Mipsel собран из исходников более поздней (< 1.5.0) версии Homebridge и отмечен как 1.5.0?

Я решил что это может влиять на работоспособность добавления моста в iPhone, так как эта процедура, в моём порядке действий, предусматривала перенос кэшей с версии ПК на версию роутера. Если они действительно различаются, это может быть причиной проблемы.

Скриншоты Homebridge версии 1.5.0 из официального репозитория Debian/Ubuntu:

Цитата

image.thumb.png.85bcd98e866fe663c3ca94447ba0c567.pngimage.thumb.png.487b0c63e2818e07de76c7d980ed3dd9.png

 

Скриншоты из веб-интерфейса текущей версии (1.5.0) пакета Mipsel не прилагаю, т.к. у меня нет времени устанавливать его ещё раз на Keenetic. Но вы можете поверить мне на слово, сейчас выглядит он также, как на скриншотах от пользователя TheBB:

Цитата

screen_2021-04-14_17:38:30_hb.png


Сейчас у меня развёрнут Homebridge на компьютере, но я всё ещё надеюсь на то, что мой Keenetic в состоянии выполнять эти функции. Пожалуйста, проверьте это. Если действительно допущена ошибка, я попробую установить его ещё раз и обещаю вернуться с обратной связью

Edited by Nikita_Komissarov
Link to comment
Share on other sites

В 25.09.2022 в 05:37, Nikita_Komissarov сказал:

Хочу уточнить в рамках развития этой темы, почему в интерфейсах Homebridge Debian/Ubuntu и пакета для Mipsel есть визуальные различия?

Разное пользовательское окружение (сравните вывод `env && set` на ПК и на Кинетике); в Entware нет "systemd" как на "взрослых" системах GNU/Linux; пути к бинарникам (/opt/bin:/opt/sbin:...)...

Link to comment
Share on other sites

1 минуту назад, TheBB сказал:

Разное пользовательское окружение (сравните вывод `env && set` на ПК и на Кинетике); в Entware нет "systemd" как на "взрослых" системах GNU/Linux; пути к бинарникам (/opt/bin:/opt/sbin:...)...

Понятно, спасибо. Эта вероятность была бы слишком простым решением проблемы 😒

Link to comment
Share on other sites

systemd - https://github.com/oznu/homebridge-config-ui-x/blob/master/src/bin/platforms/linux.ts#L92 (и много где ещё) )))

path_to_bin - https://github.com/oznu/homebridge-config-ui-x/blob/master/src/bin/platforms/linux.ts#L192 (тоже полно) )))

systemd+avahi - https://github.com/oznu/homebridge-config-ui-x/blob/master/src/bin/hb-service.ts#L934

продолжать можно долго...

Или, чтоб получить такую картитку (ОС Entware):

Скрытый текст

screen_2022-09-27_13:48:56-hb.png

нужно "ковырять" зависимость https://github.com/oznu/homebridge-config-ui-x/blob/master/package.json#L84 руками (или "выпиливать" и собирать отдельным пакетом), а в нём тоже пути править надо...

  • Upvote 1
Link to comment
Share on other sites

  • 2 months later...
В 24.09.2022 в 07:54, Nikita_Komissarov сказал:

устанавливайте пакеты:

opkg update
opkg upgrade
opkg install http://bin.entware.net/mipselsf-k3.4/test/node-js/node-pty-prebuilt-multiarch_0.10.1-pre.5-1_mipsel-3.4.ipk
opkg install http://bin.entware.net/mipselsf-k3.4/test/node-js/node-homebridge_1.5.0-2_mipsel-3.4.ipk
opkg install http://bin.entware.net/mipselsf-k3.4/test/node-js/node-bufferutil_4.0.6-1_mipsel-3.4.ipk
opkg install http://bin.entware.net/mipselsf-k3.4/test/node-js/node-utf-8-validate_5.0.9-1_mipsel-3.4.ipk
opkg install http://bin.entware.net/mipselsf-k3.4/test/node-js/node-homebridge-config-ui-x_4.50.1-2_mipsel-3.4.ipk

(В репозитории entware нет архива, через какое-то время они обновят версии файлов и ссылки могут быть недоступны. Найдите их пути по названию, просто открыв список файлов по ссылке)

После установки всех файлов, запускаем команду для автоматической конфигурации Homebridge-config-ui-x:

hb-service install --user root -U /opt/share/homebridge

Затем запускаете сам homebridge-config-ui-x (Он запускается и перезапускается о-о-очень долго, 2-3 минуты):

/opt/etc/init.d/S98homebridge restart

Проверьте что Homebridge-config-ui-x доступен через веб-интерфейс по адресу http://192.168.1.1:8581.

на 2610 сделал по инструкции, все запустилось ... через веб-интерфейс запустил обновление - все пропало ... 

/opt/etc/init.d/S98homebridge restart тоже не помогает ... повторил на 1010 - тот же результат ... ЧЯДНТ ?
Link to comment
Share on other sites

В 08.12.2022 в 11:12, Sergey Artamonov сказал:

на 2610 сделал по инструкции, все запустилось ... через веб-интерфейс запустил обновление - все пропало ... 

/opt/etc/init.d/S98homebridge restart тоже не помогает ... повторил на 1010 - тот же результат ... ЧЯДНТ ?

снес все через opkg remove, установил снова - запустилось в версии 1.6, актуальная версия. обновлений не требуется ... чудеса ...

Link to comment
Share on other sites

  • 1 year later...
  • 1 month later...

Долго ковырялся чтобы завести на роутере с mipsel (искренне завидую владельцам роутеров на aarch64) и наконец получилось - но под Debian. Последняя версия, но с нюансом - без сетевой морды (ее поставить реально, но я пока не осилил), то есть настраивать только вручную через config.json (ну или поднять Homebridge на каком-то другом устройстве и подтянуть впоследствии уже правильно оформленный config.json оттуда).

Гайд для тех кто захочет повторить: устанавливаем Debian по инструкции отсюда, далее все обновляем и устанавливаем Node.js:

apt update
apt install dialog apt-utils
apt install --reinstall dialog apt-utils
apt upgrade
apt install npm

Далее устанавливаем сам Homebridge:

npm install -g --unsafe-perm homebridge

Требуемые плагины устанавливаются точно так же:

npm install -g --unsafe-perm homebridge-tuya-local

Базовый config.json кладем в /var/homebridge:

{
	"mdns": {
		"interface": "192.168.1.1"
	},
	"bridge": {
		"name": "Homebridge",
		"username": "0E:7A:27:7A:21:09",
		"port": 51997,
		"pin": "681-93-982",
		"advertiser": "bonjour-hap"
	},
	"accessories": [],
	"platforms": []
}

Теперь /etc/init.d/homebridge:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          Homebridge
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

dir="/var/homebridge"
cmd="/usr/local/bin/homebridge -U /var/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 -p `get_pid` > /dev/null 2>&1
}

case "$1" in
    start)
    if is_running; then
        echo "Already started"
    else
        echo "Starting $name"
        cd "$dir"
        $cmd >> "$stdout_log" 2>> "$stderr_log" &
        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 2 3 4 5 6 7 8 9 10
        # for i in `seq 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

exit 0

Теперь запускаем службу:

chmod 755 /etc/init.d/homebridge
update-rc.d homebridge defaults
service homebridge start

Подключиться к Homebridge можно либо по QR-коду из /var/log/homebridge.log, либо по коду из config.json. Чтобы Homebridge запускался вместе с роутером можно добавить службу в /chroot-services.list. Немного потестировал и пока что все работает замечательно - мост добавляется в приложение Дом, свет включается-выключается.

Edited by Ferbez
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...