A Home Assistant custom component that turns any machine running a kiosk daemon into a controllable media player. Navigate to URLs, play media, manage playlists — all through HA's native media player interface.
MQTT
Home Assistant ←─────────────→ Kiosk Daemon ←→ Chrome / mpv
│ │
│ publish │ subscribe
│ kiosk/{host}/command ────→ │
│ │
│ subscribe │ publish
│ ←──── kiosk/{host}/state │ (idle|playing|paused)
│ ←──── kiosk/{host}/attributes (JSON)
│ ←──── kiosk/{host}/availability (online|offline)
│ ←──── kiosk/{host}/browse (JSON directory listing)
Manual:
Copy custom_components/remote_kiosk/ to your Home Assistant config/custom_components/ directory.
HACS:
Add this repository as a custom repository in HACS: https://github.com/dr34ming/ha_remote_kiosk
media_player:
- platform: remote_kiosk
kiosks:
- hostname: bedroom
- hostname: loungeEach hostname maps to MQTT topics under kiosk/{hostname}/.
This is the contract between the HA component and any kiosk daemon implementation.
Topic: kiosk/{hostname}/command
| Payload | Description |
|---|---|
play |
Resume playback |
pause |
Pause playback |
stop |
Stop and return to idle |
next |
Advance to next playlist item |
{"command": "navigate", "url": "..."} |
Open URL in browser |
{"command": "playlist", "scenes": [...]} |
Load a playlist of scenes |
{"command": "play", "src": "...", "type": "..."} |
Play a specific media file |
{"command": "list_media", "path": "..."} |
Request directory listing |
| Topic | Payload |
|---|---|
kiosk/{hostname}/state |
idle, playing, or paused |
kiosk/{hostname}/attributes |
JSON: current_scene, current_idx, total_scenes, playlist_loaded, uptime_seconds |
kiosk/{hostname}/availability |
online or offline (use as MQTT LWT) |
kiosk/{hostname}/browse |
JSON response to list_media: {"path": "...", "items": [{"name": "...", "path": "...", "is_dir": bool}]} |
- play_media with URLs, playlists (JSON scene arrays), or direct file paths
- Media browser for remote filesystem navigation via MQTT request/response
- Standard transport controls: play, pause, stop, next track
- Per-kiosk state tracking with availability detection
- File extension to media type mapping for browse UI (video, image, music)
MIT
Part of the dr34ming ecosystem — personal infrastructure for homes that think.