[2026-09-14] eagle: family/how-to/home-automation.md family/how-to/truenas-infrastructure.md family/plans/t610-home-automation.md
This commit is contained in:
@@ -20,11 +20,13 @@ related:
|
||||
> **Статус на 2026-09-14:** домашняя автоматизация **перенесена на HP t610** (HA OS).
|
||||
> 📌 **Всё про миграцию** — хост, доступ, карта USB/гнёзд, аддоны, Zigbee, питфоллы, текущее состояние — **в единственном документе [[family/plans/t610-home-automation]]. НЕ дублировать сюда.**
|
||||
> 📌 **Этот документ — справочник по ЖЕЛЕЗУ:** AT2 (параметры/PWM), карта Slave ID, регистры заслонок/реле, ZONT relays. Оборудование и адреса Modbus при миграции не меняются.
|
||||
> **Текущее состояние:** `unavailable` в HA — **8** (было 44 → 10 → 8). Оставшиеся все известные: 7 — slave 10 (AT2 fans, блок закомментирован, задача снята) + 1 — `todo.shopping_list` (системная). Первопричина массового отвала была в **перепутанных гнёздах аддонов** (`mbusd`↔`modbus-bridge`) — исправлено обменом привязок; ещё 2 (`dining_summary`/`dining_air_summary`) ожили после фикса сборки кадров bridge.
|
||||
> **Текущее состояние:** `unavailable` в HA — **8** (было 44 → 10 → 8). Оставшиеся все известные: 7 — slave 10 (AT2 fans, блок закомментирован, задача снята Alex) + 1 — `todo.shopping_list` (системная). Первопричина массового отвала была в **перепутанных гнёздах аддонов** (`mbusd`↔`modbus-bridge`) — исправлено обменом привязок; ещё 2 (`dining_summary`/`dining_air_summary`) ожили после фикса сборки кадров bridge (коммит `3748feb`).
|
||||
> **Zigbee-реле котла заведено (вечер-13):** `switch.boiler_controller_power` → `slave 104, рег. 1` (bidirectional), ✅ подтверждено Alex. Детали — ниже (карта Slave ID) и [[family/plans/t610-home-automation]] §5-кватер-И-7.
|
||||
>
|
||||
> **📷 Камера — ⚠️ СХЕМУ МЕНЯЕМ (2026-09-14, вечер-10):** USB-вебка **Logitech `046d:0825`** (смотрит на счётчик воды BK-G4T) физически подключена к t610. Сейчас заведена в HA как **`camera.usb_camera`** (YAML `camera: platform: ffmpeg`, `input: /dev/video0`) — кадр JPEG 640×480, **НО** схема нестабильна: даёт **`Resource busy`** (устройство держит `stream_worker` HA Core) и **не даёт `unique_id`**. **🔴 РЕШЕНИЕ Alex: вернуть схему «как было на TrueNAS»** — там камера работала как **отдельный HTTP-MJPEG-сервис** (`cam.mallexxx.duckdns.org` → `192.168.2.197:8090`, т.е. `ustreamer`/`mjpg-streamer`), HA ходила к нему по URL. Контейнер **утрачен при пересоздании пула** (локальный образ не пережил `.ix-apps`). **План:** поднять MJPEG-сервис заново (**аддон** на t610 — вебка там, Docker в HA OS закрыт; **или** вернуть вебку на TrueNAS) → Generic Camera по URL потока → ✅ `unique_id` + зона `kotelnaia` + мультиклиент (телефон/Frigate). История и все тупики — [[family/plans/t610-home-automation]] §5-кватер-И-3
|
||||
>
|
||||
> ⚠️ **Зону камере назначить нельзя** — у YAML-`ffmpeg`-камеры **нет unique_id** (в схеме интеграции только `input`/`name`/`extra_arguments`), поэтому она отсутствует в `entity_registry` и в UI пишет «does not have a unique ID → settings cannot be managed». **Это не ошибка** — штатное ограничение (офиц. FAQ HA). Обход — переименовать (`name: Камера котельной`). Разбор — [[family/plans/t610-home-automation]] §5-кватер-И-5.
|
||||
> **📷 Камера — ✅✅ ФИНАЛЬНАЯ СХЕМА (2026-09-14, вечер-13):** USB-вебка **Logitech `046d:0825`** (смотрит на счётчик газа/воды BK-G4T) физически на t610, отдаёт **только MJPEG**. Работает через **аддон `a889bffc_go2rtc-hardware`** (в нём ffmpeg) → транскод MJPEG→H.264 отдельным `ffmpeg:`-источником → **RTSP `rtsp://192.168.2.176:8554/usb_camera_h264`** → в HA Generic Camera **`camera.192_168_2_176`** («Камера котельной», зона `kotelnaia`, `unique_id 01M2FX50K72X2RSYY549QSG3XP`, `rtsp_transport: tcp`). **WebRTC в приложении HA работает** (подтверждено Alex).
|
||||
> **🔄 Поворот 90° добавлен** (камера стоит криво): суффикс **`#rotate=90`** в `ffmpeg:`-строке `/config/go2rtc.yaml`. Нативный параметр go2rtc (дока `go2rtc.org/internal/ffmpeg/`), работает при транскодинге. Поток стал `480x640`. **✅ Направление подтверждено Alex: «в ту»** — значение `90` верное. Бэкап `/config/go2rtc.yaml.bak-rotate-20260914-202817`.
|
||||
> **❌ ОПРОВЕРГНУТО (вечер-11/13):** прежние записи в этом документе — «схема `camera: platform: ffmpeg` (`camera.usb_camera`)», «СХЕМУ МЕНЯЕМ, вечер-10», «зоне назначить нельзя, нет `unique_id`» — **устарели**. YAML-`ffmpeg`-камера была **отвергнута** (`Resource busy`, нет `unique_id`), заменена на `local_ustreamer` (вечер-11), затем на `go2rtc-hardware` (вечер-13). У финальной Generic Camera **`unique_id` ЕСТЬ**, зона `kotelnaia` назначена. **Каноны и питфоллы — [[family/plans/t610-home-automation]] §5-кватер-И-6 (КАНОН-1: синтаксис v4l2; КАНОН-2: поворот `#rotate=`).**
|
||||
> ⚠️ **Камера = ОДИН процесс.** ustreamer и go2rtc вместе → залипание USB (`Failed to resubmit video URB (-1)`), лечится только power-cycle. `local_ustreamer` → `boot: manual`, `stopped` — оставлен для отката.
|
||||
>
|
||||
> **✅ ZONT MQTT — ПЕРЕНАПРАВЛЕН 2026-09-14:** на роутере `192.168.2.2` (OpenWrt) DNAT-правила `redirect[0]` (name `MQTT`) и `rule[3]` (name `allow-1883`) переключены `dest_ip` `192.168.2.197` → **`192.168.2.176`**. ZONT теперь пишет в mosquitto-**аддон на t610** (живой поток `modbus/sensors/kids/*`, `bedroom/*`). В настройках ZONT ничего не менялось — адрес `mqtt://zont:…@192.168.0.10:1883` остался тот же (`192.168.0.10` = wan-интерфейс самого роутера `192.168.2.2`). Бэкап правил: `/root/firewall.bak-20260914-092555`. Детали и откат — [[family/plans/t610-home-automation]] §5-кватер-Д. Также `/etc/config/dhcp`: `list address '/mallexxx.duckdns.org/192.168.0.10'` — внутренний DNS-пин для ZONT-сети.
|
||||
>
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
|
||||
> ✅ **ДОМАШНЯЯ АВТОМАТИЗАЦИЯ ПЕРЕНЕСЕНА НА HP t610 (2026-09-14).** HA, zigbee2mqtt, mosquitto, mbusd, modbus-bridge **и flows Node-RED** переехали на **t610** (HA OS, `192.168.2.176`). Единый документ по t610 — [[family/plans/t610-home-automation]]. **TrueNAS-стек автоматизации пока работает как есть — не отключён** (отключение = Этап 4). Причина переноса: TrueNAS на пределе RAM (17/21 ГБ).
|
||||
>
|
||||
> **2026-09-14 (вечер-2) — Caddy ПЕРЕКЛЮЧЁН, Node-RED ПЕРЕНЕСЁН:**
|
||||
> - **Caddy НЕ переносился и не будет:** 17 из 20 доменов `*.mallexxx.duckdns.org` — сервисы самого TrueNAS (immich, gitea, jellyfin, radarr, webdav, transmission, portainer…). Перенос Caddy на t610 положил бы их при падении t610. **Правлены только 2 upstream:** `mallexxx.duckdns.org` → `192.168.2.176:80` (HA на t610, HTTP 200) и `nodered.mallexxx.duckdns.org` → `192.168.2.176:1880` (**⚠️ этот сейчас отдаёт 401 от nginx HA, а не Node-RED — не используется, см. ниже**). Caddyfile: `/mnt/RED_2TB/docker/caddy/Caddyfile` (root-owned — агент только стейджит в `/tmp/`, подменяет Alex), бэкап `Caddyfile.bak-20260914`. Порты контейнера: `8088:80`, `8443:443`; DNAT на роутере `192.168.2.2`: `wan:80→192.168.2.197:8088`, `wan:443→192.168.2.197:8443`.
|
||||
> **2026-09-14 (вечер-2, обновлено вечер-13) — Caddy ПЕРЕКЛЮЧЁН, Node-RED ПЕРЕНЕСЁН:**
|
||||
> - **Caddy НЕ переносился и не будет:** 17 из 20 доменов `*.mallexxx.duckdns.org` — сервисы самого TrueNAS (immich, gitea, jellyfin, radarr, webdav, transmission, portainer…). Перенос Caddy на t610 положил бы их при падении t610. **✅ ПРАВКА ЗАВЕРШЕНА (факт-проверка 2026-09-14 вечер-13):** в `Caddyfile` остался **ОДИН** upstream на t610 — `mallexxx.duckdns.org` → `192.168.2.176:80` (HA, HTTP 200 ✅). **УБРАНЫ совсем:** `cam.mallexxx.duckdns.org` (камера на t610 по RTSP — домен не нужен) и `nodered.mallexxx.duckdns.org` (Node-RED — через ingress HA, решение Alex «оставляем так»). Caddyfile: `/mnt/RED_2TB/docker/caddy/Caddyfile` (root-owned — агент только стейджит в `/tmp/`, подменяет Alex), бэкап `Caddyfile.bak-20260914`. Порты контейнера: `8088:80`, `8443:443`; DNAT на роутере `192.168.2.2`: `wan:80→192.168.2.197:8088`, `wan:443→192.168.2.197:8443`.
|
||||
> - **Node-RED flows перенесены на t610** (`/addon_configs/a0d7b954_nodered/flows.json`, 68 узлов, узел `server` → `addon: true`). **Наружу НЕ выпущен** (порт-маппинг при `host_network: true` глушится, снимается только в UI) — доступ через ingress HA. Node-RED в докере TrueNAS (`/mnt/RED_2TB/docker/nodered/`, порт `1880:1880`) **продолжает работать** как источник/откат.
|
||||
> - **🔴 Важно про доступ к HA извне:** `/config/.storage/http` на t610 требовал `trusted_proxies += 192.168.2.197/32`, иначе Caddy с другого хоста даёт **400** (HA `use_x_forwarded_for: true`). Обобщение: **IP любого внешнего reverse-proxy обязан быть в `trusted_proxies`.**
|
||||
> **2026-09-14 (вечер-3) — ZONT MQTT ПЕРЕНАПРАВЛЕН НА t610:**
|
||||
> - DNAT на роутере `192.168.2.2`: `firewall.@redirect[0]` (name `MQTT`) и `firewall.@rule[3]` (name `allow-1883`) — `dest_ip` `192.168.2.197` → **`192.168.2.176`**. `uci commit firewall` + `/etc/init.d/firewall reload`. Бэкап: `/root/firewall.bak-20260914-092555`.
|
||||
> - **Результат:** ZONT пишет в mosquitto-**аддон на t610** (живой поток `modbus/sensors/kids/*`, `bedroom/*`). В настройках ZONT ничего не менялось (`mqtt://…@192.168.0.10:1883`, где `.0.10` = wan-интерфейс роутера `192.168.2.2`, не отдельный GPON-роутер).
|
||||
> - ✅ **`dining/*` тоже публикуется (2026-09-14, позже):** прежняя версия «ZONT не публикует / мёртвый upstream» — **❌ ОПРОВЕРГНУТА**. Причина была в **баге сборки RTU-кадров в `modbus-bridge`** (19-байтный кадр гостиной рвался), фикс `3748feb` → все 7 полей `dining` живы. Подробно — [[family/plans/t610-home-automation]] §5-кватер-З.
|
||||
> - **⚠️ «Камера на TrueNAS» — ИСПРАВЛЕНО (2026-09-14, вечер-10):** прежняя запись «камера = USB-вебка на t610, upstream `cam.*:8090` к камере отношения не имеет» — **❌ НЕВЕРНА**. Поиск в `Caddyfile.bak` доказал: **`cam.mallexxx.duckdns.org → 192.168.2.197:8090` — ЭТО И БЫЛА камера** на TrueNAS: отдельный HTTP-MJPEG-сервис (`ustreamer`/`mjpg-streamer`, порт 8090 — канон для «USB-вебка → MJPEG»). **Контейнер УТРАЧЕН** при пересоздании пула (локальный образ не пережил `.ix-apps`, папка/конфиг не сохранились, остался только след в `Caddyfile.bak`; из живого Caddyfile строка уже удалена). Сейчас вебка `046d:0825` физически в **t610** и заведена как `camera.usb_camera` (ffmpeg) — но эта схема даёт `Resource busy` и не даёт `unique_id`. **План: вернуть схему «отдельный MJPEG-сервис» (аддон ustreamer/go2rtc на t610 или контейнер на TrueNAS) → Generic Camera по URL → уникальный ID + зона.** Подробно — [[family/plans/t610-home-automation]] §5-кватер-И-3.
|
||||
> - **Не перенесено с TrueNAS:** погашение TrueNAS-стека (Этап 4 п.6 — заблокировано: Caddy на TrueNAS держит точку входа).
|
||||
> - **⚠️ «Камера на TrueNAS» — ИСПРАВЛЕНО (2026-09-14, вечер-10) + ✅ РЕШЕНО ОКОНЧАТЕЛЬНО (вечер-13):** прежняя запись «камера = USB-вебка на t610, upstream `cam.*:8090` к камере отношения не имеет» — **❌ НЕВЕРНА**. Поиск в `Caddyfile.bak` доказал: **`cam.mallexxx.duckdns.org → 192.168.2.197:8090` — ЭТО И БЫЛА камера** на TrueNAS: отдельный HTTP-MJPEG-сервис (`ustreamer`/`mjpg-streamer`, порт 8090 — канон для «USB-вебка → MJPEG»). **Контейнер УТРАЧЕН** при пересоздании пула (локальный образ не пережил `.ix-apps`; из живого Caddyfile строка удалена — `cam.*` больше нет). **✅ ФИНАЛ (вечер-13):** вебка `046d:0825` физически в **t610**, работает через **аддон `a889bffc_go2rtc-hardware`** → RTSP H.264 `rtsp://192.168.2.176:8554/usb_camera_h264` → **Generic Camera** `camera.192_168_2_176` (зона `kotelnaia`, `unique_id`, **WebRTC работает**, поворот `#rotate=90`). Схема `camera: platform: ffmpeg` в Core — **❌ ОТВЕРГНУТА** (`Resource busy` + нет `unique_id`). Подробно — [[family/plans/t610-home-automation]] §5-кватер-И-3/И-6.
|
||||
> - **Не перенесено с TrueNAS:** погашение TrueNAS-стека (Этап 4 п.6 — заблокировано: Caddy на TrueNAS держит точку входа). **⚠️ Обновлено (вечер-13):** Caddy-часть и ZONT MQTT **закрыты** (в `Caddyfile` на t610 ведёт только `mallexxx.*`, `cam.*`/`nodered.*` убраны; MQTT DNAT `.197`→`.176`). Осталась только остановка самого TrueNAS-стека.
|
||||
|
||||
> Обновлено: 2026-09-02 (vpn.mallexxx:443 = РАБОЧИЙ Xray-сервер, проверено end-to-end; vless-proxy outbound мёртв)
|
||||
|
||||
@@ -203,16 +203,16 @@ arr, caddy, cups, filebrowser, gitea, hermes, immich, inpx-web, inpxer, library,
|
||||
### Caddy — домены
|
||||
| Домен | → |
|
||||
|-------|---|
|
||||
| mallexxx.duckdns.org | Home Assistant :8123 |
|
||||
| mallexxx.duckdns.org | **HA на t610** `192.168.2.176:80` ✅ (2026-09-14) |
|
||||
| transmission.mallexxx.duckdns.org | Transmission :9091 |
|
||||
| immich.mallexxx.duckdns.org | Immich :2283 |
|
||||
| nodered.mallexxx.duckdns.org | Node-RED :1880 |
|
||||
| ~~nodered.mallexxx.duckdns.org~~ | **❌ УБРАН из Caddyfile (2026-09-14):** Node-RED теперь аддон на t610, наружу НЕ выпущен — доступ через ingress HA. Решение Alex «оставляем так» |
|
||||
| webdav.mallexxx.duckdns.org | WebDAV |
|
||||
| books.mallexxx.duckdns.org | Inpxer :18080 🔒 basicauth (user: books-admin) |
|
||||
| library.mallexxx.duckdns.org | library-app :8080 🔒 basicauth (user: books-admin) |
|
||||
| portainer.mallexxx.duckdns.org | Portainer :9000 |
|
||||
| truenas.mallexxx.duckdns.org | TrueNAS UI :80 |
|
||||
| cam.mallexxx.duckdns.org | Камера :8090 ⚠️ **❌ УДАЛЕНО из живого Caddyfile** (2026-09-14). Исторический upstream: `192.168.2.197:8090` — отдельный HTTP-MJPEG-сервис (`ustreamer`), контейнер утрачен при пересоздании пула. Камера теперь на **t610** аддоном `local_ustreamer` (MJPEG :8090) и заведена в HA как `camera.192_168_2_176` (зона Котельная) — подробно [[family/plans/t610-home-automation]] §5-кватер-И-5 |
|
||||
| ~~cam.mallexxx.duckdns.org~~ | **❌ УБРАН из Caddyfile (2026-09-14).** Исторический upstream: `192.168.2.197:8090` — отдельный HTTP-MJPEG-сервис (`ustreamer`), контейнер утрачен при пересоздании пула. **Камера теперь на t610:** аддон **`a889bffc_go2rtc-hardware`** → RTSP H.264 `rtsp://192.168.2.176:8554/usb_camera_h264` → `camera.192_168_2_176` (зона Котельная, **WebRTC работает**, поворот `#rotate=90`). Домен не нужен. Подробно [[family/plans/t610-home-automation]] §5-кватер-И-6 |
|
||||
| **vpn-panel.mallexxx.duckdns.org** | **3x-ui панель :2053** (добавлен 2026-09-01) |
|
||||
| **vpn.mallexxx.duckdns.org** | **Xray VLESS-WS (путь /vless) → xray-admin:10095** (добавлен 2026-09-01) |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user