General Community
Contribution plan: Waveshare P4 support, audio, Sonos and voice
Hi! Development is moving quickly, so I wanted to share what I'm working on and coordinate the next steps.
Some changes are already in PRs:
- #86: fix stalled controls with multiple firmware previews.
- #87: media seeking, Sonos group controls, individual speaker volumes and full-screen artwork.
- #118: optional ChatGPT/OpenAI and Claude voice support in the browser preview.
Both voice routes can answer general questions and control permitted Home Assistant entities:
- OpenAI: direct voice input and spoken replies through the Realtime API.
- Claude: uses Home Assistant's speech-to-text and text-to-speech services around Claude's responses.
Both share the same Home Assistant controls and screen context. Users can select their preferred provider in the settings. This currently works in the browser preview; bringing it to the physical panel is a later step in this plan.
I now also have the Waveshare ESP32-P4-WIFI6-Touch-LCD-4B, the 720 × 720 model with two relays, running locally. Display, touch and Wi-Fi are working, alongside optional audio settings, speaker tests and microphone recording/playback. The audio work includes an ES7210 gain/automatic-level-control extension that I'm preparing separately for ESPHome. Relay control is outside the current board-support changes.
My planned order is:
- Refresh the existing PRs against current
mainand resolve conflicts. - Prepare focused board-support and optional-audio changes, including reproducible installation instructions.
- Validate the Sonos/player changes on the physical panel.
- Implement on-device voice activation and audio transport, reusing the provider and Home Assistant control layer from #118.
- Test voice and music together, including preventing playback from triggering unintended commands.
The current voice PR is browser-only. Full voice-assistant integration on the physical panel is still planned work. Voice would remain optional for boards that support it.
With development moving this quickly, I'm hoping we can get the existing contributions reviewed and merged before the branches diverge much further. I'll keep the changes focused and update them against main.
Does this direction fit your plans? Feedback on the approach, overlapping work or preferred review/merge order would be very welcome before I build out the next phase.
Discussion 1
Add a commentThanks for this write-up, and for all the work behind it!
Good news first: what you proposed in #87 is now in main. Seeking through a track, playing speakers together with a volume per speaker, and the card on the colours of its cover shipped in 0.4.42 to 0.4.45, along with Spotify on a Sonos. I ended up building it on the current card rather than merging the PR as is, because the media card changed a lot underneath it in the same week. But your PR set the direction, and that's really cool. Thank you! You've done a lot for everything around Spotify and the player, so I've credited you in the changelog of both releases, in their release notes and as co-author on the commit. I'll close #87 with a pointer to those releases, unless you see something in it that's still missing. Then we can pick that up on its own.
On the next phase: some of what you're planning is hard to fit within certain boards' firmware and memory, and within what the ESP itself can handle. Audio and on-device voice in particular won't fit on every screen (the CYD has very little flash to spare already). So this will probably become an option for the boards that can carry it, like your P4. That needs testing, and you can test it on your own board, which helps a lot.
And don't worry about keeping up with every release. It's completely fine to keep working on a fixed version while releases keep going. We'll bring it together in the end, I'll make sure of that. If it works well, it goes in. If it needs to fit the structure differently, I'll rework it myself. It'll be fine.
Got a screen running? Tell others which board you have and what works on the Tessera website. It helps everyone pick a screen that works.
Like my work? Consider buying me a coffee, much appreciated!
Original on GitHub