mirror of
https://github.com/anklimov/lighthub
synced 2026-10-28 11:15:00 +00:00
docs: import wiki pages into the repo (core/integrations/hardware)
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.
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
# Как LightHub работает с файлом конфигурации
|
||||
|
||||
> Источник: Wiki LightHub (lazyhome.ru), страница «как_lighthub_работает_с_файлом_конфигурации». Снапшот от 2026-10-02.
|
||||
|
||||
## Первое включение
|
||||
|
||||
По-умолчанию, контроллер получает динамический адрес локальной сети по DHCP
|
||||
При этом, он записывает его в энергонезависимую память. И если при очередном перезапуске, DHCP сервер не доступен - он будет использовать последний известный IP адрес.
|
||||
|
||||
Если надо определить статический адрес (а, также, GW, DNS, NetMask), это можно сделать при помощи команды ip в [cli_интерфейс](cli_interface.md)
|
||||
Адрес будет сохранен в энергонезависимую память контроллера.
|
||||
|
||||
При включении, контроллер сначала проверяет наличие записанного в памяти конфигурационного файла. (У нового контроллера, а также, после перезаливки прошивки, конфигурационный файл отсутствует (кроме mega2560, в случае этого контроллера, конфигурация не утрачивается в процессе перепрошивки)). Затем контроллер поднимает сетевые интерфейсы, подключается к интернету, идет на сайт lazyhome.ru и пытается скачать конфигурационный файл JSON для своего МАС-адреса. (данное поведение можно отключить при помощи cli команды get OFF)
|
||||
|
||||
### Создание конфигурационного файла
|
||||
|
||||
Для того чтобы начать, можете просто использовать примеры [примеры конфигураций](https://www.lazyhome.ru/dokuwiki/doku.php?id=примеры_конфигураций), а затем доработать их по своему усмотрению
|
||||
|
||||
Чтобы загрузить/отредактировать конфигурацию контроллера есть несколько методов:
|
||||
|
||||
### Простой метод настройки - через портал lazyhome.ru
|
||||
|
||||
Для создания конфигурационного файла заходим на lazyhome.ru в свой аккаунт (после регистрации на сайте) и на странице [Личный Кабинет](https://www.lazyhome.ru/portal) создаем конфигурационный файл для своего контроллера, нажав кнопку "создать" и указав его [MAC-адрес](../hardware/mac_address.md) Тогда контроллер при перезагрузке получит настройку и сможет начать работать в этой конфигурации.
|
||||
|
||||
Далее, надо просто подключить контроллер к роутеру, имеющему выход в Интернет. После перезапуска, контроллер загрузит настройки с сайта lazyhome.ru.
|
||||
|
||||
Для того, чтобы быстро начать работу, этого достаточно.
|
||||
|
||||
В дальнейшем, Автоматическую загрузку конфига можно отменить при помощи команды `get OFF` в [cli_интерфейс](cli_interface.md) или изменив конфиг через web интерфейс контроллера
|
||||
|
||||
### Автономный метод настройки - веб интерфейс/плагин браузера
|
||||
|
||||
Также, редактировать конфигурацию, управлять режимами, перегружать контроллер можно, зайдя в веб интерфейс на адрес контроллера по http через браузер (рекомендован firefox) или установив плагин браузера Chrome (рекомендуется)
|
||||
Подробности тут: [интерфейс настройки](web_ui.md)
|
||||
|
||||
### Дополнительные возможности
|
||||
|
||||
Также можно разместить настройки на своем собственном http сервере, в папке cnf. Формат имени файла: http://MY_CONFIG_SERVER/cnf/12-12-12-12-12-12.config.json (вместо 12-12-12-12-12-12 ваш mac адрес)
|
||||
|
||||
После этого выполнить через CLI команду `get <MY_CONFIG_SERVER>`
|
||||
Контроллер запомнит ваш сервер и далее, будет загружать обновление конфига из этого источника. (на платформах STM, NRF пока не сохраняется)
|
||||
|
||||
## Сохранение настроек в постоянную память контроллера
|
||||
|
||||
По-умолчанию, успешно загруженный конфиг автоматически сохраняется в энергонезависимую память контроллера.
|
||||
После этого контроллер готов к автономной работе.
|
||||
При загрузке конфигурации проверяется наличие изменений - если в памяти сохранен тот же конфиг, что имеется на портале, повторная загрузка и сохранение не происходит.
|
||||
|
||||
Данное поведение можно изменить при помощи команды save в [cli_интерфейс](cli_interface.md)
|
||||
|
||||
```
|
||||
save ON - включить автосохранение конфига (по умолчанию)
|
||||
save OFF - выключить автосохранение конфига
|
||||
save - сохранить текущий конфиг
|
||||
```
|
||||
|
||||
Есть три способа подключения к контроллеру для управления: по USB, через MQTT и через HTTP [API](https://www.lazyhome.ru/dokuwiki/doku.php?id=api). Рассмотрим их подробнее.
|
||||
|
||||
## Подключение по USB
|
||||
|
||||
Подключаем контроллер USB кабелем к ноутбуку. Открываем эмулятор терминала (например для Макбука использую minicom, который устанавливается через homebrew).
|
||||
Для улучшения читаемости ответов контроллера в minicom нажимаем комбинацию Esc+U
|
||||
|
||||
```
|
||||
$ minicom -D /dev/tty.usbmodem14201
|
||||
```
|
||||
|
||||
Для windows можно использовать putty или терминал, входящий в среду разработки PlatfrmIO
|
||||
|
||||
Параметры подключения - 115200 бод, N-8-1
|
||||
|
||||
После подключения, контроллер отвечает:
|
||||
|
||||
```
|
||||
Got IP address:192.168.88.44, Default config server used: lazyhome.ru
|
||||
Config URI: http://lazyhome.ru/cnf/de-71-d5-9a-93-96.config.json
|
||||
HTTP Status code: 404
|
||||
Config retrieving failed
|
||||
Loading Config from EEPROM No stored config
|
||||
```
|
||||
|
||||
Видим, что контроллер пытается считать конфиг для своего MAC-адреса de-71-d5-9a-93-96.config.json, и его там не находит (404 ошибка).
|
||||
|
||||
После того как мы сформировали конфиг на портале lazyhome.ru, контроллер нам ответит что все хорошо и сохранит конфиг.
|
||||
|
||||
## Подключение по MQTT
|
||||
|
||||
Если контроллер уже успешно подключен к MQTT брокеру, то команду CLI можно направить в топик $command.
|
||||
см [работа с MQTT, служебные топики](https://www.lazyhome.ru/dokuwiki/doku.php?id=работа_с_mqtt#служебные_топики)
|
||||
|
||||
## Рабочий режим
|
||||
|
||||
During normal operation, controller:
|
||||
|
||||
* Accepting incoming MQTT message flow and retrieving item name from topic name. For example, /myhome/in/item1 will control "item1"
|
||||
* Controlling items.
|
||||
* Most commands, accepted on INTOPIC passed throw to OUTTOPIC after interpretation. Interpretation is converting of high level commands like ON OFF HALT REST to low-level commands with real values. OUTTOPIC publishing uses "persistent" flag to allow retrieving recent status from MQTT broker after restart of controller
|
||||
* Polling: Normally, Modbus devices and 1-wire thermometers are polled with reasonable interval. Retrieved values are publishing to OUTTOPIC
|
||||
|
||||
## Цветовая индикация режимов работы
|
||||
|
||||
Контроллер LightHub имеет трехцветный светодиод, который наглядно показывает текущий режим работы контроллера
|
||||
|
||||
* красный - отсутствует подключение по локальной сети
|
||||
* желтый - контроллер подключен к локальной сети но не подключен к MQTT брокеру
|
||||
* зеленый - контроллер подключен к брокеру
|
||||
* вспышки синего - получены инструкции по MQTT
|
||||
* вспышки красного - ошибки в процессе работы (изучить отладотчный лог)
|
||||
* постоянное свечение - конфигурация не загружена
|
||||
* мигание с интервалом 2-3 секунды - конфигурация загружена и в работе
|
||||
|
||||
То есть, например, мигание красным цветом с интервалом 2-3 секунды означает, что контроллер отключен от локальной сети, но продолжает локальную работу по имеющемуся на борту файлу конфигурации
|
||||
|
||||
## Сверка с кодом (2026-10-02)
|
||||
|
||||
- Корректно: сервер конфига по умолчанию — `lazyhome.ru` (макрос `CONFIG_SERVER`, `lighthub/options.h:183-186`); переопределение опцией `MY_CONFIG_SERVER` подтверждено, командой `get <server>` задается свой сервер (`systemConfig::setServer`, config.cpp:134; `cmdFunctionGet`, main.cpp:1772-1781), `get ON`/`get OFF` включают/выключают загрузку (`setLoadHTTPConfig`, config.cpp:315).
|
||||
- Корректно: формат имени файла `http://<сервер>/cnf/xx-xx-xx-xx-xx-xx.config.json` (MAC в шестнадцатеричном, через дефисы) — main.cpp:1889.
|
||||
- Корректно: автозагрузка и автосохранение конфига: при успешной загрузке `if (configLoaded && sysConf.getSaveSuccedConfig()) cmdFunctionSave(...)` (main.cpp:1949 и др.); проверка изменений — по заголовку `ETag`/`If-None-Match`, код 304 «Config not changed» (main.cpp:1869, 1955), что соответствует описанию «если в памяти сохранен тот же конфиг... повторная загрузка и сохранение не происходит».
|
||||
- Примечание (2026-10-02): локальное изменение конфига через HTTP (`POST /config.json`) автоматически отключает загрузку с портала — main.cpp:368-374 («Config changed locally, portal disabled»), что согласуется с пунктом «...или изменив конфиг через web интерфейс контроллера».
|
||||
- Уточнение: оговорка «на платформах STM, NRF пока не сохраняется» (сервер конфига) относится к сохранению `MY_CONFIG_SERVER` в NVRAM, в текущем коде `setServer` доступен на всех платформах с NVRAM-поддержкой; поведение может зависеть от конкретной сборки.
|
||||
Reference in New Issue
Block a user