Add Waveshare ESP32-S3 Audio Board device page#1515
Add Waveshare ESP32-S3 Audio Board device page#1515jensenbox wants to merge 5 commits intoesphome:mainfrom
Conversation
Add documentation for the Waveshare ESP32-S3 Audio Board including hardware specs, complete GPIO pinout, I2C device table, TCA9555 I/O expander pin map, and a basic ESPHome configuration example with voice assistant support.
✅ Deploy Preview for esphome-devices ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Pull request overview
Adds a new ESPHome Devices documentation page for the Waveshare ESP32-S3 Audio Board, providing hardware details and a starter ESPHome YAML example oriented around voice-assistant use.
Changes:
- Introduces a new device page with hardware specs, GPIO pinouts, and I2C address tables.
- Adds a “Basic ESPHome Configuration” example covering I2C/I2S audio, IO expander inputs, LED ring, and voice assistant components.
- Includes outbound links to the product page, wiki, and a reference configuration repository.
| project-url: https://github.com/jensenbox/waveshare-esp32-s3-audio | ||
| --- | ||
|
|
||
|  |
There was a problem hiding this comment.
The page uses a hotlinked product image from waveshare.com. This can break if the upstream URL changes and also adds an external dependency at render time. Consider downloading the image into this device folder (as suggested in src/docs/devices/adding-devices.mdx under “Images”) and referencing it via a relative path instead.
|  | |
|  |
There was a problem hiding this comment.
Fixed — downloaded the image locally into the device folder.
| vad: | ||
| model: github://esphome/micro-wake-word-models/models/v2/vad.json | ||
| models: | ||
| - model: okay_nabu |
There was a problem hiding this comment.
micro_wake_word.models is using the object form (- model: okay_nabu). In other device pages (e.g., src/docs/devices/M5Stack-Tab5/index.md) the built-in models are referenced using the shorthand scalar form (- okay_nabu). If okay_nabu is intended to be a built-in model name, the current structure may not validate/compile; consider switching to the shorthand form or pointing model: to the full github://... URL for the model JSON.
| - model: okay_nabu | |
| - okay_nabu |
There was a problem hiding this comment.
Fixed — switched to the shorthand scalar form.
Add use_wake_word: false, on_end/on_error/on_client_connected handlers that properly restart micro_wake_word after speaker finishes, and on_announcement handler on media_player to avoid audio conflicts.
Restarting the microphone (via wake word) in on_end causes an I2S bus conflict because on_end fires before the speaker finishes playing TTS audio. Moving the restart to on_tts_stream_end ensures we wait for the speaker to finish before reclaiming the I2S bus for the microphone. - on_end: now only turns off LEDs (no mic restart) - on_tts_stream_end: waits for speaker, then restarts wake word - Updated description to explain the pattern
Add restart_mww_fallback script, on_tts_stream_end, on_end, on_error, and on_client_connected handlers to the basic config example. This ensures the wake word engine restarts after every interaction, including silent commands that produce no TTS response.
Download the Waveshare product image locally instead of hotlinking, and simplify micro_wake_word model entry from `- model: okay_nabu` to `- okay_nabu`.

Summary
Test plan