[2026-09-14] eagle: family/plans/t610-home-automation.md
This commit is contained in:
@@ -9,8 +9,9 @@
|
||||
## 1. Состояние на 2026-09-14 (актуализировано 15:33 → дополнено вечерней сессией)
|
||||
|
||||
**Этап 1 ✅ · Этап 2 ✅ · Этап 3 ✅ ЗАКРЫТ.** Этап 4 — **ПОЧТИ ЗАКРЫТ (3 из 4):** ① Caddy → t610 (`mallexxx.duckdns.org` → HA на t610, HTTP 200); ② Node-RED flows перенесены, `Connected to HA`, наружу не выпущен (решение Alex «оставляем так», доступ через ingress); ③ **ZONT MQTT-редирект переключён на t610** (DNAT на роутере `.197`→`.176`, живой поток идёт). **ОСТАЛОСЬ:** погасить/отключить сервисы TrueNAS (заблокировано — Caddy на TrueNAS держит точку входа) + хвосты (static IP, бэкап).
|
||||
**Последняя верификация: 2026-09-14 (вечер-12) — ⚠️ RTSP/WebRTC НЕ ЗАВЕРШЕНО, камера ЗАЛИПЛА на USB-уровне.** Задача Alex: *«добавь rtsp... на truenas был mjpg+rtsp»* — для работы WebRTC в мобильном приложении HA (сейчас `DESCRIBE failed: 404`, HLS при этом работает). **Установлено:** ustreamer **RTSP не умеет** (только MJPEG/HTTP) → поставлен **аддон go2rtc** (`a889bffc_go2rtc`, репо AlexxIT, v1.9.14) — он даёт MJPEG + **RTSP :8554** + WebRTC из одного источника. **RTSP и MJPEG через go2rtc РАБОТАЮТ** (RTSP `200 OK`, MJPEG 2.4 МБ/10 с). **НО:** камера залипла на уровне ядра (`uvcvideo: Failed to resubmit video URB (-1)`) после параллельного запуска go2rtc + ustreamer → нужен reboot t610 или физический перетк USB; Generic Camera на RTSP отдаёт `stream_source: timeout` (причина не установлена). Канон, питфоллы и статус — **§5-кватер-И-6**.
|
||||
**Предыдущая верификация (вечер-11) — ✅✅ КАМЕРА: СХЕМА ВОЗВРАЩЕНА «КАК НА TrueNAS», РАБОТАЛА.** Камера на TrueNAS **была** — `cam.mallexxx.duckdns.org → 192.168.2.197:8090` (отдельный **HTTP-MJPEG-сервис**, `ustreamer`), контейнер **утрачен при пересоздании пула** (локальный образ не пережил `.ix-apps`; след остался в `Caddyfile.bak`). **ЧТО СДЕЛАНО (вечер-11):** ① блок `camera: platform: ffmpeg` из `configuration.yaml` **снесён** (бэкап `.bak-rmcam-20260914-185240`) → `/dev/video0` освобождён; ② поднят **локальный аддон `local_ustreamer`** на t610 (`/addons/ustreamer/`) — отдаёт MJPEG на **:8090**; ③ в HA заведена **Generic Camera** по URL потока → `camera.192_168_2_176` с **`unique_id`** → **зона `kotelnaia` назначена**, имя «Камера котельной». Проверено: кадр JPEG 640×480 (HTTP 200, 25 КБ), MJPEG-стрим `multipart/x-mixed-replace` живой, `Resource busy` больше не воспроизводится. Канон и питфоллы — **§5-кватер-И-3/И-5**. До этого: фикс bridge (T3.5) держится, `dining` стабилен; static IP t610 + триггер душевой. **HA long-lived token — в §5-кватер-И-3.** Осталось: (вечер-12) reboot/перетк камеры → переключить камеру на RTSP go2rtc → удалить лишний `/config/go2rtc.yaml` (теперь он **нужен** аддону go2rtc!); снять устаревшую строку `cam.*` из `truenas-infrastructure.md`.
|
||||
**Последнее действие (2026-09-14, ~19:45): 🔴 t610 ВЫКЛЮЧЕН** — Alex: *«Отправь ему shutdown»*, выполнено `ha host shutdown` (exit 0), probe доступности запрещён. Вся автоматизация офлайн; включение только физически. План на включение — §5-кватер-И-6.
|
||||
**Последняя верификация перед выключением: 2026-09-14 (вечер-12) — ⚠️ RTSP/WebRTC НЕ ЗАВЕРШЕНО, камера ЗАЛИПЛА на USB-уровне.** Задача Alex: *«добавь rtsp... на truenas был mjpg+rtsp»* — для работы WebRTC в мобильном приложении HA (сейчас `DESCRIBE failed: 404`, HLS при этом работает). **Установлено:** ustreamer **RTSP не умеет** (только MJPEG/HTTP) → поставлен **аддон go2rtc** (`a889bffc_go2rtc`, репо AlexxIT, v1.9.14) — он даёт MJPEG + **RTSP :8554** + WebRTC из одного источника. **RTSP и MJPEG через go2rtc РАБОТАЮТ** (RTSP `200 OK`, MJPEG 2.4 МБ/10 с). **НО:** камера залипла на уровне ядра (`uvcvideo: Failed to resubmit video URB (-1)`) после параллельного запуска go2rtc + ustreamer → **t610 выключен (см. строку выше), power-cycle при включении лечит залипший USB**; Generic Camera на RTSP отдаёт `stream_source: timeout` (причина не установлена). Канон, питфоллы и статус — **§5-кватер-И-6**.
|
||||
**Предыдущая верификация (вечер-11) — ✅✅ КАМЕРА: СХЕМА ВОЗВРАЩЕНА «КАК НА TrueNAS», РАБОТАЛА.** Камера на TrueNAS **была** — `cam.mallexxx.duckdns.org → 192.168.2.197:8090` (отдельный **HTTP-MJPEG-сервис**, `ustreamer`), контейнер **утрачен при пересоздании пула** (локальный образ не пережил `.ix-apps`; след остался в `Caddyfile.bak`). **ЧТО СДЕЛАНО (вечер-11):** ① блок `camera: platform: ffmpeg` из `configuration.yaml` **снесён** (бэкап `.bak-rmcam-20260914-185240`) → `/dev/video0` освобождён; ② поднят **локальный аддон `local_ustreamer`** на t610 (`/addons/ustreamer/`) — отдаёт MJPEG на **:8090**; ③ в HA заведена **Generic Camera** по URL потока → `camera.192_168_2_176` с **`unique_id`** → **зона `kotelnaia` назначена**, имя «Камера котельной». Проверено: кадр JPEG 640×480 (HTTP 200, 25 КБ), MJPEG-стрим `multipart/x-mixed-replace` живой, `Resource busy` больше не воспроизводится. Канон и питфоллы — **§5-кватер-И-3/И-5**. До этого: фикс bridge (T3.5) держится, `dining` стабилен; static IP t610 + триггер душевой. **HA long-lived token — в §5-кватер-И-3.** **Осталось (обновлено вечер-12 → shutdown):** ① включить t610 физически; ② **сначала снять автозапуск у `local_ustreamer`** (иначе снова подерётся с go2rtc за `/dev/video0`); ③ поднять только go2rtc, проверить оживление камеры; ④ камеру в HA переключить на `rtsp://192.168.2.176:8554/usb_camera`, проверить WebRTC; ⑤ снять устаревшую строку `cam.*` из `truenas-infrastructure.md`. ⚠️ `/config/go2rtc.yaml` **НЕ удалять** — он нужен аддону go2rtc (прежняя пометка «удалить лишний» относилась к встроенному go2rtc Core и **опровергнута**).
|
||||
|
||||
| Что | Факт |
|
||||
|---|---|
|
||||
@@ -19,7 +20,7 @@
|
||||
| Зоны | 11 зон, **18 устройств** с зонами |
|
||||
| Автоматизации | **16 шт.: 15 `on` + 1 `off`**, `unavailable` — 0 |
|
||||
| Zigbee (z2m) | **15 устройств**, координатор EmberZNet 7.4.5 |
|
||||
| Аддоны | `core_ssh`, `core_mosquitto`, `a0d7b954_nodered`, `45df7312_zigbee2mqtt`, `local_mbusd`, `local_modbus-bridge` — все `started` |
|
||||
| Аддоны | `core_ssh`, `core_mosquitto`, `a0d7b954_nodered`, `45df7312_zigbee2mqtt`, `local_mbusd`, `local_modbus-bridge` — все `started`. Камера: `local_ustreamer` (**stopped**, вечер-12) + **`a889bffc_go2rtc`** (установлен вечер-12, репо AlexxIT). ⚠️ **t610 выключен** — всё офлайн до включения |
|
||||
| modbus-bridge | MQTT + HA-опрос работают (без 404) |
|
||||
|
||||
### ✅ Верификация 2026-09-14 15:33 (только чтение, ничего не менялось)
|
||||
@@ -48,7 +49,7 @@
|
||||
| **`sensor.fan_at2_*` / `switch.fan_3_*` — сироты** | В `configuration.yaml` **весь блок slave 10 (AT2 fans) закомментирован** → эти сущности физически не могут получать данные. Не задача — просто известный факт состояния конфига |
|
||||
| `switch.sauna` = `unknown` | Розетка физически отключена (`lastSeen` 8+ ч) — не баг |
|
||||
| ZONT не перенаправлен | **✅ ПЕРЕНАПРАВЛЕН 2026-09-14 (вечер-3, §5-кватер-Д):** DNAT на роутере `192.168.2.2` (`redirect[0]` MQTT + `rule[3]`) переключён `.197`→`.176`; ZONT пишет в mosquitto **t610** (живой поток kids/bedroom). ⚠️ Не решено: `dining/*` не публикуется — **ответ на шине есть, bridge его не отдаёт** (§5-кватер-Д, задача №3) |
|
||||
| Камера | ⚠️ **В РАБОТЕ (2026-09-14, вечер-12): переход на RTSP/go2rtc ради WebRTC.** Базовая схема (вечер-11, **работала**): USB-вебка Logitech `046d:0825` (физически в t610) → **аддон `local_ustreamer`** → MJPEG на **`:8090`** → **Generic Camera** → **`camera.192_168_2_176`** (имя «Камера котельной», **зона `kotelnaia`**). Проблема: WebRTC в мобильном приложении падал (`DESCRIBE 404`) — ustreamer **не умеет RTSP**. **Поставлен аддон `go2rtc`** (RTSP :8554 + MJPEG + WebRTC) — RTSP работает, но камера **залипла на USB-уровне** (`uvcvideo: URB -1`) → нужен reboot/перетк. Детали и статус — **§5-кватер-И-6**. **❌ ОТВЕРГНУТО:** `camera: platform: ffmpeg` внутри Core (`Resource busy` + нет `unique_id`) |
|
||||
| Камера | ⚠️ **НЕ ЗАВЕРШЕНО + t610 ВЫКЛЮЧЕН (2026-09-14, вечер-12).** Цель: перейти на **RTSP (`go2rtc`)** ради WebRTC в мобильном приложении (сейчас `DESCRIBE 404`; HLS работает). Базовая схема (вечер-11, **работала**): USB-вебка Logitech `046d:0825` (физически в t610) → **аддон `local_ustreamer`** → MJPEG на **`:8090`** → **Generic Camera** → **`camera.192_168_2_176`** (имя «Камера котельной», **зона `kotelnaia`**). **Поставлен аддон `go2rtc`** (`a889bffc_go2rtc`, v1.9.14) — MJPEG+RTSP :8554+WebRTC **работают**, но камера **залипла на USB-уровне** (`uvcvideo: URB -1`) от параллельного запуска с ustreamer. Лечится power-cycle (t610 выключен → вылечится при включении). Детали, канон, питфоллы — **§5-кватер-И-6**. **❌ ОТВЕРГНУТО:** `camera: platform: ffmpeg` внутри Core (`Resource busy` + нет `unique_id`); ustreamer как источник RTSP (RTSP не умеет) |
|
||||
|
||||
---
|
||||
|
||||
@@ -2353,9 +2354,14 @@ uvcvideo 2-1:1.1: Failed to resubmit video URB (-1) ← в dmesg
|
||||
|
||||
**Лечение:** требуется **power-cycle камеры** (или reboot t610). Сброс через sysfs (`echo 0 > /sys/bus/usb/devices/2-1/authorized`) **НЕ работает** — `/sys` **read-only** внутри SSH-аддона (защита HA OS). Альтернатива — физически выдернуть/воткнуть USB-камеру.
|
||||
|
||||
> ⏸ **СТАТУС: НЕ ЗАВЕРШЕНО. ЖДЁТ РЕШЕНИЯ ALEX:**
|
||||
> ① разрешить `ha host reboot` (reboot t610, ~1-2 мин) — лечит залипший USB, **или** ② Alex физически переткнёт USB-камеру.
|
||||
> **Далее по плану:** оставить **только go2rtc** (ustreamer → `stopped`, boot auto выключить), камеру в HA переключить на `rtsp://192.168.2.176:8554/usb_camera`, проверить WebRTC в приложении.
|
||||
> 🔴 **ФАКТ (2026-09-14, ~19:45): t610 ВЫКЛЮЧЕН.** Alex: *«Отправь ему shutdown»* → выполнено `ha host shutdown` (exit 0). Проверка доступности **НЕ производилась** (Alex запретил probe). **Следствие:** вся домашняя автоматизация офлайн (HA :80, go2rtc, ustreamer, mbusd, modbus-bridge, mosquitto, Zigbee2MQTT, Node-RED; ZONT без MQTT). Включение — **только физически кнопкой** (WoL не подтверждён). ⚠️ Пункты ① `ha host reboot` / ② перетк USB ниже — **УСТАРЕЛИ**: shutdown даёт тот же эффект (power-cycle лечит залипший USB при следующем включении).
|
||||
>
|
||||
> ⏸ **СТАТУС: НЕ ЗАВЕРШЕНО. ПЛАН НА ВКЛЮЧЕНИЕ (порядок важен):**
|
||||
> ① **Сначала снять автозапуск у `local_ustreamer`** (boot auto → off) — иначе он снова вцепится в `/dev/video0` и подерётся с go2rtc (это и залипило камеру).
|
||||
> ② Поднять **только go2rtc** (`boot: auto` у него уже стоит).
|
||||
> ③ Проверить, что камера ожила: `dmesg` без `Failed to resubmit video URB`, MJPEG через go2rtc отдаёт байты.
|
||||
> ④ Камеру в HA переключить на `rtsp://192.168.2.176:8554/usb_camera`, проверить WebRTC в приложении.
|
||||
> ⑤ ustreamer не удалять — держать `stopped` на случай отката.
|
||||
|
||||
### 📌 Питфоллы вечер-12 (не повторять)
|
||||
| Питфолл | Симптом | Решение |
|
||||
@@ -2870,6 +2876,10 @@ ssh root@192.168.2.176 'ha apps rebuild local_modbus-bridge && ha apps restart l
|
||||
|
||||
**Ждёт Alex:** reboot t610 **или** физический перетк USB-камеры. Далее: оставить только go2rtc, переключить камеру на RTSP, проверить WebRTC.
|
||||
|
||||
> 🔴 **ФИНАЛ СЕССИИ (2026-09-14, ~19:45): Alex → *«Отправь ему shutdown»* → выполнено `ha host shutdown` на t610 (exit 0).** Проверка доступности **НЕ производилась** (Alex отклонил probe). **t610 выключен** — вся домашняя автоматизация офлайн. Включение — только физически кнопкой (WoL не подтверждён). Это тот же power-cycle, что лечит залипший USB → при следующем включении камера должна ожить. ⚠️ Пункт «reboot t610 или перетк USB» выше — **УСТАРЕЛ** (закрыт shutdown'ом).
|
||||
>
|
||||
> ⏸ **ПЛАН НА ВКЛЮЧЕНИЕ (порядок критичен):** ① **сначала снять автозапуск у `local_ustreamer`** (boot auto → off) — иначе снова вцепится в `/dev/video0` и подерётся с go2rtc; ② поднять **только go2rtc**; ③ проверить оживление (`dmesg` без `URB`, MJPEG отдаёт байты); ④ камеру в HA → `rtsp://192.168.2.176:8554/usb_camera`, проверить WebRTC; ⑤ ustreamer не удалять (держать `stopped`).
|
||||
|
||||
> 📌 **Урок (уже в MEMORY):** один процесс = одна камера. Параллельный запуск двух сервисов на `/dev/video0` залипает **на уровне драйвера ядра** — лечится только power-cycle. Полный разбор — §5-кватер-И-6.
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user