Tobias Gesellchen
cc39efc882
feat: Add comprehensive WebSocket events support
...
- Implement real-time WebSocket client for device monitoring
- Add 12 event types: NowPlaying, Volume, Connection, Preset, Zone, Bass, Clock, Name, Error, Recents, Language
- Create WebSocket demo CLI with event filtering and auto-discovery
- Add comprehensive WebSocket documentation and examples
- Implement automatic reconnection and robust error handling
- Add 50+ WebSocket-specific tests with mock server
- Update project completion to 85% (16/19 endpoints)
- Clarify that POST /presets is officially not supported by SoundTouch API
- Add production-ready WebSocket client with configurable options
Breaking: WebSocket events require gorilla/websocket dependency
Docs: Complete WebSocket integration examples and API reference
2026-01-09 11:30:35 +01:00
Tobias Gesellchen
609cc04c16
Complete preset management implementation
...
- Add comprehensive preset reading functionality with helper methods
- Implement GetNextAvailablePresetSlot() and IsCurrentContentPresetable()
- Add CLI support for viewing presets with -presets flag
- Fix Preset XML tag to use lowercase 'preset' for API compliance
- Update documentation to reflect official API design:
* GET /presets: fully implemented with rich analysis
* POST /presets: officially 'N/A' per Bose documentation (not supported by design)
- Add detailed PRESET-MANAGEMENT.md documentation
- Update API endpoints overview and project status
- All tests passing with real device validation
Preset management is now 100% complete according to official API specification.
Read operations provide comprehensive preset analysis, while creation
is intentionally handled by official app/hardware controls per API design.
2026-01-09 11:11:10 +01:00
Tobias Gesellchen
de2ff3550f
Implement /name, /capabilities, and /presets informational endpoints
...
## New Endpoints
### GET /name ✅
- Simple device name retrieval with XML parsing
- Helper methods for name validation and display
- Real device name integration with anonymization
### GET /capabilities ✅
- Comprehensive device capabilities detection
- Complex XML structure with nested network, DSP, and system configurations
- Smart categorization: System Features, Audio Features, Network Features
- Capability-specific helper methods (HasLRStereoCapability, HasDualModeNetwork, etc.)
- Extended capabilities parsing with URLs and metadata
### GET /presets ✅
- Complete preset management with timestamps and metadata
- Spotify playlist integration with anonymized account information
- Smart filtering: by source, used/empty slots, most recent, oldest presets
- Comprehensive analysis: preset summaries with source breakdowns
- Time-based operations: creation/update timestamps with formatted display
## Device Introspection Features
### Capability Detection
- System capabilities: Light Switch, Clock Display, BCO Reset, Power Saving
- Audio capabilities: L/R Stereo support, DSP Mono/Stereo availability
- Network capabilities: Dual Mode, WSAPI Proxy, Hosted WiFi Configuration
- Extended capabilities: Custom endpoint discovery with URL mapping
### Preset Analysis
- Usage pattern analysis (used vs empty slots)
- Source distribution (Spotify, TuneIn, etc.)
- Temporal analysis (most recent, oldest presets)
- Content metadata extraction (artwork URLs, display names)
## Enhanced CLI Tool
### New Commands
- Added -name command with simple device identification
- Added -capabilities command with categorized feature display
- Added -presets command with comprehensive preset analysis
- Enhanced help system with all new command examples
### Rich Output Formatting
- Capability categorization with bullet-point display
- Preset timeline with creation/update timestamps
- Smart metadata display (artwork, source accounts, content types)
- Device-specific feature highlighting (different capabilities per device)
## Real Device Integration
### Multi-Device Testing
- Device 192.168.178.28: SoundTouch 10 with Light Switch, Clock Display, Hosted WiFi
- Device 192.168.178.35: SoundTouch 20 with L/R Stereo, Dual Mode networking
- Verified capability differences between device models
- Real preset data with anonymized Spotify account information
### Edge Case Handling
- Non-responsive endpoints (/trackInfo timeout handling)
- Empty preset configurations
- Missing capability sections
- Device-specific feature variations
## Quality & Testing
### Comprehensive Test Coverage
- 15+ unit tests for XML models with real device response patterns
- Client integration tests with mock HTTP servers
- Edge case validation (empty names, missing capabilities, no presets)
- Timestamp parsing and validation with Unix epoch conversion
### Production-Ready Features
- Type-safe XML unmarshaling with custom validation
- Robust error handling for network and parsing failures
- Privacy protection with anonymized real device data
- Documentation updates with real-world usage examples
## API Coverage Progress
✅ Complete Information Endpoints:
- GET /info - Device information
- GET /name - Device name
- GET /capabilities - Device capabilities
- GET /presets - Configured presets
- GET /now_playing - Current playback status
- GET /sources - Available audio sources
🔄 Next Phase - Control Endpoints:
- POST /key - Media controls
- GET/POST /volume - Volume management
- WebSocket / - Real-time events
Features:
✅ Comprehensive device introspection and capability detection
✅ Smart preset management with timeline analysis
✅ Multi-device support with hardware-specific feature detection
✅ Production-ready error handling and data validation
✅ Rich CLI interface with categorized output formatting
✅ Real device integration with privacy-protected test data
2026-01-08 23:32:18 +01:00