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

This commit is contained in:
Alexey Martemyanov
2026-09-14 09:11:59 +06:00
parent cfa3a9f62e
commit d2022c6112
4 changed files with 61 additions and 13 deletions
@@ -19,14 +19,14 @@ related:
---
# Перенос домашней автоматизации на HP t610
> **Статус: В ПРОЦЕССЕ. Этап 1 (аддоны) ВЫПОЛНЕН. Этап 2 (USB + Zigbee + Modbus) — ✅ z2m РАБОТАЕТ (16 устройств), ✅ mbusd РАБОТАЕТ (порт 502), modbus-bridge собран и запущен (MQTT + sniffer OK; ⏳ ждёт корректный `ha_token`). Следующий шаг — Этап 3 (перенос HA-конфига + `.storage/`).**
> **Статус: В ПРОЦЕССЕ. Этап 1 ✅. Этап 2 ✅ ПОЛНОСТЬЮ ВЫПОЛНЕН (z2m — 16 устройств, mbusd порт 502, modbus-bridge — MQTT + HA-опрос, MQTT-интеграция в HA добавлена). Следующий шаг — Этап 3 (перенос HA-конфига + `.storage/`).**
> Цель: убрать всю домашнюю автоматизацию с TrueNAS (он перегружен — 17/21 ГБ RAM) на выделенный HP t610, с бэкапом конфигов на TrueNAS и в git.
>
> **Прогресс 2026-09-14 (вечер) — Modbus-сервисы переехали:**
> **Прогресс 2026-09-14 (вечер) — Этап 2 ЗАКРЫТ, Modbus-сервисы работают:**
> - ✅ **mbusd — local add-on `local_mbusd` РАБОТАЕТ.** База: готовый образ `3cky/mbusd:latest`. Порт **502 открыт**. Устройство: `/dev/serial/by-path/pci-0000:00:12.0-usb-0:4:1.0-port0` (CH340 #2, порт 4 → шина вентиляции AT2). Питфоллы сборки local add-ons — см. [[family/plans/t610-addons-deployment]] §«Local add-ons mbusd / modbus-bridge».
> - ✅ **modbus-bridge — local add-on `local_modbus-bridge` СОБРАН И ЗАПУЩЕН.** База `python:3.11-alpine`, `uart: true` + `host_network: true`. Устройство: by-path CH340 #1 (порт 3 → шина ZONT). **MQTT подключён, 13 discovery-сообщений опубликованы, sniffer работает.**
> - **Единственный незакрытый пункт Этапа 2:** HA-опрос даёт **HTTP 401** — первый токен оказался выпущен **другим инстансом HA** (`iss` ≠ `instance_id` t610). Нужен long-lived token, созданный на http://192.168.2.176. Как проверить — [[family/plans/t610-addons-deployment]] §«ПИТФОЛЛ: HA-токен с чужим iss».
> - ⏭️ Следующий шаг: вписать корректный `ha_token` → Этап 3 (перенос HA-конфига + `.storage/`).
> - ✅ **modbus-bridge — local add-on `local_modbus-bridge` РАБОТАЕТ (MQTT + HA-опрос).** База `python:3.11-alpine`, `uart: true` + `host_network: true`. Устройство: by-path CH340 #1 (порт 3 → шина ZONT). **MQTT подключён, 13 discovery-сообщений, HA-опрос возвращает значение.** Питфолл: `ha.url` обязан быть **`http://192.168.2.176:80`** (НЕ `supervisor/core` — тот требует `SUPERVISOR_TOKEN` и даёт 401 с пользовательским токеном).
> - **В HA добавлена MQTT-интеграция** (её НЕ БЫЛО → discovery-сообщения z2m/bridge не превращались в сущности, было всего 22 системные сущности). Стало **104 сущности (69 Zigbee)**. Рецепт — [[family/how-to/t610-access]] §«Добавление интеграции MQTT».
> - ⏭️ Следующий шаг: Этап 3 (перенос HA-конфига + `.storage/`).
>
> **Прогресс 2026-09-13 — 🎉 t610 запущен и в сети:**
@@ -59,7 +59,7 @@ related:
| Mosquitto (MQTT) | HA-аддон (`core_mosquitto`) | ✅ работает — 1883/1884 |
| Node-RED | HA-аддон (`a0d7b954_nodered`) | ✅ работает — 1880 |
| mbusd | HA local add-on (`local_mbusd`) | ✅ работает — RS-485 → TCP :502 (шина вентиляции AT2) |
| modbus-bridge | HA local add-on (`local_modbus-bridge`) | ✅ собран/запущен — снифф 485-датчиков + виртуальные slaves для ZONT; ⏳ ждёт `ha_token` |
| modbus-bridge | HA local add-on (`local_modbus-bridge`) | ✅ **работает — снифф 485-датчиков + виртуальные slaves для ZONT, MQTT + HA-опрос** |
| **Камера** | docker-контейнер | см. §8 — разобраться отдельно |
| ~~udev-скрипт tty-алиасов~~ | ~~нативный udev + systemd~~ | ❌ **ОТМЕНЁН** — на HA OS невозможен; привязка serial по `/dev/serial/by-path/...` через флаг аддона `uart: true` |
@@ -203,7 +203,7 @@ HA OS внутри использует host docker 29.6.2 (`ha docker info` п
2. **zigbee2mqtt** — USB-Zigbee by-id — ✅ аддон `45df7312_zigbee2mqtt`
3. **nodered** — порт 1880 — ✅ аддон `a0d7b954_nodered`
4. **mbusd** — порт 502, by-path CH340#2 (порт 4, шина AT2) — ✅ local add-on `local_mbusd`
5. **modbus-bridge** — by-path CH340#1 (порт 3, шина ZONT), `host_network` — ✅ local add-on `local_modbus-bridge` (⏳ ждёт `ha_token`)
5. **modbus-bridge** — by-path CH340#1 (порт 3, шина ZONT), `host_network` — ✅ local add-on `local_modbus-bridge` (**работает: MQTT + HA-опрос**; `ha.url` = `http://192.168.2.176:80`)
6. **камера** — см. §8
> 📌 **Фактически выполнено 2026-09-14** (детали, точные пути, питфоллы сборки local add-ons — в [[family/plans/t610-addons-deployment]]). Шаги 3–4 этого документа **заменены** тем планом; ниже оставлены как исторический черновик исходного подхода (docker-compose + udev), который **не применялся**.
@@ -368,7 +368,7 @@ system/start-modbus.sh # скрипт ожидания tty перед doc
- [x]**MQTT:** трафик z2m идёт (discovery-сообщения публикуются), логин `zont` работает
- [ ] **Modbus вентиляция:** HA видит AT2, заслонки переключаются (проверить физически!) — требует Этапа 3 (перенос HA-конфига)
- [ ] **ZONT:** датчики 485 (Dining/Kids/Bedroom) в ZONT **не «недоступные»**, температуры идут — требует `ha_token` в modbus-bridge + Этап 3
- [x]**modbus-bridge:** sniffer работает, MQTT подключён, **13 discovery-топиков** `modbus/sensors/*` опубликованы (⏳ HA-опрос 401 — ждёт корректный токен)
- [x]**modbus-bridge:** sniffer работает, MQTT подключён, **13 discovery-топиков** `modbus/sensors/*` опубликованы, **HA-опрос работает** (`ha.url` = `http://192.168.2.176:80`)
- [x]**mbusd:** порт 502 открыт, устройство на by-path CH340 #2 (порт 4)
- [ ] **Node-RED:** `http://192.168.2.176:1880` — flows загружены, creds на месте
- [ ] **ZONT MQTT:** ZONT шлёт данные на `t610:1883` (проверить подпиской) — требует перенаправления GPON-роутера
+3 -2
View File
@@ -165,15 +165,16 @@ z2m: Connected to MQTT server
```bash
SLUG="a0d7b954_nodered"
API="http://supervisor/addons/${SLUG}"
AUTH="Authorization: Bearer ${SUPERVISOR_TOKEN}"
AUTH=*** Bearer ${SUPERVISOR_TOKEN}"
curl -s -H "${AUTH}" "${API}/info" | jq '.data.options | .ssl = false' > /tmp/o.json
jq -n --slurpfile o /tmp/o.json '{options: $o[0]}' > /tmp/post.json
curl -s -X POST -H "${AUTH}" -H "Content-Type: application/json" -d @/tmp/post.json "${API}/options"
ha apps restart "$SLUG"
```
> ⚠️ Если строка `AUTH=` выглядит искажённой — это артефакт маскировки секретов при записи доки. В живом скрипте: `AUTH=*** Bearer ${SUPERVISOR_TOKEN}"`. Рабочие скрипты лежат на Mac в `~/tmp-t610/*.sh`.
Скрипты лежат локально: `~/tmp-t610/nr_set_ssl.sh`.
### Этап 2 — USB-устройства (все подключены 2026-09-14) 🟡 В РАБОТЕ
### Этап 2 — USB-устройства — ✅ ВЫПОЛНЕНО 2026-09-14
8. [x] Alex втыкает 3 USB в t610 — **ВЫПОЛНЕНО 2026-09-14**. Порты зафиксированы: CH340 #1 → USB1 порт 3, CH340 #2 → USB1 порт 4, Zigbee → USB3 порт 1. **Устройства из портов не вынимать!**
9. [x] Пути определены (`ls /dev/serial/by-id/`, `by-path`, sysfs) — подробная карта: [[family/how-to/t610-access]] §USB
10. [x] Карта составлена: ttyUSB0 = CH340 #1 (ZONT), ttyUSB1 = CH340 #2 (Vent), ttyACM0 = Zigbee