[2026-09-17] eagle: family/how-to/home-automation.md family/tech/t610-hang-investigation.md
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
title: "🏠 Домашняя автоматизация"
|
title: "🏠 Домашняя автоматизация"
|
||||||
aliases: [Умный дом, Home automation, HA, Zigbee, Modbus, вентиляция, t610, RCU stall, USB reset]
|
aliases: [Умный дом, Home automation, HA, Zigbee, Modbus, вентиляция, t610, RCU stall, USB reset]
|
||||||
tags: [family, how-to, smarthome]
|
tags: [family, how-to, smarthome]
|
||||||
updated: 2026-09-16
|
updated: 2026-09-17
|
||||||
---
|
---
|
||||||
|
|
||||||
# 🏠 Домашняя автоматизация
|
# 🏠 Домашняя автоматизация
|
||||||
@@ -12,6 +12,7 @@ updated: 2026-09-16
|
|||||||
> 📄 Правка этой доки не появится на телефоне после `git push` — нужен прогон sync-петли: [[family/how-to/vault-sync-pipeline]].
|
> 📄 Правка этой доки не появится на телефоне после `git push` — нужен прогон sync-петли: [[family/how-to/vault-sync-pipeline]].
|
||||||
> 🧰 Локальные скрипты диагностики: `~/tmp-t610/diag.sh`, `diag2.sh`, `diag3.sh`, `diag4.sh`, `stats.sh` (снимаются на t610 через `scp` + `sh /tmp/…`).
|
> 🧰 Локальные скрипты диагностики: `~/tmp-t610/diag.sh`, `diag2.sh`, `diag3.sh`, `diag4.sh`, `stats.sh` (снимаются на t610 через `scp` + `sh /tmp/…`).
|
||||||
> 🔎 **Диагностика автоматизаций — трассировки (WebSocket-only):** `~/tmp-t610/trace_dump.py <HH:MM:SS>` — печатает каждый шаг запуска с результатами условий. `item_id` = внутренний ID, не `entity_id`. Читать **до** перебора гипотез — см. [[family/how-to/ha-automations]] §4.4.
|
> 🔎 **Диагностика автоматизаций — трассировки (WebSocket-only):** `~/tmp-t610/trace_dump.py <HH:MM:SS>` — печатает каждый шаг запуска с результатами условий. `item_id` = внутренний ID, не `entity_id`. Читать **до** перебора гипотез — см. [[family/how-to/ha-automations]] §4.4.
|
||||||
|
> 🔴 **ЗАВИСАНИЯ ХОСТА — отдельная дока расследования:** [[family/tech/t610-hang-investigation]]. Причина **не установлена**, логи прошлого запуска недоступны. Читать её ПЕРЕД тем, как строить версии (§3.1 здесь — RCU stall — **закрыт**, это другой случай).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -333,6 +334,13 @@ Z2M **остановлен** с 2026-09-15 (стик отдан ZHA), данны
|
|||||||
|
|
||||||
### 3.9. 💾 Память: 4 ГБ в BIOS → 3.31 ГБ usable (проверено 2026-09-15)
|
### 3.9. 💾 Память: 4 ГБ в BIOS → 3.31 ГБ usable (проверено 2026-09-15)
|
||||||
|
|
||||||
|
> 🔴🔴 **ОБНОВЛЕНО 2026-09-17 — ЦИФРЫ НЕ СХОДЯТСЯ. Живой хост отдаёт `MemTotal: 1 475 788 kB` = 1.44 ГБ.**
|
||||||
|
> Это **НЕ** 3.31 ГБ из таблицы ниже и **не** объясняется округлением.
|
||||||
|
> Не подтверждено: деградация/отсутствие планки, конфигурация UMA, либо таблица ниже снята с другого состояния.
|
||||||
|
> Проверка не запущена: `dmesg | grep -iE "e820|BIOS-provided"`, `dmidecode -t memory`.
|
||||||
|
> ⚠️ **ПЕРЕМЕРЯТЬ `head -3 /proc/meminfo` при каждом разборе инцидента**, не доверять записанному.
|
||||||
|
> Детали и развилка — [[family/tech/t610-hang-investigation]] §3.1.
|
||||||
|
|
||||||
```
|
```
|
||||||
MemTotal: 3 470 792 kB = 3.31 ГиБ ← столько видит ядро
|
MemTotal: 3 470 792 kB = 3.31 ГиБ ← столько видит ядро
|
||||||
MemAvailable: 2 575 164 kB = 2.46 ГиБ ← реально свободно
|
MemAvailable: 2 575 164 kB = 2.46 ГиБ ← реально свободно
|
||||||
@@ -774,6 +782,9 @@ Hz:PWM 0:0 1:0 2:0 3:0 4:48 5:55 6:63 7:70 8:78 9:85 10:92 11:97 12:102 13:107 1
|
|||||||
| 50 | **`homeassistant.check_config` через сервис отдаёт `[]`** | Это **не** ошибка — сервис не возвращает тело. Проверять `GET /api/config` → `.state` (или `/api/template`) |
|
| 50 | **`homeassistant.check_config` через сервис отдаёт `[]`** | Это **не** ошибка — сервис не возвращает тело. Проверять `GET /api/config` → `.state` (или `/api/template`) |
|
||||||
| 51 | **Локальный `yaml.safe_load` падает на `!include`/`!secret`** | Заглушка: `L.add_multi_constructor('!', lambda l,s,n: {})` — иначе конфиг локально не проверить |
|
| 51 | **Локальный `yaml.safe_load` падает на `!include`/`!secret`** | Заглушка: `L.add_multi_constructor('!', lambda l,s,n: {})` — иначе конфиг локально не проверить |
|
||||||
| 52 | 🔴 **Новый `template:` блок требует `restart` ядра**, не `automation reload` | Диагностика мёртвых ссылок: `jq -r '.. \| objects \| select(.entity? != null) \| .entity' /config/.storage/lovelace.* \| sort -u` → сверить со `/api/states` |
|
| 52 | 🔴 **Новый `template:` блок требует `restart` ядра**, не `automation reload` | Диагностика мёртвых ссылок: `jq -r '.. \| objects \| select(.entity? != null) \| .entity' /config/.storage/lovelace.* \| sort -u` → сверить со `/api/states` |
|
||||||
|
| 53 | 🔴🔴 **При разборе ЗАВИСАНИЯ: логи прошлого запуска недоступны** — подтверждено 2026-09-17 на 5 источниках: `ha core logs` (12 строк текущего контейнера), `/config/home-assistant.log.fault` (0 байт), `home-assistant.log` (нет), `journalctl -b -1` (пусто), `ha supervisor logs` (только текущая загрузка) | Диагноз **до** ребута. **Логбук** в `home-assistant_v2.db` **переживает** ребут — реконструировать профиль нагрузки по нему. Подробно: [[family/tech/t610-hang-investigation]] §2 |
|
||||||
|
| 54 | ⚠️ **`http://192.168.2.176:8123` из LAN → `curl` exit 7**, при живом хосте | Единственный путь к API — `https://mallexxx.duckdns.org`. Дубль питфолла 1 |
|
||||||
|
| 55 | ⚠️ **После холодного старта ZHA догружается**: первый снимок дал 75 сущностей, полный — 310; часть висит `unavailable` минуты | Перемерить через 2–3 мин, не делать вывод «устройства отвалились» |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -847,7 +858,12 @@ ssh root@192.168.2.176 'ha apps logs local_modbus-bridge | grep -E "Raw RTU|→
|
|||||||
|
|
||||||
## 8. Текущее состояние
|
## 8. Текущее состояние
|
||||||
|
|
||||||
> 🕐 Обновлено **2026-09-16**.
|
> 🕐 Обновлено **2026-09-17**.
|
||||||
|
|
||||||
|
> 🔴 **2026-09-17 ~09:38: t610 перезапущен ВРУЧНУЮ (сброс питанием) после очередного зависания.**
|
||||||
|
> Причина **не установлена**, логи прошлого запуска недоступны. Аптайм до ребута ≈ 26 ч, БД закрыта не чисто.
|
||||||
|
> Всё расследование, опровергнутые версии и единственный незакрытый вопрос — **[[family/tech/t610-hang-investigation]]**.
|
||||||
|
> После подъёма: **310 сущностей, 23 автоматизации (22 `on`, 1 `off` намеренно)**.
|
||||||
|
|
||||||
**Работает:**
|
**Работает:**
|
||||||
|
|
||||||
@@ -864,6 +880,9 @@ ssh root@192.168.2.176 'ha apps logs local_modbus-bridge | grep -E "Raw RTU|→
|
|||||||
|
|
||||||
**Открыто:**
|
**Открыто:**
|
||||||
|
|
||||||
|
- 🔴 **ЗАВИСАНИЯ ХОСТА — причина не установлена** (2026-09-17). Единственный незакрытый вопрос — интервал между зависаниями (стабильный аптайм = софт; хаотично = железо). Полностью: [[family/tech/t610-hang-investigation]].
|
||||||
|
- 🔴 **`recorder:` блока в `configuration.yaml` НЕТ ВООБЩЕ** — HA пишет всё подряд, дефолтные 10 дней, без `exclude`. БД 77 МБ + WAL 4.4 МБ. Кандидат на оптимизацию (НЕ «фикс зависания» — связь не доказана). Введение `exclude` ждёт апрува Alex.
|
||||||
|
- 🔴 **`MemTotal` живой = 1.44 ГБ**, в §3.9 зафиксировано 3.31 ГБ. Расхождение не объяснено, проверка (`dmesg e820` / `dmidecode`) не запущена. См. §3.9 и [[family/tech/t610-hang-investigation]] §3.1.
|
||||||
- 🔴 **Ориентация кадра камеры** — в `/addons/ustreamer/` стоит `transpose=1` (90° по часовой), счётчик лежит на бок. Нужен `transpose=2` + rebuild аддона.
|
- 🔴 **Ориентация кадра камеры** — в `/addons/ustreamer/` стоит `transpose=1` (90° по часовой), счётчик лежит на бок. Нужен `transpose=2` + rebuild аддона.
|
||||||
- 🔴 **Камера в HA не обновляется** — Generic Camera (`entry_id 01M2FX50K72X2RSYY549QSG3XP`, `camera.192_168_2_176`) смотрит на мёртвые адреса удалённого go2rtc: `still_image_url = http://192.168.2.176:1984/api/frame.jpeg` и `stream_source = rtsp://192.168.2.176:8554/...`. Менять на `http://192.168.2.176:8090/frame`, `stream_source` — пусто. Живёт в `/config/.storage/core.config_entries`, **не в `configuration.yaml`**. См. §4.
|
- 🔴 **Камера в HA не обновляется** — Generic Camera (`entry_id 01M2FX50K72X2RSYY549QSG3XP`, `camera.192_168_2_176`) смотрит на мёртвые адреса удалённого go2rtc: `still_image_url = http://192.168.2.176:1984/api/frame.jpeg` и `stream_source = rtsp://192.168.2.176:8554/...`. Менять на `http://192.168.2.176:8090/frame`, `stream_source` — пусто. Живёт в `/config/.storage/core.config_entries`, **не в `configuration.yaml`**. См. §4.
|
||||||
- ⚠️ **Осиротевший `/config/go2rtc.yaml`** (1085 байт) — go2rtc удалён, читать нечем.
|
- ⚠️ **Осиротевший `/config/go2rtc.yaml`** (1085 байт) — go2rtc удалён, читать нечем.
|
||||||
|
|||||||
@@ -0,0 +1,197 @@
|
|||||||
|
---
|
||||||
|
title: "🔴 t610: зависания — диагностика (незакрыто)"
|
||||||
|
aliases: [t610 hang, t610 зависание, t610 freeze, RCU stall investigation, MemTotal деградация]
|
||||||
|
tags: [family, tech, smarthome, t610, incident]
|
||||||
|
updated: 2026-09-17
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔴 t610 — зависания: состояние расследования
|
||||||
|
|
||||||
|
> **Статус: ПРИЧИНА НЕ УСТАНОВЛЕНА.** Сессия 2026-09-17. Ниже — что проверено фактом,
|
||||||
|
> что опровергнуто, и какой единственный вопрос остался невыясненным.
|
||||||
|
> Родительская дока: [[family/how-to/home-automation]] · §3.1 (RCU stall, закрыто), §3.5 (ограничения аддона), §3.9 (память).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Что произошло
|
||||||
|
|
||||||
|
Alex перезапустил t610 вручную (сброс питанием) **2026-09-17 ~09:38 +07**.
|
||||||
|
Хост поднялся заново; HA Core стартовал ~09:41–09:43.
|
||||||
|
|
||||||
|
**Факты о моменте смерти (из читаемого после ребута):**
|
||||||
|
|
||||||
|
| Наблюдение | Значение | Откуда |
|
||||||
|
|---|---|---|
|
||||||
|
| Журнал оборван на | `07:29–07:31` локально, внезапно, без последней строки | mtime `home-assistant_v2.db` = 07:29, `-wal` = 07:31 |
|
||||||
|
| БД закрыта чисто? | ❌ **НЕТ** — `The system could not validate that the sqlite3 database at //config/home-assistant_v2.db was shutdown cleanly` | `ha core logs` |
|
||||||
|
| Незакрытая сессия | `Ended unfinished session (id=36 from 2026-09-16 05:46:10)` | тam же |
|
||||||
|
| Аптайм до ребута | ≈ **26 ч** (сессия с 2026-09-16 05:46 → смерть 07:31) | тam же |
|
||||||
|
|
||||||
|
> 🔴 **Ключевой вывод:** процесс **не завершился сам** — БД не закрыта, журнал обрывается
|
||||||
|
> на полуслове. Система умерла без возможности корректного shutdown (RCU stall / hard freeze),
|
||||||
|
> а не упала по исключению.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. ⛔ Логи прошлого запуска — ДОСТУПА НЕТ (ограничение подтверждено)
|
||||||
|
|
||||||
|
Проверено повторно 2026-09-17, подтверждает [[family/how-to/home-automation]] §3.5:
|
||||||
|
|
||||||
|
| Источник | Результат |
|
||||||
|
|---|---|
|
||||||
|
| `ha core logs` | только **12 строк** текущего контейнера (s6-rc boot) |
|
||||||
|
| `/config/home-assistant.log.fault` | **0 байт** |
|
||||||
|
| `/config/home-assistant.log` | **не существует** |
|
||||||
|
| `journalctl -b -1` | пусто; `/var/log/journal` не существует |
|
||||||
|
| `ha supervisor logs` | только текущая загрузка (100 строк) |
|
||||||
|
|
||||||
|
> 📌 **Следствие, которое надо принять:** после **каждого** жёсткого зависания следы
|
||||||
|
> стираются. Диагноз надо ставить **до** перезагрузки, либо поднять ретенцию (см. §6).
|
||||||
|
> Это не «не нашёл» — это структурное свойство HAOS (журнал в RAM).
|
||||||
|
|
||||||
|
**Что спасло расследование:** журнал **событий** (логбук) лежит в `/config/home-assistant_v2.db`
|
||||||
|
и **пережил** ребут. Именно из него реконструирован профиль нагрузки до смерти.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Что проверено ФАКТОМ (данные после ребута)
|
||||||
|
|
||||||
|
### 3.1. Хост видит **1.44 ГБ**, не 3.31 ГБ — расхождение с докой
|
||||||
|
|
||||||
|
```
|
||||||
|
MemTotal: 1475788 kB ← 1.44 ГБ ← ЖИВОЙ ФАКТ 2026-09-17
|
||||||
|
MemFree: 18620 kB ← 18 МБ
|
||||||
|
MemAvailable: 758304 kB ← 740 МБ
|
||||||
|
Cached: 837992 kB
|
||||||
|
SwapTotal: 1024 МБ, used 0
|
||||||
|
```
|
||||||
|
|
||||||
|
> 🔴 **ЭТО ПРОТИВОРЕЧИТ [[family/how-to/home-automation]] §3.9**, где зафиксировано
|
||||||
|
> `MemTotal: 3 470 792 kB = 3.31 ГиБ` (проверено 2026-09-15).
|
||||||
|
>
|
||||||
|
> **Расхождение: 3.31 ГБ → 1.44 ГБ. Это НЕ объясняется округлением.**
|
||||||
|
>
|
||||||
|
> Гипотезы, которые осталось проверить (ни одна не подтверждена):
|
||||||
|
> 1. **Планка памяти деградировала/вынута/не детектится** со времени проверки 2026-09-15
|
||||||
|
> 2. Сменилась конфигурация UMA-фреймбуфера в BIOS
|
||||||
|
> 3. В §3.9 зафиксирована цифра **другого** аппарата/состояния
|
||||||
|
>
|
||||||
|
> **Проверка (только чтение, не запущена):**
|
||||||
|
> ```bash
|
||||||
|
> ssh root@192.168.2.176 'dmesg | grep -iE "e820|BIOS-provided|Memory:"'
|
||||||
|
> ssh root@192.168.2.176 'dmidecode -t memory 2>/dev/null | grep -E "Size|Locator"'
|
||||||
|
> ```
|
||||||
|
|
||||||
|
> ⚠️ **НЕ читать `MemFree` как «сколько всего памяти»** (питфоллы 44–45 в родительской доке).
|
||||||
|
> Alex видел «1 ГБ» на экране — вероятнее всего это `MemFree` в состоянии с большим файловым кэшем,
|
||||||
|
> **но** живой `MemTotal` 1.44 ГБ — это уже другой разговор, не округление.
|
||||||
|
|
||||||
|
### 3.2. Память по контейнерам (норма из доки, для сравнения)
|
||||||
|
|
||||||
|
`Node-RED 197 МБ` · `HA Core 212 МБ` · `Supervisor 77 МБ` · `modbus-bridge 20 МБ` ·
|
||||||
|
`Mosquitto 19 МБ` · `mbusd 0.8 МБ`. Большинство аддонов сейчас **stopped** (nodered, z2m).
|
||||||
|
|
||||||
|
### 3.3. Состояние HA после подъёма
|
||||||
|
|
||||||
|
| Метрика | Значение |
|
||||||
|
|---|---|
|
||||||
|
| Сущностей | 310 |
|
||||||
|
| Автоматизаций | **23** (22 `on`, 1 `off` намеренно) |
|
||||||
|
| Выключена намеренно | `automation.ventilation_automation_on` (`last_triggered` 2026-03-12) |
|
||||||
|
| `unavailable` (Zigbee) | 13 (блок `kitchen_hood`, `office_table_light_switch`, `bedroom/kitchen` light, `shower_2_presence_sensor`, `dushevaia_floor_temperature`) — **ZHA ещё догружается после холодного старта** |
|
||||||
|
| HA / HAOS | `2026.9.2` / HAOS `18.2` |
|
||||||
|
| Аддоны | `core_ssh` 10.4.0 (**апдейт до 10.5.0 доступен**), `core_mosquitto`, `local_mbusd`, `local_modbus-bridge`, `local_ustreamer` — started; `nodered`, `zigbee2mqtt` — stopped (как и должно) |
|
||||||
|
|
||||||
|
> ✅ **Холодный старт медленный, но штатный:** внешний `https://mallexxx.duckdns.org` начал
|
||||||
|
> отвечать только через **~1 минуту** после запуска Core. `http://192.168.2.176:8123` из LAN
|
||||||
|
> даёт `curl` exit 7 (недоступен) — **не поломка**, ходить только через duckdns (питфолл 1).
|
||||||
|
|
||||||
|
### 3.4. Профиль нагрузки перед смертью (из логбука, пережил ребут)
|
||||||
|
|
||||||
|
Замер на окне `06:30–07:40` локально: **1763 записи логбука**.
|
||||||
|
Доминировали template-сводки:
|
||||||
|
|
||||||
|
```
|
||||||
|
kids_summary / dining_summary / dining_air_summary / bedroom_summary
|
||||||
|
→ каждые ~5–10 секунд, круглосуточно
|
||||||
|
```
|
||||||
|
|
||||||
|
**Механизм (установлен):**
|
||||||
|
|
||||||
|
1. `sensor.kids_co2` / `bedroom_co2` / `dining_co2` — `platform: mqtt`, приходят от
|
||||||
|
`modbus-bridge` (сниффер ZONT-шины, `ha.url: http://localhost:8123`, `poll_interval: 15`);
|
||||||
|
**значение меняется каждый тик** (CO2 живой: 1677 → 1592 ppm за 9 мин).
|
||||||
|
2. В `/config/configuration.yaml:1172–1189` объявлены **template-сенсоры БЕЗ `trigger:`**:
|
||||||
|
```yaml
|
||||||
|
- name: kids_summary
|
||||||
|
state: "{{ states('sensor.kids_temperature')|round(0)|int }}° {{ states('sensor.kids_co2')|int }}ppm"
|
||||||
|
```
|
||||||
|
Без `trigger` такой сенсор пересчитывается **на любой `state_changed` в системе**, не только
|
||||||
|
на своих источниках.
|
||||||
|
3. Замер живьём: `sensor.kids_summary` — **53 изменения за 9 минут** (каждые ~5 с).
|
||||||
|
4. **`recorder:` блока в `configuration.yaml` НЕТ ВООБЩЕ** → запись всего подряд, дефолт 10 дней,
|
||||||
|
без `exclude`.
|
||||||
|
|
||||||
|
> ⚠️ **Статус версии: ОПРОВЕРГНУТА как причина (Alex, 2026-09-17).**
|
||||||
|
> «Это обычная работа HA пересчитывать датчики» — верно. Пересчёт шаблонов сам по себе
|
||||||
|
> **не вешает** систему. Нагрузка на БД реальна (77 МБ БД + WAL 4.4 МБ + поток записи),
|
||||||
|
> но **связь с зависанием НЕ доказана**. Записано как «контекст нагрузки», а не как причина.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. ⛔ Что ОПРОВЕРГНУТО (не повторять)
|
||||||
|
|
||||||
|
| Версия | Почему неверна |
|
||||||
|
|---|---|
|
||||||
|
| «Template-сенсоры без `trigger` вешают HA» | Alex: это штатная работа HA. Пересчёт — норма, не причина |
|
||||||
|
| «iGPU/UMA вырезал ~607 МБ из 2 ГБ» | Строилось на `MemTotal 1.44 ГБ` как «2 ГБ минус фреймбуфер». При **физически 1 ГБ** вырезать нечего |
|
||||||
|
| «`MemFree` 1 ГБ = кончилась память» | Питфоллы 44–45: `MemFree` падает из-за файлового кэша. Верные метрики — `MemTotal` + `MemAvailable` |
|
||||||
|
| «Логи есть, надо просто посмотреть внимательнее» | Их **нет** физически (§2). Проверено 5 источников |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. ❓ ЕДИНСТВЕННЫЙ НЕЗАКРЫТЫЙ ВОПРОС
|
||||||
|
|
||||||
|
Развилка, которая разводит два совершенно разных направления:
|
||||||
|
|
||||||
|
| Если… | То диагноз | Куда копать |
|
||||||
|
|---|---|---|
|
||||||
|
| Вешается **через примерно одинаковый аптайм** (~N часов) | Софт накапливает: утечка в процессе, рост БД, исчерпание ресурса | `recorder` + `exclude`, профилирование памяти по контейнерам во времени |
|
||||||
|
| Вешается **хаотично** | Железо: питание (блок/USB 500 мА), температура, HDD 5400 rpm, деградация планки RAM | `k10temp`, `pressure/io`, `dmesg \| grep -i usb`, `dmidecode` |
|
||||||
|
|
||||||
|
**Ответ Alex на этот вопрос — НЕ ПОЛУЧЕН.** Это следующее, что нужно выяснить.
|
||||||
|
|
||||||
|
Дополнительные вопросы, ответы на которые нужны:
|
||||||
|
- В момент зависания хост **отвечал вообще** (веб открывался, но тупил) или пропал полностью?
|
||||||
|
- Это какой по счёту раз? Есть ли даты предыдущих зависаний?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. 📋 Предложение (НЕ одобрено, НЕ внедрено)
|
||||||
|
|
||||||
|
> ⛔ **Ничего из этого не применено.** План-first: ждёт апрува Alex.
|
||||||
|
> Правки `configuration.yaml` — только через патч + показ диффа → апрув → заливка → проверка Alex'ом.
|
||||||
|
|
||||||
|
1. **Сбор метрик, переживающий перезагрузку** — раз в минуту писать в файл на `/mnt/data`:
|
||||||
|
`MemTotal`/`MemAvailable`/`MemFree`, load, `pressure/io`+`pressure/memory`, `k10temp`,
|
||||||
|
размер БД+WAL, аптайм. **Это то, что даст версию к следующему зависанию** — сейчас каждый
|
||||||
|
инцидент стирает свои следы.
|
||||||
|
2. **`recorder:` с `exclude`** — исключить `sensor.*_summary`, `at2_*_summary`, `update.*`,
|
||||||
|
`button.*_identify`, `event.*`. Снижает нагрузку на БД. **Не «фикс зависания»** — отдельное улучшение.
|
||||||
|
3. **Включить watchdog `local_ustreamer`** — единственный аддон без watchdog (§3.7 родительской доки).
|
||||||
|
4. **Обновить `core_ssh`** 10.4.0 → 10.5.0.
|
||||||
|
|
||||||
|
> 📌 Версия **«что именно вешает»** появится **только после п.1**. Без ретенции расследование
|
||||||
|
> упирается в §2 и превращается в перебор гипотез.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Питфоллы сессии (дополнение к родительской доке)
|
||||||
|
|
||||||
|
| # | Питфолл | Обход |
|
||||||
|
|---|---|---|
|
||||||
|
| 53 | 🔴 **Журнал прошлого запуска недоступен ПОСЛЕ жёсткого зависания** — подтверждено повторно, 5 источников пусты | Ставить диагноз ДО ребута, либо ретенция (§6.1). Логбук в `home-assistant_v2.db` **переживает** ребут — использовать его |
|
||||||
|
| 54 | ⚠️ **`ha core logs` показывает только текущий контейнер** (12 строк s6-rc), не историю | Не искать «старые строки» — их нет |
|
||||||
|
| 55 | ⚠️ **`MemTotal` может расходиться с докой** — живой факт `1.44 ГБ` против зафиксированных `3.31 ГБ` (§3.9 родительской доки) | Всегда перемерять `head -3 /proc/meminfo` при разборе инцидента, не полагаться на записанное |
|
||||||
|
| 56 | 🔴 **`http://192.168.2.176:8123` из LAN → `curl` exit 7, хоть хост жив** | Единственный путь к API — `https://mallexxx.duckdns.org`. Совпадает с питфоллом 1 |
|
||||||
|
| 57 | ⚠️ **После холодного старта ZHA догружается**: часть сущностей минуты висит `unavailable` | Не спешить с выводом «устройства отвалились» — перемерить через 2–3 мин. Первый снимок дал 75 сущностей, полный — 310 |
|
||||||
Reference in New Issue
Block a user