Skill Details
Back to Skills

/devialet

by jgm2025

Control Devialet Phantom speakers via HTTP API. Use for: play/pause, volume control, mute/unmute, source selection, and speaker status. Requires DOS 2.14+ firmware. Works with Phantom I, Phantom II, P

View on GitHub

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

  1. Find your speaker's IP address (check router or Devialet app)
  2. Set the DEVIALET_IP environment variable, or add to TOOLS.md:
    ## Devialet Speaker
    - IP: 192.168.x.x
    
  3. 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
    • playerctl and xdotool installed (sudo apt install playerctl xdotool)
    • Speaker set as Spotify Connect device (select once in Spotify app)

How It Works

  1. Searches for track via Spotify desktop app (D-Bus/MPRIS)
  2. Opens track URI in Spotify
  3. Spotify Connect streams to Devialet
  4. 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.