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.