Files
mark 96429e6b29 chore: add GPL-3.0-only license (#3)
* chore: add GPL-3.0 license

* docs: clarify GPL-3.0-only licensing
2026-07-19 21:21:01 -05:00

67 lines
2.6 KiB
Markdown

# RelayTV Home Assistant Integration
This integration provides a RelayTV `media_player` entity, RelayTV service actions, and an optional Home Assistant sidebar panel embedding RelayTV UI.
## Implemented Behavior
- `media_player` platform is enabled (`custom_components/relaytv/media_player.py`).
- Hybrid state updates:
- bootstrap/reconnect uses RelayTV `GET /status`
- RelayTV `GET /ui/events` SSE provides hot-state updates
- `status` events are treated as authoritative full snapshots
- `playback` / `queue` / `jellyfin` events trigger fast updates or targeted refreshes
- Sidebar panel is registered via Home Assistant frontend iframe panel APIs.
- Optional bearer-token authentication is validated during setup and supports
Home Assistant reauthentication.
- Credential-bearing query parameters are removed from entity state and
persisted resume keys.
- RelayTV services are registered from `services.yaml`:
- `smart_url`
- `play_now`
- `announce`
- `play_temporary`
- `overlay`
- `play_synced`
- `snapshot`
- `play_with_resume`
- `upload_media`
- `upload_media_play`
- `upload_media_enqueue`
## Setup
1. Place this folder at:
`/config/custom_components/relaytv/`
2. Restart Home Assistant.
3. Add integration: **Settings -> Devices & Services -> Add Integration -> RelayTV**.
4. Provide RelayTV base URL (example: `http://relaytv-host:8787`), a
server/display name, and the optional RelayTV API token.
## Options
- `panel_enabled`
- `panel_target_entry_id`
- `sensor_stream_mappings`
## Notes
- `smart_url` uses RelayTV `POST /smart`, which enqueues while already playing and otherwise starts playback immediately.
- `play_now` and `announce` currently target RelayTV `POST /play`.
- RelayTV also exposes `POST /play_now`, but this integration does not currently use its preserve-current behavior.
- Upload services target RelayTV `POST /ingest/media`, `POST /ingest/media/play`, and `POST /ingest/media/enqueue`.
- Upload services accept either a Home Assistant local media source selection or an allowlisted `file_path` visible inside the Home Assistant container.
- Overlay requires `text` or `image_url`.
- Snapshot requires active playback on the RelayTV server.
- Snapshot responses are normalized to absolute URLs for Home Assistant entity attributes.
- The integration keeps `/status` as bootstrap/fallback and does not treat `/ui/events` as a replay log.
- Version 0.4.0 requires Home Assistant 2026.7 or newer.
For fuller documentation and examples, see the repository root README.
## License
RelayTV Home Assistant is licensed under the GNU General Public License,
version 3 only (`GPL-3.0-only`). See the repository root `LICENSE` file.