Skip to content

dr34ming/ha_remote_kiosk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ha_remote_kiosk

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.

Architecture

                        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)

Installation

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

Configuration

media_player:
  - platform: remote_kiosk
    kiosks:
      - hostname: bedroom
      - hostname: lounge

Each hostname maps to MQTT topics under kiosk/{hostname}/.

MQTT Protocol

This is the contract between the HA component and any kiosk daemon implementation.

Command topic (HA publishes)

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

State topics (daemon publishes)

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}]}

Features

  • 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)

License

MIT


Part of the dr34ming ecosystem — personal infrastructure for homes that think.

About

Home Assistant custom component: control kiosk displays as media players via MQTT

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages