From 0f7da2c9bc232c15700613977e9d9517a71da8b9 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Mon, 6 Jul 2026 17:47:29 +0600 Subject: [PATCH] [2026-07-06] eagle: family/how-to/truenas-infrastructure.md --- family/how-to/truenas-infrastructure.md | 123 +++++++++++++++++++++++- 1 file changed, 122 insertions(+), 1 deletion(-) diff --git a/family/how-to/truenas-infrastructure.md b/family/how-to/truenas-infrastructure.md index 7771af24..2230e9d0 100644 --- a/family/how-to/truenas-infrastructure.md +++ b/family/how-to/truenas-infrastructure.md @@ -1,6 +1,6 @@ # TrueNAS — инфраструктура -> Обновлено: 2026-05-29 +> Обновлено: 2026-07-06 ## Доступ @@ -116,6 +116,67 @@ TrueNAS использует **NFSv4 ACL**, а не стандартный POSIX | cam.mallexxx.duckdns.org | Камера :8090 | | docs.mallexxx.duckdns.org | Docs :8000 | +### Home Assistant — детали + +- **Image:** `ghcr.io/home-assistant/home-assistant:stable` +- **Порт:** `8123:8123` +- **Volume:** `/mnt/RED_2TB/docker/ha` → `/config` +- Конфиги редактируются **напрямую на NAS** — `docker cp` не нужен, изменения применяются после reload/restart HA. + +**Ключевые файлы конфига:** + +| Файл | Назначение | +|------|------------| +| `configuration.yaml` | Главный конфиг: интеграции, template sensors, http trusted_proxies | +| `automations.yaml` | Все автоматизации (подключён через `!include`) | +| `scripts.yaml` | Скрипты | +| `.storage/lovelace.home_plan` | Dashboard с планом этажей (JSON, управляется HA UI) | +| `www/floorplan/floor1_ha.svg` | SVG фон первого этажа | +| `www/floorplan/floor2_ha.svg` | SVG фон второго этажа | + +**Перезапуск после редактирования конфига:** +```bash +ssh truenas_admin@mallexxx.duckdns.org "docker restart homeassistant" +``` + +**Проверка конфига перед перезапуском:** +```bash +ssh truenas_admin@mallexxx.duckdns.org "docker exec homeassistant python -m homeassistant --script check_config --config /config" +``` + +### mbusd — Modbus TCP gateway + +Мост Modbus RTU → TCP: пробрасывает серийный порт инвертора AT2 вентиляции в TCP 502. + +- **Image:** `3cky/mbusd` +- **Порт:** `502:502` +- **Config:** `/mnt/RED_2TB/docker/mbusd/mbusd.conf` → `/etc/mbusd.conf` +- **Device:** `/dev/ttyVent` → `/dev/ttyUSB0` (внутри контейнера) + +### modbus-bridge — AT2 Modbus → MQTT + +Кастомный Python-мост: читает регистры инвертора AT2 через mbusd и публикует в MQTT → Home Assistant. + +- **Image:** `modbus-bridge` (локальная сборка) +- **Volumes:** + - `/mnt/RED_2TB/docker/modbus-bridge/config.yml` → `/app/config.yml` (ro) + - `/mnt/RED_2TB/docker/modbus-bridge/modbus_ha_bridge.py` → `/app/modbus_ha_bridge.py` (ro) +- **Source:** `modbus_ha_bridge.py` в репозитории `HA-ZONT-Modbus` + +### USB device aliases + +Файл правил: `/mnt/RED_2TB/system/99-tty-alias.rules` + +``` +SUBSYSTEM=="tty", KERNEL=="ttyUSB*", KERNELS=="2-1.5:1.0", SYMLINK+="ttyZONT" +SUBSYSTEM=="tty", KERNEL=="ttyUSB*", KERNELS=="2-1.6:1.0", SYMLINK+="ttyVent" +``` + +Применить после изменений: +```bash +cp /mnt/RED_2TB/system/99-tty-alias.rules /etc/udev/rules.d/ && udevadm control --reload-rules && udevadm trigger +``` + ## Hermes-Taiga агент | Параметр | Значение | @@ -175,6 +236,66 @@ git -C /mnt/RED_2TB/storage/git/obsidian-vault.git log --oneline -10 Подробности: [[obsidian-sync]] +## Home Assistant — что настроено + +### `configuration.yaml` + +- `http:` раздел: `use_x_forwarded_for: true`, `trusted_proxies: 172.16.0.0/12` — обязательно для работы через reverse proxy (Caddy) +- Modbus интеграция для вентиляторов AT2 и заслонок +- Template sensors (в блоке `template: - sensor:`): + +| Сенсор | Пример | Описание | +|--------|--------|----------| +| `dining_summary` | "24° 450ppm" | Темп и CO₂ в столовой | +| `dining_air_summary` | "65tvoc 3pm" | TVOC и частицы в столовой | +| `kids_summary` | "22° 600ppm" | Темп и CO₂ в детской | +| `bedroom_summary` | "21° 500ppm" | Темп и CO₂ в спальне | +| `at2_1_summary` | "Off" / "45%" | AT2-1: объединённые on/off + скорость | +| `at2_2_summary` | "Off" / "45%" | AT2-2: объединённые on/off + скорость | + +### `automations.yaml` + +- ГВС циркуляция: вкл (09:30) / выкл (23:00) +- Вентиляционный вентилятор вкл в 05:00 +- Проходной выключатель кабинета → toggle света в кабинете (`not_from: [unavailable, unknown]` — защита от ложных срабатываний при запуске HA) +- Подсветка лестницы: вкл/выкл по датчику освещённости +- Диммер спальни: toggle и цикл яркости +- Ночной свет в душе: присутствие + освещённость +- Уведомление: датчик протечки (котельная) +- Уведомления: низкий заряд батареи (несколько устройств) + +### Floor Plan Dashboard (`lovelace.home_plan`) + +Два вида — Ground Floor (`floor1`) и Second Floor (`floor2`) — `picture-elements` поверх SVG фона. + +**Первый этаж (`floor1`):** +- Приточные заслонки: столовая (левая/правая), кабинет +- Вытяжные заслонки: кухня, туалет 1F +- Вентилятор 3 (кухонная вытяжка) +- Метки AT2-1 / AT2-2 (`sensor.at2_1_summary` / `sensor.at2_2_summary`) +- Сауна, обогревательный кабель +- Свет кабинет (левый/правый) +- Метка столовой (`sensor.dining_summary`) и качество воздуха (`sensor.dining_air_summary`) + +**Второй этаж (`floor2`):** +- Приточные заслонки: детская, спальня, север +- Вытяжные заслонки: ванная, душ 2F +- Свет спальни (диммер) +- Метки: `sensor.kids_summary`, `sensor.bedroom_summary` + +**SVG dark mode** — встроенный CSS в SVG-файлах: +```svg + +``` + +> ЖJSON Lovelace зафиксирован в git по пути `floorplan/lovelace.home_plan.json` (справочный снимок, HA **не** подгружает его автоматически). + +--- + ## Связанные заметки - [[truenas-access]] — SSH-доступ - [[truenas-rclone-backup]] — система бэкапов