Files
home-assistant-tools/README.md
T

170 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Home Assistant Tools for Open WebUI
Инструменты для управления умным домом через Home Assistant REST API с интерпретацией естественного языка.
## Возможности
### Управление (`smart`)
- Свет (вкл/выкл, яркость, цветовая температура)
- Розетки, реле, выключатели
- Климат (температура, режимы нагрев/охлаждение)
- Медиа (плей/пауза, громкость, переключение треков)
- Шторы и жалюзи
- Замки
- Вентиляторы
- Роботы-пылесосы
- Кнопки (button.press)
- **Сцены** (scene.turn_on) и скрипты
- **Переименование сущностей** (NL: «переименуй сертификат в Обновление SSL»)
- **Включение/выключение автоматизаций** (NL: «выключи автоматизацию Гирлянда»)
### Мониторинг (`smart` — ответы на вопросы)
- Какие окна/двери открыты (с показом «Неизвестно»)
- Что горит лишнего
- Какая температура в комнатах (только реальные термометры)
- Качество воздуха (TVOC, CO2, PM2.5/10, влажность)
- Где есть движение прямо сейчас
- Какие батарейки садятся
- Что сейчас играет
- Кто дома
- **Что в розетках включено**
- **Системный статус** (бэкапы, обновления, ноды, мосты)
- Общий отчёт одной фразой
### Диагностика (`list_devices`)
- Полный список устройств по доменам
- Фильтр по `device_class` (door, window, motion, battery, ...)
- Фильтр по состоянию (`on`, `off`, `open`, `closed`, `unavailable`, ...)
- Скрытие `unavailable` / `unknown`
- Спецкатегория `domain="window_door"` для окон и дверей (строгий фильтр)
- NL-маршрутизация: «покажи все binary_sensor» → `list_devices(domain="binary_sensor")`
### Управление автоматизациями (отдельные инструменты)
- `rename_entity` — переименовать любую сущность
- `toggle_automation` — включить/выключить автоматизацию
- `trigger_automation` — запустить автоматизацию вручную
## Установка
### Просто скопировать
1. Открой файл в Gitea:
https://gitea.nasweb.ru/host/home-assistant-tools/src/branch/main/home_assistant_tools.py
2. Нажми кнопку **Raw** (справа вверху) — откроется plain text
3. Скопируй всё (`Ctrl+A``Ctrl+C`)
4. В Open WebUI: **Workspace → Tools → + Новый инструмент**
5. Вставь код (`Ctrl+V` или долгое нажатие → "Вставить") и сохрани
### Создание токена Home Assistant
1. Откройте HA (https://ha.nasweb.ru) → **Профиль** (левый нижний угол)
2. Прокрутите вниз до **Long-Lived Access Tokens**
3. **Create Token**, имя — `open-webui`
4. **Скопируйте токен** (покажется один раз)
## Настройка Valves
После импорта инструмента откройте его настройки (⚙️) и укажи:
| Параметр | Значение | По умолчанию |
|---|---|---|
| `ha_url` | URL вашего HA | `https://ha.nasweb.ru` |
| `ha_token` | Long-Lived Token из шага выше | (пусто) |
| `verify_ssl` | Проверять SSL: `false` для самоподписанных | `false` |
| `request_timeout` | Таймаут HTTP, сек | `10` |
| `max_retries` | Количество ретраев | `2` |
| `cache_ttl` | TTL кэша состояний, сек | `5` |
| `confirm_global_actions` | Спрашивать подтверждение для «выключи весь свет» | `true` |
| `dry_run` | Только показывать, не выполнять | `false` |
## Включение для пользователя
Open WebUI → **Settings → Interface → Tools** → включите `Home Assistant Smart Control`.
## Примеры команд
### Управление
```
включи свет в спальне
выключи весь свет
поставь 23 градуса в детской
открой шторы в гостиной
пауза музыки
громче
запусти сцену вечерний отдых
включи свет на 50%
уютный свет в спальне
нажми кнопку в спальне
```
### Управление автоматизациями
```
переименуй сертификат в Обновление SSL
переименуй automation.сертификат в Обновление SSL
выключи автоматизацию Гирлянда крыльцо
включи автоматизацию Свет в спальне
триггерни автоматизацию Вентиляция душевая
```
### Мониторинг
```
какие окна открыты?
что горит лишнего?
какая температура в спальне?
как воздух в квартире?
где сейчас движение?
батарейки садятся?
кто дома?
что в розетках включено?
как система? есть обновления?
что сейчас играет?
отчёт по дому
```
### Диагностика (отдельный инструмент `list_devices`)
LLM может вызвать инструмент `list_devices` с параметрами, например:
```
list_devices() # все устройства
list_devices(domain="binary_sensor") # все бинарные датчики
list_devices(domain="window_door") # только окна/двери
list_devices(device_class="battery") # только батарейки
list_devices(only_with_state="unavailable") # все offline
list_devices(show_unavailable=False) # скрыть offline
```
Или попросить LLM в чате:
```
покажи все binary_sensor
список устройств
какие устройства есть в HA?
```
## Безопасность
- Токен HA хранится в **Valves** Open WebUI, не в коде
- Глобальные команды («выключи весь свет») требуют подтверждения
- Ошибки на одной сущности не валят весь сценарий
- HTTP-запросы с ретраями и таймаутами
- Поддержка HTTPS с опцией отключения проверки сертификата
## Версионирование
- **v2.5.2** — фикс порядка блоков («батарейки» → в батареи, не в климат), фикс форматирования state+unit, список «Неизвестно», мониторинг розеток, системный статус (бэкапы/обновления), поддержка scene
- **v2.5.1** — строгий фильтр окон/дверей только по device_class
- **v2.5.0** — `rename_entity`, `toggle_automation`, `trigger_automation` + NL-маршрутизация
- **v2.4.0** — мониторинг воздуха (TVOC, CO2, влажность), движения, исправлен баг батареек, маршрутизация «покажи» в list_devices, поддержка кнопок, общий «отчёт»
- **v2.3.0** — добавлен инструмент `list_devices` для диагностики и инвентаризации
- **v2.2.2** — восстановлен полный код после повреждения при обновлении
- **v2.2.1** — HTTPS по умолчанию, verify_ssl в Valves
- **v2.2.0** — мониторинг (окна, свет, климат, батарейки, медиа, присутствие), dry-run, ретраи, кэш
- **v2.0.0** — базовое управление светом, климатом, медиа, шторами
## Лицензия
MIT