# SoundTouch CLI Reference **Complete command reference for the soundtouch-cli tool** This document provides comprehensive documentation for all available commands and options in the `soundtouch-cli` tool. ## Overview The SoundTouch CLI uses a hierarchical command structure with subcommands for different operations: ```bash soundtouch-cli [global-flags] [command-flags] [subcommand] [subcommand-flags] ``` ## Global Flags These flags can be used with any command: | Flag | Short | Description | Default | |------|-------|-------------|---------| | `--host` | `-h` | Device IP address or hostname | Required for most commands | | `--port` | `-p` | Device port number | `8090` | | `--timeout` | `-t` | Request timeout duration | `10s` | | `--help` | | Show command help | | | `--version` | `-v` | Show CLI version | | ## Commands ### Discovery Discover SoundTouch devices on the network. #### `discover devices` Discover and list all SoundTouch devices. ```bash soundtouch-cli discover devices [flags] ``` **Flags:** - `--all`, `-a`: Show detailed information for all devices - `--timeout`: Discovery timeout (default: 10s) **Examples:** ```bash # Basic discovery soundtouch-cli discover devices # Show detailed info for all discovered devices soundtouch-cli discover devices --all # Discovery with custom timeout soundtouch-cli discover devices --timeout 15s ``` ### Device Information Get information about your SoundTouch device. #### `info` Get basic device information. ```bash soundtouch-cli --host info ``` **Example:** ```bash soundtouch-cli --host 192.168.1.10 info ``` #### `name get|set` Get or set the device name. ```bash # Get current name soundtouch-cli --host name get # Set new name soundtouch-cli --host name set --value "My SoundTouch" ``` #### `capabilities` Get device capabilities and features. ```bash soundtouch-cli --host capabilities ``` ### Preset Management Manage device presets (favorite content shortcuts). #### `preset ` Preset management commands. ```bash # List all presets soundtouch-cli --host preset list # Store currently playing content as preset soundtouch-cli --host preset store-current --slot <1-6> # Store specific content as preset soundtouch-cli --host preset store --slot <1-6> --source --location [options] # Select and play a preset soundtouch-cli --host preset select --slot <1-6> # Remove a preset soundtouch-cli --host preset remove --slot <1-6> ``` **Store Current Content Examples:** ```bash # Store what's currently playing as preset 1 soundtouch-cli --host 192.168.1.10 preset store-current --slot 1 # Store current Spotify track as preset 3 soundtouch-cli --host 192.168.1.10 preset store-current --slot 3 ``` **Store Specific Content Examples:** ```bash # Store Spotify playlist soundtouch-cli --host 192.168.1.10 preset store \ --slot 1 \ --source SPOTIFY \ --location "spotify:playlist:37i9dQZF1DXcBWIGoYBM5M" \ --source-account "your_username" \ --name "Today's Top Hits" # Store radio station soundtouch-cli --host 192.168.1.10 preset store \ --slot 2 \ --source TUNEIN \ --location "/v1/playbook/station/s33828" \ --name "K-LOVE Radio" # Store internet radio soundtouch-cli --host 192.168.1.10 preset store \ --slot 3 \ --source LOCAL_INTERNET_RADIO \ --location "https://stream.example.com/jazz" \ --name "Jazz Radio Stream" ``` **Selection and Management Examples:** ```bash # List all presets soundtouch-cli --host 192.168.1.10 preset list # Select preset 1 soundtouch-cli --host 192.168.1.10 preset select --slot 1 # Remove preset 6 soundtouch-cli --host 192.168.1.10 preset remove --slot 6 ``` **Getting Content Locations:** To find content locations for the `--location` parameter: ```bash # Show current content details (includes location for all sources) soundtouch-cli --host 192.168.1.10 play now # Show detailed content information soundtouch-cli --host 192.168.1.10 play now --verbose ``` ### Recent Content Recently played content management. #### `recents ` Recently played content commands. ```bash # List recently played items soundtouch-cli --host recents list [--limit ] [--detailed] # Filter recent items by source or type soundtouch-cli --host recents filter --source [--type ] [--limit ] # Show only the most recent item soundtouch-cli --host recents latest # Show statistics about recent content soundtouch-cli --host recents stats ``` **Basic Usage Examples:** ```bash # List last 10 recent items (default) soundtouch-cli --host 192.168.1.10 recents list # Show all recent items with detailed information soundtouch-cli --host 192.168.1.10 recents list --limit 0 --detailed # Show only the most recent item soundtouch-cli --host 192.168.1.10 recents latest ``` **Filtering Examples:** ```bash # Show only Spotify items soundtouch-cli --host 192.168.1.10 recents filter --source SPOTIFY # Show only tracks (no stations or playlists) soundtouch-cli --host 192.168.1.10 recents filter --type track # Show only presetable items soundtouch-cli --host 192.168.1.10 recents filter --type presetable # Show last 5 local music items soundtouch-cli --host 192.168.1.10 recents filter --source LOCAL_MUSIC --limit 5 ``` **Available Sources:** - `SPOTIFY` - Spotify streaming - `LOCAL_MUSIC` - Local music files - `STORED_MUSIC` - Stored music library - `TUNEIN` - TuneIn radio stations - `PANDORA` - Pandora music - `AMAZON` - Amazon Music - `DEEZER` - Deezer streaming **Available Types:** - `track` - Individual songs - `station` - Radio stations - `playlist` - Music playlists - `album` - Music albums - `presetable` - Items that can be saved as presets **Statistics Example:** ```bash # Get detailed statistics about recent content soundtouch-cli --host 192.168.1.10 recents stats ``` #### `presets` (Legacy) Get configured presets (legacy command for backward compatibility). ```bash soundtouch-cli --host presets ``` ### Playback Control Control music playback on your device. #### `play ` Playback control commands. ```bash # Get current playback status soundtouch-cli --host play now # Start playback soundtouch-cli --host play start # Pause playback soundtouch-cli --host play pause # Stop playback soundtouch-cli --host play stop # Next track soundtouch-cli --host play next # Previous track soundtouch-cli --host play prev ``` #### `preset` Select a preset by number. ```bash soundtouch-cli --host preset --preset <1-6> ``` **Examples:** ```bash # Select preset 1 soundtouch-cli --host 192.168.1.10 preset --preset 1 # Select preset 6 soundtouch-cli --host 192.168.1.10 preset --preset 6 ``` #### `track` Get current track information. ```bash soundtouch-cli --host track ``` ### Key Commands Send key commands to the device (simulates remote control). #### `key ` Send various key commands. ```bash # Send generic key command soundtouch-cli --host key send --key # Specific key commands soundtouch-cli --host key power soundtouch-cli --host key mute soundtouch-cli --host key thumbs-up soundtouch-cli --host key thumbs-down soundtouch-cli --host key volume-up soundtouch-cli --host key volume-down ``` **Available Key Names:** - `PLAY`, `PAUSE`, `STOP` - `POWER`, `MUTE` - `VOLUME_UP`, `VOLUME_DOWN` - `PRESET_1` through `PRESET_6` - `NEXT_TRACK`, `PREV_TRACK` - `THUMBS_UP`, `THUMBS_DOWN` - `SHUFFLE_ON`, `SHUFFLE_OFF` - `REPEAT_ON`, `REPEAT_OFF` ### Volume Control Manage device volume. #### `volume ` Volume control commands. ```bash # Get current volume soundtouch-cli --host volume get # Set specific volume level (0-100) soundtouch-cli --host volume set --level <0-100> # Increase volume soundtouch-cli --host volume up [--amount <1-10>] # Decrease volume soundtouch-cli --host volume down [--amount <1-10>] ``` **Examples:** ```bash # Get volume soundtouch-cli --host 192.168.1.10 volume get # Set volume to 50 soundtouch-cli --host 192.168.1.10 volume set --level 50 # Increase volume by 5 soundtouch-cli --host 192.168.1.10 volume up --amount 5 # Decrease volume by 3 (default amount is 2) soundtouch-cli --host 192.168.1.10 volume down --amount 3 ``` ### Audio Sources Manage audio input sources. #### `source ` Audio source commands. ```bash # List available sources soundtouch-cli --host source list # Select specific source soundtouch-cli --host source select --source [--account ] # Quick source selection soundtouch-cli --host source spotify soundtouch-cli --host source bluetooth soundtouch-cli --host source aux # Custom radio selection (via soundtouch-service) soundtouch-cli --host source custom-radio --url [--name ] [--artwork ] [--service-url ] # Advanced content selection soundtouch-cli --host source internet-radio --location [--name ] soundtouch-cli --host source local-music --location --account soundtouch-cli --host source stored-music --location --account soundtouch-cli --host source content --source --location ``` **Source Names:** - `SPOTIFY` - Spotify streaming - `BLUETOOTH` - Bluetooth input - `AUX` - AUX input - `AIRPLAY` - AirPlay - `LOCAL_MUSIC` - SoundTouch App Media Server content - `LOCAL_INTERNET_RADIO` - Internet radio streams - `STORED_MUSIC` - UPnP/DLNA media server content - `TUNEIN` - TuneIn radio stations - `PANDORA` - Pandora music service - `PRODUCT` - Product-specific sources (TV, HDMI) **Examples:** ```bash # List all sources soundtouch-cli --host 192.168.1.10 source list # Select Spotify soundtouch-cli --host 192.168.1.10 source spotify # Select Spotify with specific account soundtouch-cli --host 192.168.1.10 source select --source SPOTIFY --account user@example.com # Select Bluetooth soundtouch-cli --host 192.168.1.10 source bluetooth # Select internet radio with streamUrl format soundtouch-cli --host 192.168.1.10 source internet-radio \ --location "http://contentapi.gmuth.de/station.php?name=MyStation&streamUrl=https://stream.example.com/radio" \ --name "My Radio Station" \ --artwork "https://example.com/art.png" # Select internet radio with direct stream URL soundtouch-cli --host 192.168.1.10 source internet-radio \ --location "https://stream.example.com/radio" \ --name "My Stream" # Select local music content (requires SoundTouch App Media Server) soundtouch-cli --host 192.168.1.10 source local-music \ --location "album:983" \ --account "3f205110-4a57-4e91-810a-123456789012" \ --name "Welcome to the New" # Select stored music content (requires UPnP/DLNA media server) soundtouch-cli --host 192.168.1.10 source stored-music \ --location "6_a2874b5d_4f83d999" \ --account "d09708a1-5953-44bc-a413-123456789012/0" \ --name "Christmas Album" # Advanced content selection with all options soundtouch-cli --host 192.168.1.10 source content \ --source LOCAL_INTERNET_RADIO \ --location "https://stream.example.com/radio" \ --name "My Stream" \ --type stationurl \ --presetable # Get introspect data for Spotify soundtouch-cli --host 192.168.1.10 source introspect --source SPOTIFY # Get introspect data with account soundtouch-cli --host 192.168.1.10 source introspect --source SPOTIFY --account user@spotify.com # Spotify introspect (convenience command) soundtouch-cli --host 192.168.1.10 source introspect-spotify # Get introspect data for all available services soundtouch-cli --host 192.168.1.10 source introspect-all # Check service availability soundtouch-cli --host 192.168.1.10 source availability # Compare sources and availability soundtouch-cli --host 192.168.1.10 source compare ``` **Content Selection Commands:** | Command | Description | Requirements | |---------|-------------|--------------| | `internet-radio` | Select internet radio stream (LOCAL_INTERNET_RADIO) | Stream URL | | `custom-radio` | Select custom radio stream via soundtouch-service | Stream URL and service URL | | `local-music` | Select local music content (LOCAL_MUSIC) | SoundTouch App Media Server | | `stored-music` | Select stored music content (STORED_MUSIC) | UPnP/DLNA media server | | `content` | Generic content selection (advanced) | Source and location | **streamUrl Format Support:** The `internet-radio` command supports the streamUrl proxy format from the [SoundTouch WebServices API Wiki](https://github.com/thlucas1/homeassistantcomponent_soundtouchplus/wiki/SoundTouch-WebServices-API#select-local_internet_radio---streamurl-format): ```bash # Using contentapi.gmuth.de proxy for complex streams soundtouch-cli --host 192.168.1.10 source internet-radio \ --location "http://contentapi.gmuth.de/station.php?name=Antenne%20Chillout&streamUrl=https://stream.antenne.de/chillout/stream/aacp" \ --name "Antenne Chillout" # Using local soundtouch-service for custom streams soundtouch-cli --host 192.168.1.10 source custom-radio \ --url "https://stream.antenne.de/chillout/stream/aacp" \ --name "Antenne Chillout" \ --service-url "http://localhost:8080" ``` #### Service Introspection Get detailed information about music service states, user accounts, capabilities, and authentication status. **Introspect Commands:** ```bash # Get introspect data for specific service soundtouch-cli --host source introspect --source [--account ] # Spotify introspect (convenience) soundtouch-cli --host source introspect-spotify [--account ] # Get introspect data for all services soundtouch-cli --host source introspect-all ``` **Supported Services for Introspect:** - `SPOTIFY` - Spotify streaming service - `PANDORA` - Pandora music service - `TUNEIN` - TuneIn radio service - `AMAZON` - Amazon Music service - `DEEZER` - Deezer streaming service **Introspect Information Includes:** - Service state (Active, Inactive, InactiveUnselected) - User account information - Current playback status and content URI - Service capabilities (skip, seek, resume support) - Authentication token status - Subscription type and content history limits - Shuffle mode and data collection settings **Examples:** ```bash # Get Spotify service status soundtouch-cli --host 192.168.1.10 source introspect --source SPOTIFY # Get Spotify status with specific account soundtouch-cli --host 192.168.1.10 source introspect --source SPOTIFY --account my_spotify_user # Use Spotify convenience command soundtouch-cli --host 192.168.1.10 source introspect-spotify # Get status for all available streaming services soundtouch-cli --host 192.168.1.10 source introspect-all # Check which services are available before introspecting soundtouch-cli --host 192.168.1.10 source availability ``` ### Music Service Account Management Manage music streaming service accounts and network music library connections. #### `account ` Music service account management commands. ```bash # List configured accounts soundtouch-cli --host account list # Add music service account (generic) soundtouch-cli --host account add --source --user --password [--name ] # Remove music service account (generic) soundtouch-cli --host account remove --source --user [--name ] # Service-specific convenience commands soundtouch-cli --host account add-spotify --user --password soundtouch-cli --host account add-pandora --user --password soundtouch-cli --host account add-amazon --user --password soundtouch-cli --host account add-deezer --user --password soundtouch-cli --host account add-iheart --user --password soundtouch-cli --host account add-nas --user [--name ] # Remove accounts soundtouch-cli --host account remove-spotify --user soundtouch-cli --host account remove-pandora --user soundtouch-cli --host account remove-amazon --user soundtouch-cli --host account remove-deezer --user soundtouch-cli --host account remove-iheart --user soundtouch-cli --host account remove-nas --user [--name ] ``` **Supported Services:** - **SPOTIFY**: Spotify Premium accounts - **PANDORA**: Pandora Music Service accounts - **AMAZON**: Amazon Music accounts - **DEEZER**: Deezer Premium accounts - **IHEART**: iHeartRadio accounts - **STORED_MUSIC**: Network music libraries (NAS/UPnP/DLNA servers) **Examples:** ```bash # List all configured music service accounts soundtouch-cli --host 192.168.1.10 account list # Add a Spotify Premium account soundtouch-cli --host 192.168.1.10 account add-spotify \ --user "user@spotify.com" \ --password "mypassword" # Add a Pandora account soundtouch-cli --host 192.168.1.10 account add-pandora \ --user "pandora_username" \ --password "pandora_password" # Add an Amazon Music account soundtouch-cli --host 192.168.1.10 account add-amazon \ --user "amazon_user" \ --password "amazon_password" # Add a network music library (NAS/UPnP) soundtouch-cli --host 192.168.1.10 account add-nas \ --user "d09708a1-5953-44bc-a413-123456789012/0" \ --name "My Music Server" # Remove a Spotify account soundtouch-cli --host 192.168.1.10 account remove-spotify \ --user "user@spotify.com" # Generic account management soundtouch-cli --host 192.168.1.10 account add \ --source DEEZER \ --user "deezer_user" \ --password "deezer_pass" \ --name "Deezer Premium" soundtouch-cli --host 192.168.1.10 account remove \ --source DEEZER \ --user "deezer_user" ``` **Notes:** - Music service accounts must be configured before you can browse or play content from those services - Network music libraries (STORED_MUSIC) don't require passwords, only the UPnP server GUID - After adding an account, use `source list` to verify it appears as available - Some services may require additional authentication steps through their mobile apps ### Bass Control Adjust bass levels (equalizer). #### `bass ` Bass control commands. ```bash # Get current bass level soundtouch-cli --host bass get # Set bass level (-9 to 9) soundtouch-cli --host bass set --level <-9 to 9> # Increase bass soundtouch-cli --host bass up [--amount <1-5>] # Decrease bass soundtouch-cli --host bass down [--amount <1-5>] # Get bass capabilities soundtouch-cli --host bass capabilities ``` **Examples:** ```bash # Get current bass soundtouch-cli --host 192.168.1.10 bass get # Set bass to +3 soundtouch-cli --host 192.168.1.10 bass set --level 3 # Increase bass by 2 soundtouch-cli --host 192.168.1.10 bass up --amount 2 # Decrease bass by 1 (default) soundtouch-cli --host 192.168.1.10 bass down ``` ### Balance Control Adjust left/right balance. #### `balance ` Balance control commands. ```bash # Get current balance soundtouch-cli --host balance get # Set balance (-50 to 50, negative=left, positive=right) soundtouch-cli --host balance set --level <-50 to 50> # Shift balance left soundtouch-cli --host balance left [--amount <1-10>] # Shift balance right soundtouch-cli --host balance right [--amount <1-10>] # Center balance soundtouch-cli --host balance center ``` **Examples:** ```bash # Get balance soundtouch-cli --host 192.168.1.10 balance get # Set balance 10 units to the right soundtouch-cli --host 192.168.1.10 balance set --level 10 # Shift left by 5 units (default) soundtouch-cli --host 192.168.1.10 balance left # Center the balance soundtouch-cli --host 192.168.1.10 balance center ``` ### Clock and Time Manage device clock settings. #### `clock ` Clock control commands. ```bash # Get current time soundtouch-cli --host clock get # Set time manually (HH:MM format) soundtouch-cli --host clock set --time "14:30" # Set to current system time soundtouch-cli --host clock now # Display settings soundtouch-cli --host clock display get soundtouch-cli --host clock display enable soundtouch-cli --host clock display disable soundtouch-cli --host clock display brightness --brightness soundtouch-cli --host clock display format --format <12|24> ``` **Examples:** ```bash # Get current time soundtouch-cli --host 192.168.1.10 clock get # Set time to 2:30 PM soundtouch-cli --host 192.168.1.10 clock set --time "14:30" # Sync with system time soundtouch-cli --host 192.168.1.10 clock now # Enable clock display soundtouch-cli --host 192.168.1.10 clock display enable # Set 24-hour format soundtouch-cli --host 192.168.1.10 clock display format --format 24 # Set high brightness soundtouch-cli --host 192.168.1.10 clock display brightness --brightness high ``` ### Network Information Get network and connectivity information. #### `network ` Network information commands. ```bash # Get network information soundtouch-cli --host network info # Ping the device soundtouch-cli --host network ping # Get device base URL soundtouch-cli --host network url ``` ### Zone Management Manage multi-room zones (multiple speakers playing together). #### `zone ` Zone management commands. ```bash # Get current zone configuration soundtouch-cli --host zone get # Get zone status soundtouch-cli --host zone status # List zone members soundtouch-cli --host zone members # Create new zone soundtouch-cli --host zone create --members # Add device to zone soundtouch-cli --host zone add --member # Remove device from zone soundtouch-cli --host zone remove --member # Dissolve current zone soundtouch-cli --host zone dissolve # Set zone configuration soundtouch-cli --host zone set --master --members ``` **Examples:** ```bash # Get current zone info soundtouch-cli --host 192.168.1.10 zone get # Create zone with three speakers soundtouch-cli --host 192.168.1.10 zone create --members 192.168.1.11,192.168.1.12 # Add speaker to existing zone soundtouch-cli --host 192.168.1.10 zone add --member 192.168.1.13 # Remove speaker from zone soundtouch-cli --host 192.168.1.10 zone remove --member 192.168.1.12 # Dissolve the zone (make all speakers independent) soundtouch-cli --host 192.168.1.10 zone dissolve ``` ### Browse and Navigation Browse and navigate content sources on your device. #### `browse ` Browse content from different sources. ```bash # Browse TuneIn stations soundtouch-cli --host browse tunein # Browse Pandora stations (requires account) soundtouch-cli --host browse pandora --source-account # Browse stored music library (requires device ID) soundtouch-cli --host browse stored-music --source-account # Browse any content source with pagination soundtouch-cli --host browse content --source [--start ] [--limit ] # Browse with menu navigation (for sources that support it) soundtouch-cli --host browse menu --source --menu [--sort ] # Browse into a container/directory soundtouch-cli --host browse container --source --location [--type ] ``` **Examples:** ```bash # Browse TuneIn stations soundtouch-cli --host 192.168.1.10 browse tunein # Browse first 50 TuneIn stations soundtouch-cli --host 192.168.1.10 browse tunein --limit 50 # Browse Pandora radio stations soundtouch-cli --host 192.168.1.10 browse pandora --source-account myuser123 # Browse Pandora with menu navigation soundtouch-cli --host 192.168.1.10 browse menu --source PANDORA --source-account myuser123 --menu radioStations --sort dateCreated # Browse stored music library soundtouch-cli --host 192.168.1.10 browse stored-music --source-account device_12345 # Browse into a music album container soundtouch-cli --host 192.168.1.10 browse container --source STORED_MUSIC --location "album:983" --type dir ``` ### Station Search and Management Search for and manage radio stations and streaming content. #### `station ` Search and manage stations. ```bash # Search across any source soundtouch-cli --host station search --source --query # Search TuneIn specifically soundtouch-cli --host station search-tunein --query # Search Pandora specifically (requires account) soundtouch-cli --host station search-pandora --source-account --query # Search Spotify specifically (requires account) soundtouch-cli --host station search-spotify --source-account --query # Add station and play immediately soundtouch-cli --host station add --source --token --name # Remove station from collection soundtouch-cli --host station remove --source --location ``` **Search Examples:** ```bash # Search TuneIn for jazz stations soundtouch-cli --host 192.168.1.10 station search-tunein --query "jazz" # Search Pandora for Taylor Swift soundtouch-cli --host 192.168.1.10 station search-pandora --source-account myuser123 --query "Taylor Swift" # Search Spotify for workout playlists soundtouch-cli --host 192.168.1.10 station search-spotify --source-account spotify_user --query "workout playlist" # General search across any source soundtouch-cli --host 192.168.1.10 station search --source TUNEIN --query "classic rock" ``` **Station Management Examples:** ```bash # Add a station found from search results (use token from search output) soundtouch-cli --host 192.168.1.10 station add \ --source TUNEIN \ --token "c121508" \ --name "Classic Rock Radio" # Add Pandora station with account soundtouch-cli --host 192.168.1.10 station add \ --source PANDORA \ --source-account myuser123 \ --token "TR:12345" \ --name "My Custom Station" # Remove a station (use location from browse/search results) soundtouch-cli --host 192.168.1.10 station remove \ --source TUNEIN \ --location "/v1/playbook/station/s33828" ``` **Workflow Example - Discover and Play New Content:** ```bash # 1. Search for content soundtouch-cli --host 192.168.1.10 station search-tunein --query "smooth jazz" # 2. Add interesting station from results (copy token from output) soundtouch-cli --host 192.168.1.10 station add \ --source TUNEIN \ --token "c456789" \ --name "Smooth Jazz 24/7" # 3. Station is automatically playing! Or browse for more options: soundtouch-cli --host 192.168.1.10 browse tunein --limit 10 ``` ### Speaker Notifications and Content Play notifications, TTS messages, and audio content (ST-10 Series only). #### `speaker ` Speaker notification and content playback commands. ```bash # Play Text-to-Speech message soundtouch-cli --host speaker tts --text --app-key [--volume ] [--language ] # Play audio content from URL soundtouch-cli --host speaker url --url --app-key [--volume ] [--service ] [--message ] [--reason ] # Play notification beep soundtouch-cli --host speaker beep # Get detailed help about speaker functionality soundtouch-cli speaker help ``` **TTS Examples:** ```bash # Basic TTS in English soundtouch-cli --host 192.168.1.10 speaker tts \ --text "Hello, welcome home" \ --app-key "your-app-key" # TTS with volume and language soundtouch-cli --host 192.168.1.10 speaker tts \ --text "Bonjour le monde" \ --app-key "your-app-key" \ --volume 70 \ --language FR # TTS for home automation alert soundtouch-cli --host 192.168.1.10 speaker tts \ --text "Motion detected at front door" \ --app-key "security-system-key" \ --volume 80 ``` **URL Content Examples:** ```bash # Play audio file from URL soundtouch-cli --host 192.168.1.10 speaker url \ --url "https://example.com/doorbell.mp3" \ --app-key "your-app-key" \ --volume 75 # Play with custom metadata soundtouch-cli --host 192.168.1.10 speaker url \ --url "https://example.com/song.mp3" \ --app-key "your-app-key" \ --service "Music Service" \ --message "Beautiful Song" \ --reason "Artist Name" \ --volume 60 # Emergency alert soundtouch-cli --host 192.168.1.10 speaker url \ --url "https://alerts.example.com/fire-alarm.wav" \ --app-key "emergency-system" \ --service "Emergency System" \ --message "Fire Alert" \ --volume 100 ``` **Simple Notifications:** ```bash # Quick beep notification soundtouch-cli --host 192.168.1.10 speaker beep # Test device connectivity with beep soundtouch-cli --host 192.168.1.10 speaker beep ``` **Supported Languages for TTS:** - `EN` - English (default) - `DE` - German - `ES` - Spanish - `FR` - French - `IT` - Italian - `NL` - Dutch - `PT` - Portuguese - `RU` - Russian - `ZH` - Chinese - `JA` - Japanese **Important Notes:** - Only works with ST-10 (Series III) speakers - ST-300 and other models may not support speaker notifications - App key is required for TTS and URL playback (user-provided) - Volume is automatically restored after notification completes - Currently playing content is paused during notification and resumed after - If device is zone master, notification plays on all zone members ### WebSocket Events #### `events ` Real-time device event monitoring via WebSocket connection. ##### `events subscribe` Subscribe to real-time device events and display them in the terminal. **Usage:** ```bash soundtouch-cli --host events subscribe [flags] ``` **Flags:** - `--filter, -f ` - Filter events by type (comma-separated) - `--duration, -d ` - How long to listen (0 = infinite) - `--no-reconnect` - Disable automatic reconnection - `--verbose, -v` - Enable verbose logging **Event Types:** - `nowPlaying` - Track changes, playback status - `volume` - Volume and mute changes - `connection` - Network connectivity status - `preset` - Preset configuration changes - `zone` - Multiroom zone changes - `bass` - Bass level changes - `sdkInfo` - SDK version information - `userActivity` - User interaction notifications **Examples:** ```bash # Monitor all events soundtouch-cli --host 192.168.1.10 events subscribe # Monitor only volume and now playing events soundtouch-cli --host 192.168.1.10 events subscribe --filter volume,nowPlaying # Monitor for 5 minutes with verbose output soundtouch-cli --host 192.168.1.10 events subscribe --duration 5m --verbose # Monitor zone events without automatic reconnection soundtouch-cli --host 192.168.1.10 events subscribe --filter zone --no-reconnect ``` **Notes:** - WebSocket connection automatically reconnects on connection loss (unless disabled) - Press Ctrl+C to stop monitoring - Events are displayed in real-time with emoji indicators - Verbose mode shows additional technical details ## Common Usage Patterns ### Quick Device Setup ```bash # Discover devices soundtouch-cli discover devices # Get device info soundtouch-cli --host 192.168.1.10 info # Set comfortable volume and start playing soundtouch-cli --host 192.168.1.10 volume set --level 30 soundtouch-cli --host 192.168.1.10 source spotify soundtouch-cli --host 192.168.1.10 play start ``` ### Daily Usage ```bash # Morning routine soundtouch-cli --host 192.168.1.10 preset --preset 1 # Morning playlist soundtouch-cli --host 192.168.1.10 volume set --level 25 # Pause for a call soundtouch-cli --host 192.168.1.10 play pause # Resume soundtouch-cli --host 192.168.1.10 play start # Evening routine soundtouch-cli --host 192.168.1.10 preset --preset 3 # Evening playlist soundtouch-cli --host 192.168.1.10 volume set --level 15 ``` ### Multi-room Setup ```bash # Create a zone with living room as master soundtouch-cli --host 192.168.1.10 zone create --members 192.168.1.11,192.168.1.12 # Control the whole zone from master soundtouch-cli --host 192.168.1.10 volume set --level 40 soundtouch-cli --host 192.168.1.10 source spotify soundtouch-cli --host 192.168.1.10 preset --preset 2 # Later, dissolve the zone soundtouch-cli --host 192.168.1.10 zone dissolve ``` ### Audio Tuning ```bash # Get current audio settings soundtouch-cli --host 192.168.1.10 volume get soundtouch-cli --host 192.168.1.10 bass get soundtouch-cli --host 192.168.1.10 balance get # Adjust for better sound soundtouch-cli --host 192.168.1.10 bass set --level 2 # Slight bass boost soundtouch-cli --host 192.168.1.10 balance set --level -5 # Slightly left soundtouch-cli --host 192.168.1.10 volume set --level 35 # Good listening level ``` ## Error Handling The CLI provides clear error messages for common issues: ### Device Not Found ``` Error: Failed to connect to device: connection refused ``` **Solutions:** - Check IP address is correct - Ensure device is powered on - Verify network connectivity with `soundtouch-cli --host network ping` ### Invalid Commands ``` Error: unknown command "volumee" for "soundtouch-cli" ``` **Solution:** Check command spelling and structure using `--help` ### Missing Required Flags ``` Error: required flag "host" not set ``` **Solution:** Provide required flags: `--host ` ## Getting Help ```bash # General help soundtouch-cli --help # Command-specific help soundtouch-cli volume --help soundtouch-cli zone --help # Subcommand help soundtouch-cli volume set --help soundtouch-cli zone create --help ``` ## Configuration ### Environment Variables You can set default values using environment variables: ```bash export SOUNDTOUCH_HOST=192.168.1.10 export SOUNDTOUCH_PORT=8090 export SOUNDTOUCH_TIMEOUT=15s # Now you can omit these flags soundtouch-cli info soundtouch-cli volume get ``` ### Configuration File Create `~/.soundtouch.env`: ``` SOUNDTOUCH_HOST=192.168.1.10 SOUNDTOUCH_PORT=8090 SOUNDTOUCH_TIMEOUT=15s SOUNDTOUCH_DISCOVERY_TIMEOUT=10s ``` ## See Also - [Getting Started Guide](GETTING-STARTED.md) - Basic setup and usage - [WebSocket Events](../reference/WEBSOCKET-EVENTS.md) - Real-time monitoring - [Zone Management](../reference/ZONE-MANAGEMENT.md) - Multi-room setup - [API Endpoints](../reference/API-ENDPOINTS.md) - Complete API reference