[2026-09-15] eagle: family/how-to/home-automation.md family/plans/t610-heating-cable-automation.md family/tech/ha-registry-operations.md family/tech/heating-cable-water-inlet.md
This commit is contained in:
@@ -3,9 +3,9 @@ title: "Греющий кабель ввода воды — порог вклю
|
||||
aliases: [Греющий кабель, heating_cable_plug, ввод воды, промерзание, обогрев водопровода]
|
||||
type: tech
|
||||
namespace: family
|
||||
status: 🟢 Решения приняты (саморег, выдержка **12 ч**). Конструкция определена. Автоматизация НЕ создана — ждёт решения Alex по типу helper'а
|
||||
status: 🟢 Решения приняты (саморег, выдержка **12 ч**). **Конструкция определена: 0 helper'ов** — прогноз берётся `action: weather.get_forecasts` + `response_variable`. Автоматизация НЕ создана — ждёт решения Alex по реализации выдержки 12 ч (вариант A/B)
|
||||
created: '2026-09-16'
|
||||
updated: '2026-09-16'
|
||||
updated: '2026-09-16 (конструкция пересмотрена: input_number/helper НЕ нужен — отменён; прогноз работает как ДЕЙСТВИЕ автоматизации)'
|
||||
tags:
|
||||
- family
|
||||
- smarthome
|
||||
@@ -183,42 +183,53 @@ t_расч = min( ZONT_улица , min(прогноз на 24 ч вперёд)
|
||||
- [x] ~~Определить тип кабеля~~ → **саморегулирующийся** (Alex, 2026-09-16).
|
||||
- [x] ~~Найти источник внешнего прогноза~~ → `weather.forecast_laki_dom` + WS `weather/subscribe_forecast` (см. §8).
|
||||
- [x] ~~Решить выдержку~~ → **12 ч** (Alex, 2026-09-16).
|
||||
- [x] ~~Понять, как подставить прогноз в триггер~~ → **нельзя через Jinja**, нужен `input_number` + обновлятор (§8.1).
|
||||
- [ ] **⚠️ БЛОКЕР: решить тип helper'а** — Storage (UI) или YAML (`configuration.yaml`). Ждёт ответа Alex.
|
||||
- [ ] **Создать 6 объектов** по плану [[family/plans/t610-heating-cable-automation]] (бэкап `automations.yaml` — ✅ сделан).
|
||||
- [x] ~~Понять, как подставить прогноз в триггер~~ → **как ДЕЙСТВИЕ** `action: weather.get_forecasts` + `response_variable`, внутри `actions:`. Helper'ы НЕ нужны (§8.1).
|
||||
- [ ] **⚠️ БЛОКЕР: решить реализацию выдержки 12 ч** — вариант A (`numeric_state` + `for` на ZONT) или **B** (`for: 12:00:00` на `switch.heating_cable_plug`, рекомендован). Ждёт ответа Alex.
|
||||
- [ ] **Создать 1 автоматизацию** `automation.heating_cable_ctl` (заготовка `~/tmp-t610/new_cable_autos.yaml`, YAML валиден; бэкап `automations.yaml` — ✅ сделан).
|
||||
- [ ] Опционально: датчик температуры **на самой трубе** в бетоне — тогда порог снимаем с трубы, а не по воздуху (точнее, снимает неопределённость модели §4).
|
||||
- [ ] Проверить в ZONT, нужен ли ему отдельный виртуальный slave под греющий кабель (сейчас управление идёт через Zigbee-розетку, ZONT в контур не включён).
|
||||
- [ ] Обновить [[family/how-to/ha-automations]] — карта автоматизаций (сейчас 24 шт.; после выполнения станет 27).
|
||||
- [ ] Обновить [[family/how-to/ha-automations]] — карта автоматизаций (сейчас 24 шт.; после выполнения станет 25).
|
||||
|
||||
---
|
||||
|
||||
## 8. 🔴 API прогноза погоды в HA 2026.9.2
|
||||
|
||||
### 8.1. Главное: прогноз НЕДОСТУПЕН ИЗ ШАБЛОНА
|
||||
### 8.1. Прогноз: НЕ из шаблона, а ДЕЙСТВИЕМ автоматизации
|
||||
|
||||
Проверено четырьмя способами 2026-09-16:
|
||||
Проверено пятью способами 2026-09-16:
|
||||
|
||||
| Способ | Результат |
|
||||
|---|---|
|
||||
| атрибут `forecast` у `weather.forecast_laki_dom` | **`None`** — прогноза в атрибутах нет |
|
||||
| `weather.get_forecasts(...)` **в Jinja-шаблоне** | **`UndefinedError: 'weather' is undefined`** |
|
||||
| `weather.get_forecasts` **как действие** (`action:` + `response_variable`) | ✅ **работает** — 48 точек |
|
||||
| сервис `weather.get_forecasts` (мн. число), REST/WS | ✅ **работает** — 48 ч + 6 дней |
|
||||
| WS `weather/subscribe_forecast` | ✅ **работает** |
|
||||
| WS `weather/subscribe_forecast` | ✅ **работает** (для стрима/CLI) |
|
||||
|
||||
> 🔴 **Вызов сервисов из шаблонов (`weather.get_forecasts(...)` в Jinja) в этой версии убран.** Попытка даёт `'weather' is undefined`. Значит **пороги нельзя написать шаблоном «на лету»** — прогноз надо **материализовать в сущность** (`input_number`), иначе в триггер автоматизации его не подставить.
|
||||
> ✅ **РАБОЧИЙ ПУТЬ: `action: weather.get_forecasts` с `response_variable`.**
|
||||
> Внутри `actions:` результат доступен последующим `variables:` и `choose:`.
|
||||
> **Никаких helper'ов / `input_number` / template-сенсоров не требуется.**
|
||||
>
|
||||
> ```yaml
|
||||
> actions:
|
||||
> - action: weather.get_forecasts
|
||||
> target: {entity_id: weather.forecast_laki_dom}
|
||||
> data: {type: hourly}
|
||||
> response_variable: wx
|
||||
> - variables:
|
||||
> fc_min: >-
|
||||
> {{ wx['weather.forecast_laki_dom']['forecast'][:24]
|
||||
> | map(attribute='temperature') | min | default(99) | float(99) }}
|
||||
> ```
|
||||
>
|
||||
> 🔴 **`variables:` вычисляются ДО действий** — объявлять вычисления от
|
||||
> `response_variable` только ВНУТРИ `actions:`, после вызова сервиса.
|
||||
|
||||
**Рабочая конструкция — слой обновления (см. план):**
|
||||
|
||||
```
|
||||
automation.heating_cable_forecast_update (каждый час)
|
||||
→ weather.get_forecasts('weather.forecast_laki_dom','hourly')
|
||||
→ min(map(attribute='temperature')[:24])
|
||||
→ input_number.heating_cable_forecast_min
|
||||
|
||||
sensor.heating_cable_outside_min_24h (template, §8.1 недоступен Jinja-вызов)
|
||||
→ min( sensor.h2000_pro_temperatura_ulitsa ,
|
||||
input_number.heating_cable_forecast_min )
|
||||
```
|
||||
> 🔴 **Урок (две итерации):** сначала я проверил только Jinja-форму вызова
|
||||
> (`{{ weather.get_forecasts(...) }}` → `'weather' is undefined`) и заключил
|
||||
> «прогноз недоступен шаблону → нужен `input_number` + обновлятор». **Это была
|
||||
> ошибка:** штатный путь — вызов как **действие**, он работает. Прежде чем строить
|
||||
> обходной слой, проверь штатный вариант целиком.
|
||||
|
||||
### 8.2. Имена — множественное число
|
||||
|
||||
|
||||
Reference in New Issue
Block a user