A standalone touchscreen controller for Sonos, powered by ESP32 + ESPHome + Home Assistant.
This project documents the hardware setup, wiring, working display configuration, and the ongoing touch controller integration.
Build a dedicated Sonos control screen that:
- Connects to Home Assistant
- Displays device information
- Provides future touchscreen interaction
- Runs fully on ESPHome
- Supports OTA updates
- ESP32 (esp32dev)
- 3.5" SPI TFT display (ST7796, 480x320)
- Touch controller (suspected XPT2046)
- USB 5V power supply
📄 See: hardware.md
🖼 Wiring diagram: docs/wiring.png
- ESP32 + ST7796 display initialization
- Stable SPI configuration
- RGB test rendering
- Device name + IP display
- Wi-Fi connection
- Home Assistant API integration
- OTA updates enabled
- Identify exact touch controller model
- Validate SPI / CS / IRQ wiring
- Obtain dynamic X/Y coordinates
- Axis calibration
- Touch stability validation
- Basic UI layout
- Volume slider
- Play / Pause
- Next / Previous
- Media info display
- Smooth refresh
- Responsive touch zones
- Screen sleep mode
- Brightness control
- Full Sonos control
- Multi-room selection
- Production-ready configuration
- Complete documentation
- Touch fully validated
| Feature | Status |
|---|---|
| Display (ST7796) | ✅ Working |
| SPI Communication | ✅ Stable |
| Wi-Fi | ✅ Working |
| Home Assistant API | ✅ Connected |
| OTA | ✅ Working |
| Web Server | ✅ Working |
| Touchscreen | ❌ Under Investigation |
The working baseline configuration:
- Shows RGB test bars
- Displays device name
- Displays IP address
- Connects to Home Assistant
- Runs stable under ESP-IDF
See: