[2026-07-06] taiga-vault: family/how-to/truenas-infrastructure.md

This commit is contained in:
Taiga
2026-07-06 11:50:53 +00:00
parent c2d07a53f3
commit 9fa5e19d3b
+122 -1
View File
@@ -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
<style>
@media (prefers-color-scheme: dark) {
path, line, polyline, polygon, rect, circle, ellipse { stroke: white; }
}
</style>
```
> ЖJSON Lovelace зафиксирован в git по пути `floorplan/lovelace.home_plan.json` (справочный снимок, HA **не** подгружает его автоматически).
---
## Связанные заметки
- [[truenas-access]] — SSH-доступ
- [[truenas-rclone-backup]] — система бэкапов