# 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/wall_panel_config.json` внутри контейнера - на хосте Home Assistant это будет `/config/wall_panel/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`. Если Home Assistant открыт по `https://`, custom component ждёт ingress URL add-on и встраивает его только после того, как add-on сам его зарегистрирует. Это убирает mixed content и не требует внешнего `http://`-доступа. ### Старый 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" } ```