mirror of
https://github.com/anklimov/lighthub
synced 2026-10-28 11:15:00 +00:00
Ported the relevant lazyhome.ru dokuwiki pages to markdown, verified against the code; each page carries a 'cross-check with code' section where behavior differs from or extends the wiki.
89 lines
9.8 KiB
Markdown
89 lines
9.8 KiB
Markdown
# Интерфейс настройки контроллера
|
||
|
||
> Источник: Wiki LightHub (lazyhome.ru), страница «интерфейс_настройки». Снапшот от 2026-10-02.
|
||
|
||
### Интерфейс настройки контроллера
|
||
|
||
Постоянная память контроллера слишком мала, чтобы на ней можно было разместить полноценный интерфейс по его настройке.
|
||
Точнее, это можно сделать, но в ущерб функциональности, занимая ценную память и ресурсы для веб содержимого, совершенно бесполезного, когда контроллер уже настроен и просто работает
|
||
|
||
Поэтому Страница настройки изначально отсутствовала, вместо этого конфигурацию можно задавать через "портал" - https://lazyhome.ru/portal - Это описано тут [как LightHub работает с файлом конфигурации, простой метод настройки - через портал lazyhome.ru](config_file_workflow.md#простой-метод-настройки---через-портал-lazyhomeru)
|
||
|
||
Но это не единственный способ
|
||
После того, как у контроллера появился HTTP API, стало возможным использование браузера для настройки
|
||
|
||
Для настройки контроллера, можно обратиться на его адрес. Например
|
||
|
||
* http://192.168.1.55
|
||
* http://lighthub.local
|
||
|
||
контроллер отрабатывая этот запрос, подгрузит страницу управления с публичного ресурса, а уже она будет использовать [API](https://www.lazyhome.ru/dokuwiki/doku.php?id=api) контроллера в вашей локальной сети
|
||
|
||
* Первый недостаток - адрес надо знать и помнить
|
||
* Второй - зависимость от интернета и внешнего ресурса
|
||
* Главный недостаток: Начиная с последних версий браузера chrome данный способ перестал работать, так как google ужесточила требования к безопасности и запретила страницам, загруженным из интернета, обращаться к ресурсам локальной сети
|
||
|
||
Тем не менее, метод продолжает работать на браузере fireFox
|
||
|
||
Недавно я исследовал еще одну возможность сделать удобной настройку контроллеров в локальной сети - установив плагин для браузера chrome (для fireFox, также, это возможно)
|
||
|
||
## Плагин для браузера
|
||
|
||
Преимущества:
|
||
* Весь веб-контент лежит внутри плагина, в вашем браузере. Кроме того, что не требуется доступ в интернет, решается и вопрос безопасности - chrome позволяет браузеру использовать [API](https://www.lazyhome.ru/dokuwiki/doku.php?id=api) контроллера в локальной сети
|
||
* Появляется возможность поиска контроллеров в вашей локальной сети, так как в них давно реализован протокол MDNS
|
||
|
||
Недостаток тут только один - надо потратить 5 минут на установку этого плагина.
|
||
Так как браузер не имеет прав просканировать локальную сеть на предмет наличия контроллеров, плагин использует утилиту zeroconf_lookup которая была разработана в рамках открытого проекта https://github.com/railduino/zeroconf-lookup
|
||
|
||
На базе этого проекта, я сделал прототип плагина для конфигурирования контроллеров lighthub
|
||
https://github.com/anklimov/zeroconf-lighthub
|
||
|
||
Плагин состоит из двух частей:
|
||
* Собственно плагин браузера
|
||
* Утилита поиска zeroconf-lookup
|
||
|
||
### Скачивание проекта
|
||
|
||
Скачивание и разархивирование надо сделать перед началом всех последующих действий
|
||
|
||
- На странице проекта https://github.com/anklimov/zeroconf-lighthub скачиваем архив (нажать зеленую кнопку Code и выбрать download ZIP)
|
||
- Разархивируем в какую-либо папку, которую вы в дальнейшем не будете удалять (например \Users\youName\plugin)
|
||
- (если вы разработчик - вместо предыдущих двух пунктов, вы, конечно, предпочтете использовать утилиту git) `git clone https://github.com/anklimov/zeroconf-lighthub`
|
||
|
||
### Как установить плагин:
|
||
|
||
* Установить из магазина приложений Chrome (чуть позже выложу)
|
||
* Установить из папки, скачанной с ГитХаб в режиме разработчика. Это не сильно сложнее, но позволит дорабатывать плагин (очень надеюсь на то, что кто-то будет его дорабатывать, я не веб разработчик).
|
||
* Для этого открываем браузер chrome, в меню "расширения" выбираем "управление расширениями".
|
||
* Включаем переключатель "режим разработчика",
|
||
* нажимаем кнопку"Загрузить распакованное расширение".
|
||
* Выбираем папку __zeroconf-lighthub-master/Chrome__ в распакованном на предыдущем этапе архиве
|
||
* Расширение устанавливается, заглядываем на страницу его свойств и копируем идентификатор расширения (например gepnlbipogackhpjkojhkonkijdgpgji ) это нам пригодится чуть позже
|
||
|
||
### Как установить утилиту:
|
||
|
||
### Windows
|
||
|
||
- Переходите в каталог __zeroconf-lighthub-master\Windows_Go__
|
||
- Из командной строки запускаете - `zeroconf_lookup.exe -i -с gepnlbipogackhpjkojhkonkijdgpgji` (тут укажите ваш идентификатор расширения, скопированный на предыдущем этапе)
|
||
- После этого переносить данный файл с этого места или удалять папку нельзя
|
||
- Если ставили плагин из магазина приложений - можно при запуске не указывать идентификатор расширения. `zeroconf_lookup.exe -i`
|
||
|
||
### MacOS
|
||
|
||
то же самое, только выполнимый файл лежит в директории __zeroconf-lighthub/Apple_Go__
|
||
|
||
### Использование
|
||
|
||
Теперь все просто - нажимаем на иконку расширения - оно сканирует сеть и выдает перечень всех контроллеров онлайн в локальной сети (и не только контроллеров - любых устройств, которые заявляют о себе)
|
||
|
||
Для входа в настройки контроллера надо нажать Edit напротив него в списке
|
||
|
||
## Сверка с кодом (2026-10-02)
|
||
|
||
- Корректно: обращение по адресу контроллера (`http://<ip>` / `http://<имя>.local`) приводит к 301-редиректу на страницу управления с публичного ресурса: `httpHandler` в `lighthub/main.cpp:264-286` отвечает `Location: http://<REDIRECTION_URL>?mac=...&ip=...&port=...&name=...`. По умолчанию `REDIRECTION_URL` для esp32-wifi задан как `http://lazyhome.ru/pwa` (`build-flags/build_flags_esp32-wifi`), то есть «портал» подгружается с lazyhome.ru и дальше использует HTTP API контроллера.
|
||
- Корректно: MDNS-анонс контроллера реализован (`MDNS.addService("http", "tcp", OTA_PORT)`, main.cpp:650; на STM — `mdns.addServiceRecord`, main.cpp:1332), на этом основан поиск плагина через zeroconf_lookup.
|
||
- Корректно: веб-контент не размещается в памяти контроллера — в коде есть только HTTP API: `GET/POST /item/<имя>`, `GET /ram/[<имя>]`, `POST /command/<команда>` (подача CLI-команд по HTTP), `POST /config.json` (локальное изменение конфига отключает загрузку с портала, main.cpp:368-374).
|
||
- Примечание: ограничение Chrome на доступ внешних страниц к локальной сети — особенность браузеров, описана верно; рекомендация по fireFox/плагину актуальна.
|