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.
102 lines
5.6 KiB
Markdown
102 lines
5.6 KiB
Markdown
# Подключение 1-Wire датчиков
|
||
|
||
> Источник: Wiki LightHub (lazyhome.ru), страница «подключение_1-wire_датчиков». Снапшот от 2026-10-02.
|
||
|
||
## Подключение к контроллеру
|
||
|
||
Подключение производится к клеммам:
|
||
|
||
- X5 - +5В
|
||
- X4 - GND
|
||
- X3 - 1wire
|
||
|
||
(см. иллюстрацию на [wiki-странице](https://www.lazyhome.ru/dokuwiki/doku.php?id=подключение_1-wire_датчиков), файл 1wire.png)
|
||
|
||
На рисунке снизу вверх черными точками: 5B, gnd, 1wire.
|
||
|
||
## Конфигурация контроллера
|
||
|
||
Дополнительная информация по настройке приведена тут [конфигурирование: что такое execobj](https://www.lazyhome.ru/dokuwiki/doku.php?id=конфигурирование#что_такое_execobj)
|
||
|
||
В корне прописываем:
|
||
|
||
```json
|
||
"ow":{
|
||
|
||
"АДРЕС_ДАТЧИКА":{"emit":"Temperature01"}
|
||
},
|
||
```
|
||
|
||
АДРЕС_ДАТЧИКА в виде: 282DA307D6013C08
|
||
|
||
## MQTT
|
||
|
||
Подписываемся на топик "myhome/s_out/Temperature01" и получаем значения температуры.
|
||
|
||
## Простой релейный термостат (теплый пол)
|
||
|
||
добавляем
|
||
|
||
```json
|
||
"items":{
|
||
|
||
"local_termostat":[5,24,33]
|
||
}
|
||
```
|
||
|
||
5 - тип релейный термостат
|
||
24 - номер пина
|
||
33 - (опционально) - температура по-умолчанию
|
||
|
||
Добавляем связку между термометром и локальным термостатом
|
||
|
||
```json
|
||
"ow":{
|
||
|
||
"282DA307D6013C08":{"emit":"Temperature01", "item":"local_termostat/val"}
|
||
},
|
||
```
|
||
|
||
Настройка завершена
|
||
|
||
Суффикс /val при передаче температуры локальным обьектам можно не добавлять
|
||
|
||
Значение температуры, также, может быть принято с внешних систем или иных контроллеров по MQTT c использованием топика формата /myhome/controller-id/local_termostat/val
|
||
|
||
При отсутствии показаний в течение 10 мин термостат отключается и переходит в аварийный режим, выдавая аварию в топик /alarm
|
||
|
||
Термостат принимает значение температуры через суффикс /set
|
||
|
||
Через командный суффикс /cmd принимаются команды
|
||
|
||
- ON
|
||
- OFF
|
||
- AUTO
|
||
- HEAT
|
||
- HALT
|
||
- REST
|
||
- XON
|
||
- XOFF
|
||
|
||
Подробнее тут [работа с mqtt: команды, применимые для кондиционера и термостата](https://www.lazyhome.ru/dokuwiki/doku.php?id=работа_с_mqtt#команды_применимые_для_кондиционера_и_термостата)
|
||
|
||
## Поиск устройств на шине
|
||
|
||
Начиная с v4.3 автоматическое периодическое сканирование шины 1-wire отменено. Датчики опрашиваются последовательно, согласно настройкам в разделе ow
|
||
|
||
Чтобы просканировать шину и узнать адреса вновь подключенных устройств, можно выдать команду search в [CLI интерфейс](../core/cli_interface.md)
|
||
|
||
Результаты сканирования будут выданы в лог
|
||
|
||
## Сверка с кодом (2026-10-02)
|
||
|
||
Сверено с `lighthub/owTerm.cpp`, `lighthub/owTerm.h`, `lighthub/main.cpp`.
|
||
|
||
- Раздел `"ow"` в корне конфигурации подтвержден: `owArr = aJson.getObjectItem(root, "ow")` (main.cpp:1491).
|
||
- Формат записи — имя датчика (16-значный шестнадцатеричный адрес, например `282DA307D6013C08`) → execobj с действиями: в коде имя объекта используется как адрес (`SetBytes(dev, 8, addrstr)`, `SetAddr`, owTerm.cpp:102-104, 196), объект передается в `executeCommand` (owTerm.cpp:69), т.е. `emit`/`item` поддерживаются.
|
||
- Передача значения — через суффикс `/val` (`itemCmd(currentTemp).setSuffix(S_VAL)`, owTerm.cpp:69), что согласуется с wiki (суффикс можно не добавлять — он подставляется сам).
|
||
- Автоматическое периодическое сканирование шины действительно отменено: `owUpdate()` (сканирование) вызывается только из `owSearch()`, который привязан к CLI-команде `search` (main.cpp:2875, owTerm.cpp:39-42); в цикле `sensors_loop` периодический вызов закомментирован (owTerm.cpp:259).
|
||
- Результаты сканирования выводятся в лог (`infoSerial`, owTerm.cpp:96-114) — подтверждено.
|
||
- Опрашиваются последовательно только датчики из раздела `ow` (обход `owArr` в `sensors_loop`, owTerm.cpp:256-288) — подтверждено.
|
||
- Пин шины задается опцией компиляции `USE_1W_PIN` (owTerm.cpp:134); возможно также использование моста DS2482-100 по I2C (`DS2482_100_I2C_TO_1W_BRIDGE`) — в wiki не описано.
|