Roon Controller
Control Roon music player through Roon API with automatic Core discovery and zone filtering. Supports play/pause, next/previous track, and current track query. Automatically finds Muspi zones. Support
Control Roon music player through Roon API with automatic Core discovery and zone filtering. Supports play/pause, next/previous track, and current track query. Automatically finds Muspi zones. Support
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Control the Roon music player with Chinese command support.
pip install roonapi
from roon_controller import RoonControllerCreate controller (token will be saved automatically)
controller = RoonController(verbose=True)
Play/Pause
result = controller.play_pause()
Next track
result = controller.next()
Get current track
track_info = controller.get_current_track() print(f"Now playing: {track_info['track']}")
~/clawd/roon_config.jsonset_zone() to switch zones programmaticallySwitch Zone
result = controller.set_zone("Living Room") # {"success": True, "message": "Switched to zone: Living Room", "zone": "Living Room"}
Get Current Zone
zone = controller.get_current_zone() # Returns zone info dict with zone_id and zone_data
Play
result = controller.play() # {"success": True, "message": "Playback started", "zone": "Living Room Muspi"}
Pause
result = controller.pause() # {"success": True, "message": "Paused", "zone": "Living Room Muspi"}
Play/Pause Toggle
result = controller.play_pause()
Previous Track
result = controller.previous()
Next Track
result = controller.next()
track_info = controller.get_current_track() # Returns: # { # "success": True, # "is_playing": True, # "zone": "Living Room Muspi", # "track": "Bohemian Rhapsody", # "artist": "Queen", # "album": "A Night at the Opera", # "seek_position": 12345, # milliseconds # "length": 354000 # milliseconds # }
zones = controller.list_zones() # ["Living Room Muspi", "Kitchen", "Bedroom"]
The script can be used as a command line tool:
# Play python roon_controller.py playPause
python roon_controller.py pause
Previous track
python roon_controller.py prev
Next track
python roon_controller.py next
View current track
python roon_controller.py status
List all zones
python roon_controller.py zones -v
switch zone
python roon_controller.py switch zonename
The skill supports the following Chinese trigger words:
| Command | Meaning | Example |
|---|---|---|
| 音乐播放 / 播放音乐 | Start playback | "音乐播放" |
| 暂停 / 暂停播放 | Pause playback | "暂停一下" |
| 下一曲 / 切歌 | Next track | "下一曲" |
| 上一曲 | Previous track | "上一曲" |
| 当前曲目 / 正在放什么 | View current track | "当前曲目" |
All methods return a unified dictionary structure:
{ "success": True/False, "message": "Operation result description", "zone": "Zone name (optional)" }
~/clawd/roon_config.json, ensure secure file permissionsroonapi>=0.1.6: Official Roon API Python library~/clawd/roon_config.json# Find all zones zones = roon.zonesFilter zones with muspi suffix
muspi_zones = [ (zone_id, zone_data) for zone_id, zone_data in zones.items() if zone_data['display_name'].lower().endswith('muspi') ]
Use the first matching zone
zone_id, zone_data = muspi_zones[0]
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.