Devialet Speaker Control
Control Devialet speakers (Phantom, Mania) over your local network with Spotify integration.
Natural Language Commands
When the user says things like:
"Play Nines - Lick Shots on my speaker" → Search and play via Spotify
"Set speaker volume to 40" → Adjust volume
"Pause the music" → Pause playback
"What's playing?" → Check current track and status
Setup
Find your speaker's IP address (check router or Devialet app)
Set the
DEVIALET_IPenvironment variable, or add toTOOLS.md: ```Devialet Speaker
- IP: 192.168.x.x ```
For Spotify integration: install Spotify desktop app, playerctl, and xdotool
Quick Usage
# Set your speaker IP
export DEVIALET_IP="192.168.x.x"
# Play a song (search and play)
./scripts/play-on-devialet.sh "Drake - God's Plan"
# Play by Spotify URI
./scripts/play-on-devialet.sh spotify:track:4YZNJOA9d8wiO5ELNY5WxC
# Pause / Resume
./scripts/play-on-devialet.sh pause
./scripts/play-on-devialet.sh resume
# Volume
./scripts/play-on-devialet.sh volume 50
# Status
./scripts/play-on-devialet.sh status
Requirements
Devialet speaker with DOS 2.14+ or SDOS 1.3+ firmware
Spotify integration (optional):
- Spotify desktop app running and logged in
playerctlandxdotoolinstalled (sudo apt install playerctl xdotool)- Speaker set as Spotify Connect device (select once in Spotify app)
How It Works
Searches for track via Spotify desktop app (D-Bus/MPRIS)
Opens track URI in Spotify
Spotify Connect streams to Devialet
Devialet API controls playback/volume
Direct Devialet API
For non-Spotify control (replace $DEVIALET_IP with your speaker's IP):
# Volume (0-100)
curl -X POST -H "Content-Type: application/json" \
-d '{"volume": 50}' \
"http://$DEVIALET_IP/ipcontrol/v1/systems/current/sources/current/soundControl/volume"
# Play/Pause
curl -X POST "http://$DEVIALET_IP/ipcontrol/v1/groups/current/sources/current/playback/play"
curl -X POST "http://$DEVIALET_IP/ipcontrol/v1/groups/current/sources/current/playback/pause"
# Mute/Unmute
curl -X POST "http://$DEVIALET_IP/ipcontrol/v1/groups/current/sources/current/playback/mute"
curl -X POST "http://$DEVIALET_IP/ipcontrol/v1/groups/current/sources/current/playback/unmute"
# Get status
curl -s "http://$DEVIALET_IP/ipcontrol/v1/devices/current" | jq .
Supported Models
Phantom I, Phantom II, Phantom Reactor (DOS 2.14+)
Dialog
Mania (SDOS 1.3+)
API Reference
See references/api.md for complete endpoint documentation.