168 lines
4.6 KiB
Markdown
Executable File
168 lines
4.6 KiB
Markdown
Executable File
# Wall Panel
|
||
|
||
Таблет-ориентированная панель для Home Assistant на `PHP + HTML + JS`.
|
||
Основной HA-способ запуска теперь `Home Assistant Add-on` с ingress и отдельным портом.
|
||
|
||
## Запуск
|
||
|
||
```bash
|
||
php -S 0.0.0.0:8080
|
||
```
|
||
|
||
Откройте `http://localhost:8080`.
|
||
|
||
## Конфиг
|
||
|
||
Основной файл:
|
||
|
||
- [`config/config.json`](config/config.json)
|
||
|
||
В него кладутся:
|
||
|
||
- `home_assistant.base_url`
|
||
- `home_assistant.token`
|
||
- `camera.rtsp_url`
|
||
- `camera.stream_url`
|
||
- `camera.poster_url`
|
||
- `rooms`
|
||
|
||
Если `base_url` и `token` пустые, панель работает в demo mode с тестовыми карточками.
|
||
|
||
## Home Assistant Add-on
|
||
|
||
Для HA теперь рекомендован add-on-режим:
|
||
|
||
- запускает тот же PHP-интерфейс внутри Supervisor;
|
||
- открывается через ingress;
|
||
- доступен через отдельный порт;
|
||
- хранит конфиг в add-on volume;
|
||
- не зависит от `custom_components`.
|
||
|
||
Файлы add-on лежат в папке:
|
||
|
||
- [`wall_panel/config.yaml`](/Volumes/web/wallpanell/wall_panel/config.yaml)
|
||
- [`wall_panel/Dockerfile`](/Volumes/web/wallpanell/wall_panel/Dockerfile)
|
||
- [`wall_panel/run.sh`](/Volumes/web/wallpanell/wall_panel/run.sh)
|
||
- [`repository.yaml`](/Volumes/web/wallpanell/repository.yaml)
|
||
|
||
### Как использовать
|
||
|
||
1. Добавьте Git URL репозитория в Home Assistant как add-on repository.
|
||
2. Установите add-on.
|
||
3. Запустите его.
|
||
4. Откройте панель через ingress или через проброшенный порт `8099/tcp`.
|
||
|
||
### Конфигурация
|
||
|
||
Add-on использует persistent config file:
|
||
|
||
- `/homeassistant/wall_panel/config.json` внутри контейнера
|
||
- на хосте Home Assistant это будет `/config/wall_panel/config.json`
|
||
|
||
Этот файл является runtime source of truth для панели в HA-режиме и переживает рестарт add-on.
|
||
|
||
Настройки, внесённые через add-on UI Home Assistant, используются только как bootstrap при первом создании файла. Дальше редактируйте именно этот файл.
|
||
|
||
Частые настройки можно менять прямо из UI add-on в Home Assistant:
|
||
|
||
- `app.title`
|
||
- `app.poll_interval_ms`
|
||
- `app.main_room_name`
|
||
- `app.main_room_icon`
|
||
- `app.edit_mode`
|
||
- `app.battery_history_hours`
|
||
- `home_assistant.base_url`
|
||
- `home_assistant.token`
|
||
- `home_assistant.verify_ssl`
|
||
- `home_assistant.weather_entity_id`
|
||
- `camera.rtsp_url`
|
||
- `camera.stream_url`
|
||
- `camera.stream_mode`
|
||
- `camera.poster_url`
|
||
- `camera.popup_timeout_minutes`
|
||
|
||
Сложные структуры, вроде `rooms`, по-прежнему удобнее держать в JSON.
|
||
|
||
Внутренний runtime cache add-on хранит в `/data/wall_panel`.
|
||
|
||
### Старый embed-режим
|
||
|
||
Отдельный PHP-доступ по-прежнему работает:
|
||
|
||
`http://YOUR_PANEL_HOST/index.php?embed=1`
|
||
|
||
Это полезно, если вы запускаете панель вне HA или хотите iframe-карточку вручную.
|
||
|
||
## Popup камеры
|
||
|
||
Для браузера нужен не прямой `rtsp://`, а bridge, который отдаёт `HLS` или `WebRTC`.
|
||
|
||
Popup открывается через endpoint:
|
||
|
||
```bash
|
||
POST /api.php?action=popup
|
||
{
|
||
"sensor_entity_id": "binary_sensor.doorbell_all_occupancy",
|
||
"state": "on"
|
||
}
|
||
```
|
||
|
||
Закрытие:
|
||
|
||
```bash
|
||
POST /api.php?action=popup
|
||
{
|
||
"sensor_entity_id": "binary_sensor.doorbell_all_occupancy",
|
||
"state": "off"
|
||
}
|
||
```
|
||
|
||
## Room overrides
|
||
|
||
Для комнаты можно сохранять overrides через:
|
||
|
||
```bash
|
||
POST /api.php?action=save-entity-override
|
||
{
|
||
"room_id": "living_room",
|
||
"entity_id": "light.living_room_main",
|
||
"visible": true,
|
||
"order": 10,
|
||
"card_type": "toggle",
|
||
"title": "Основной свет",
|
||
"icon": "mdi:ceiling-light"
|
||
}
|
||
```
|
||
|
||
## Empty room slots
|
||
|
||
Для desktop-раскладки можно создавать пустые слоты:
|
||
|
||
```bash
|
||
POST /api.php?action=create-room-layout-item
|
||
{
|
||
"room_id": "living_room"
|
||
}
|
||
```
|
||
|
||
Перемещение:
|
||
|
||
```bash
|
||
POST /api.php?action=save-room-layout-item
|
||
{
|
||
"room_id": "living_room",
|
||
"layout_item_id": "slot_xxx",
|
||
"order": 120
|
||
}
|
||
```
|
||
|
||
Удаление:
|
||
|
||
```bash
|
||
POST /api.php?action=delete-room-layout-item
|
||
{
|
||
"room_id": "living_room",
|
||
"layout_item_id": "slot_xxx"
|
||
}
|
||
```
|