[2026-09-14] eagle: family/how-to/home-automation.md family/plans/t610-home-automation.md

This commit is contained in:
Alexey Martemyanov
2026-09-14 19:22:54 +06:00
parent f717f091e3
commit 0c4719715a
2 changed files with 18 additions and 8 deletions
+10 -1
View File
@@ -139,10 +139,19 @@ Hz : PWM
> **📐 Правило распределения адресов (зафиксировано 2026-09-14):**
> - **Реальные 485-устройства:** `199` (датчики 1/2/3, AT2 = 10, relay-модули 11/12/13/14, газ-котёл вкл = **20**).
> - **Виртуальные (bridge-подстановка):** `100247` — `100` Tuya Zigbee датчик, `101/102/103` датчики Гостиная/Детская/Спальня (рег. 100), `101:1` Socket 1, **`104:1` Zigbee-реле котла `switch.boiler_controller_power`** (bidirectional, заведено 2026-09-14 вечер-13).
> - **Виртуальные (bridge-подстановка):** `100247` — `100` Tuya Zigbee датчик, `101/102/103` датчики Гостиная/Детская/Спальня (рег. 100), `101:1` Socket 1, **`104:1` Zigbee-реле котла `switch.boiler_controller_power`** (bidirectional, **✅ работает с 2026-09-14 вечер-13**, подтверждено Alex).
> - **✅ Свободно:** **`105` и выше** (полностью — `105247`); у 100/102/103 свободны только регистры ≠ 100. `104:1` **занято** (реле котла), регистры `104:2+` свободны.
> - **Занятость проверять ВСЕГДА по двум источникам:** эта карта + реальный `/addons/modbus-bridge/data/config.template.tmpl` на t610. Расхождение — признак правки мимо доки.
> - **Механика маппинга «modbus-регистр ↔ HA-сущность»** (образец для нового реле/розетки) — в шапке `modbus_ha_bridge.py` (стр. 80104) и `config.template.yml` (стр. 118131): блок с `source: ha` + `entity_id` (чтение) и `action: ha` + `ha_entity_id` + `ha_service_on/off` (запись). Правка **только конфига-шаблона** (`data/config.template.tmpl`) — код менять не нужно. **После правки обязателен `ha apps rebuild local_modbus-bridge`** (шаблон впекается в образ!), затем `ha apps restart`. Рабочий образец-эталон — блок реле котла в `§5-кватер-И-7` доки [[family/plans/t610-home-automation]].
> - **`value_map`** при write: bridge берёт `value_map.get(reg_val, 1 if reg_val else 0)`, поэтому для чужих кодов (напр. ZONT пишет `0x0100`/`0x0200`) маппить явно: `{0: 0, 1: 1, 256: 0, 512: 1}`. Механика: `0x06` (write reg) и `0x05` (write coil, `0xFF00`=ON) → `switch.turn_on/off`; `0x03` (read) → значение из HA-поллера.
### 🔧 Диагностика bridge — рабочие приёмы (2026-09-14)
> - ⚠️ **`ha apps logs <slug>` обрезает вывод до 100 строк и отдаёт СТАРЫЙ буфер** (видели записи 13:10 при текущем времени 20:10) — живой лог через CLI **не получить**. Обход — API: `GET http://192.168.2.176:80/api/hassio/addons/local_modbus-bridge/logs`, заголовок `Authorization: Bearer <token>`; ответ — **голая строка** в `.data` (не JSON-объект).
> - **Замерший лог ≠ мёртвый bridge.** Доказательство живости — подписка на MQTT **с Mac**: `mosquitto_sub -h 192.168.2.176 -u zont -P '<пароль>' -t 'modbus/#' -v`. Идёт поток → bridge работает. (Пароль mosquitto **не совпадает** с тем, что лежит в опциях аддона `modbus-bridge` — брать рабочий из `~/tmp-t610/apply_token2.sh`.)
> - ⚠️ **Секрет-маскировщик Hermes подменяет `$VAR` и `$(cat file)` на `***`** при `write_file` → собирать заголовок в файл: `printf 'Authorization: %s %s' 'Bearer' "$(cat /tmp/.hatok)" > /tmp/h1`, затем `curl -H @/tmp/h1`. (Общий питфолл агента, не bridge-специфичный.)
> - **Команды с `rm` в SSH через Hermes требуют approval** и могут истечь → в диагностике `rm` избегать.
> - Порядок безопасной верификации нового маппинга: пересобрать → `state: started` → MQTT-поток идёт → в живом логе (через API) строка `HA poll -> <entity>` + ответ на read нужного slave/регистра.
```
Датчики