[2026-09-14] eagle: family/plans/t610-addons-deployment.md
This commit is contained in:
@@ -16,7 +16,7 @@ related:
|
||||
---
|
||||
# t610 — развёртывание через HA-аддоны
|
||||
|
||||
> **Статус (2026-09-14): Этап 1 ✅. Этап 2 ✅ ПОЛНОСТЬЮ. Этап 3 — решения приняты, имена Zigbee согласованы; ждём решения по одному устройству (`Mini Smart Switch 1`) и приступаем к переносу.** Сервисы: z2m (**17 устройств** — добавлено NEO NAS-WR01B), mbusd (502), modbus-bridge (MQTT + HA-опрос), MQTT-интеграция в HA. Разведка конфига TrueNAS выполнена, эталон имён найден.
|
||||
> **Статус (2026-09-14): Этап 1 ✅. Этап 2 ✅ ПОЛНОСТЬЮ. Этап 3 🚧 В РАБОТЕ — решения приняты, комплект файлов собран, бэкапы сделаны. Удалено мёртвое `Mini Smart Switch 1`, добавлена новая Zigbee-розетка (17→16 устройств), имена согласованы. Следующий шаг — stop HA → залив реестров.** Сервисы: z2m (16 устройств), mbusd (502), modbus-bridge (MQTT + HA-опрос), MQTT-интеграция в HA.
|
||||
> Родительский план: [[family/plans/home-automation-migration-t610]] (Шаг 3 в нём заменяется на этот документ).
|
||||
> Доступ к хосту, CLI и питфоллы: [[family/how-to/t610-access]].
|
||||
|
||||
@@ -298,19 +298,69 @@ curl -s -X POST -H "Authorization: Bearer $T" -H "Content-Type: application/json
|
||||
|
||||
**Итог: папка `custom_components/` не переносится вообще.** Никаких HACS-компонентов в системе нет.
|
||||
|
||||
#### Порядок работ Этапа 3 (важно — не перепутать)
|
||||
#### 🔑 КЛЮЧЕВОЕ ОТКРЫТИЕ (2026-09-14): имена сущностей в HA уже ЧЕЛОВЕЧЕСКИЕ
|
||||
|
||||
1. **Бэкап** текущего `/config` t610 → Mac (`~/tmp-t610/config-t610-backup-<дата>/`)
|
||||
2. **Бэкап** нужного с TrueNAS → Mac
|
||||
3. `ha core stop` (иначе HA перезапишет `.storage` при выходе)
|
||||
4. Перенести реестры `.storage` (замена, выборочно по списку выше)
|
||||
5. Перенести `configuration.yaml` + правка `modbus.host` → `127.0.0.1`
|
||||
6. Перенести `automations.yaml`, `scripts.yaml`, `secrets.yaml`, `www/`
|
||||
7. `custom_components/` — **НЕ переносим** (решено) → шаг пропускается
|
||||
8. Старт HA, проверка: конфиг валиден, сущности на месте, автоматизации, дашборд `home_plan`
|
||||
9. **ТОЛЬКО ПОСЛЕ этого** — правка `friendly_name` в z2m + чистка `entity_id` в HA
|
||||
**Разбор реестра TrueNAS (`core.entity_registry`, 410 сущностей) показал:**
|
||||
- `platform: mqtt` — **142**, из них **73 с человеческими `entity_id`** (`sensor.dining_temperature_2`, `switch.kitchen_hood_l1`, `light.zigbee_dimmer_2ch_l1`, `button.nasos_obratki_identify`, `sensor.shower_2_presence_sensor_target_distance` …) и **69 hex**.
|
||||
- **Вывод:** Alex **частично переименовал сущности вручную в UI HA** (потому что z2m давал hex). Т.е. «hex в HA» — только у тех, что не переименованы.
|
||||
|
||||
> ⚠️ Порядок шагов 4 → 9 критичен: если переименовать z2m до переноса реестров, работа пропадёт (HA перезапишет реестр).
|
||||
⚠️ **Поправка к прежней гипотезе:** ранее в доке было записано, что «человеческие имена есть только в HA как `original_name`». Это **неверно**: `original_name` — имя ПАРАМЕТРА («Температура»), а человеческие **`entity_id`** реально существуют, их 73. Именно они — эталон.
|
||||
|
||||
**Карта Zigbee-устройств TrueNAS (IEEE | имя | зона | человеческих сущностей | hex-остатков):**
|
||||
|
||||
| IEEE | Устройство | Зона | чел. | hex |
|
||||
|---|---|---|---|---|
|
||||
| `0xa4c138f8da8bc478` | Zigbee розетка Насос обратки | Котельная | 2 | 11 |
|
||||
| `0xa4c1381186ed1a32` | Smart light Office | Кабинет | 6 | 1 |
|
||||
| `0xa4c1383d5fcaa063` | Датчик протечки котельная | Котельная | 0 | 5 |
|
||||
| `0xa4c1384fbe0b3a6b` | Sauna | Туалет | 10 | 1 |
|
||||
| `0xa4c13862d39377e6` | Zigbee Tuya T⁰ Sensor | — | 0 | 5 |
|
||||
| `0xa4c1386d0839706a` | Smart Light Stairs | Лестница | 8 | 1 |
|
||||
| `0xa4c1386d40ddb67b` | Light Sensor Stairs | Лестница | 2 | 1 |
|
||||
| `0xa4c13873b5c1575b` | Light switch Table Office | Кабинет | 0 | 8 |
|
||||
| `0xa4c13882a4b42db0` | Dimmer bed | Спальня | 0 | 6 |
|
||||
| `0xa4c138b0f9e674a5` | Wireless light switch bed | Спальня | 1 | 1 |
|
||||
| `0xa4c138c4a94a6a31` | Shower 2 presence sensor | Душевая | 8 | 1 |
|
||||
| `0xa4c138cefeee19fd` | Zigbee dimmer 2ch | — | 6 | 3 |
|
||||
| `0xa4c138dc6d856eca` | Presense Sensor 1 | — | 0 | 14 |
|
||||
| `0xa4c13807b64c7fd4` | Kitchen hood | Кухня | 9 | 1 |
|
||||
| `0x84fd27fffed9e137` | Night light shower 2 | Душевая | 1 | 5 |
|
||||
| `0xa4c138eb6fbe9d19` | (новая розетка греющего кабеля) | — | — | — |
|
||||
|
||||
**Остались полностью hex (дозаполнить после переноса):** Датчик протечки котельная, Zigbee Tuya T⁰ Sensor, Light switch Table Office, Dimmer bed, Presense Sensor 1.
|
||||
|
||||
#### 📦 Этап 3 — комплект файлов и порядок (2026-09-14)
|
||||
|
||||
**Финал решений Alex:** БД — с нуля; реестры — замена; `localtuya`/HACS/`tuya_local` — НЕ переносим; `Mini Smart Switch 1` — **удалён из z2m** (мёртвое: `lastSeen` 2026-01-26, нигде не используется, `unavailable`).
|
||||
|
||||
**Staged-комплект:** `~/tmp-t610/stage3/out/`
|
||||
- конфиги: `configuration.yaml` (правки: `modbus.host` → `127.0.0.1`; убрана строка `localtuya: debug`), `automations.yaml`, `scripts.yaml`, `scenes.yaml`, `secrets.yaml`
|
||||
- `.storage/`: `core.entity_registry`, `core.device_registry`, `core.area_registry`, `core.floor_registry`, `core.restore_state`, `lovelace.home_plan`, `lovelace_dashboards`, `lovelace_resources`, `person`, `zone`, `core.logger`, `homeassistant.exposed_entities`
|
||||
- `www/`: `card-mod.js`, `floorplan/floor1_ha.svg`, `floorplan/floor2_ha.svg`
|
||||
|
||||
**НЕ переносим (локальное t610):** `core.uuid`, `auth*`, `http*`, `onboarding`, `core.config`, **`core.config_entries`** (⚠️ иначе потеряем MQTT-интеграцию t610!), `core.analytics`, `frontend.*`, `hacs.*`, `repairs.*`.
|
||||
|
||||
**Правка дашборда:** в `lovelace.home_plan` ссылка `switch.vvod_vody_greiushchii_kabel` → `switch.heating_cable_plug` (скрипт `~/tmp-t610/fix_dashboard.py`, заменено 1 вхождение).
|
||||
|
||||
**Порядок работ:**
|
||||
1. ✅ Бэкап `/config` t610 → `~/tmp-t610/backups/config-t610-20260914-115034.tar.gz`
|
||||
2. ✅ Бэкап TrueNAS → `~/tmp-t610/backups/truenas-ha-backup-20260913-215043.tar.gz` (`auth`/`http`/`auth_provider` не читаются — root-only, и не нужны)
|
||||
3. `ha core stop` на t610
|
||||
4. Залить реестры `.storage` (выборочно по списку)
|
||||
5. Залить конфиги + `www/`
|
||||
6. `ha core check` → `ha core start`
|
||||
7. Проверка: сущности, зоны, автоматизации, дашборд
|
||||
8. **ТОЛЬКО ПОСЛЕ** — `friendly_name` в z2m = человеческие имена (эталон из реестра) + чистка hex-остатков в HA
|
||||
|
||||
> ⚠️ Порядок 4 → 8 критичен: переименование z2m до переноса реестров пропадёт.
|
||||
|
||||
**Питфоллы, найденные в этой сессии:**
|
||||
- **`ha apps logs <slug>` тяжёлый** — не гонять в цикле ожидания («висит» минутами). Ждать готовности по `database.db`/`state.json`.
|
||||
- **`mosquitto_pub/sub` в аддоне без `--pwfile`** — только `-u`/`-P`. Пароль с `$` → брать из опций: `ha apps info <slug> --raw-json | jq -r '.data.options.mqtt.password' > /tmp/pw; MPW=$(cat /tmp/pw); rm /tmp/pw`.
|
||||
- **Удаление устройства z2m:** `mosquitto_pub ... -t 'zigbee2mqtt/bridge/request/device/remove' -m '{"id":"0x...","force":true}'` (force для недоступных) → `{"status":"ok"}`; z2m сам убирает из `database.db` и `devices:`.
|
||||
- **Токен HA маскируется** при подстановке в bash-переменную → через файл + `jq --arg`.
|
||||
- **`http://supervisor/core` даёт 401** с пользовательским токеном (ждёт `SUPERVISOR_TOKEN`) → адрес `http://192.168.2.176:80`.
|
||||
- **Кавычки в inline ssh-командах с кириллицей ломаются** → писать скрипт файлом, `scp`, запускать.
|
||||
|
||||
#### ✅ Zigbee `friendly_name` — корень generic-имён (разведка 2026-09-14)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user