Table of Contents
- FAQ
- Which wake words are supported?
- Does it need the cloud?
- My Home Assistant only serves HTTPS. Does that matter?
- Can I interrupt a reply by saying "stop"?
- Can I use my own boot sound?
- Why is the core pulled from GitHub instead of being one file?
- How do I pin a version so updates never surprise me?
- Can I run several of these?
- Is Bluetooth audio (A2DP) possible?
- Can I read the battery level?
- The three buttons do volume and play-pause. Can I change them?
- Is the API encrypted?
FAQ
Which wake words are supported?
alexa and okay_nabu, both on-device via micro_wake_word. You can swap in
other microWakeWord models by editing the micro_wake_word: block in
base/core.yaml.
Does it need the cloud?
Only as much as your Assist pipeline does. The wake word runs entirely on the device. Speech-to-text, the conversation agent and text-to-speech are whatever you assign in Home Assistant, which can be fully local.
My Home Assistant only serves HTTPS. Does that matter?
Yes. If the certificate does not cover the LAN address the device connects to,
the device cannot fetch announcements or text-to-speech and the assistant stalls
after the wake word, with Failed to verify certificate in the log. Point the
Home Assistant Internal URL at http://<ip>:8123, or terminate TLS at a reverse
proxy and keep the built-in HTTP server plain. See
Troubleshooting.
Can I interrupt a reply by saying "stop"?
Not reliably on this board. It has no acoustic echo cancellation reachable from stock ESPHome, so while a reply is playing the mic hears the speaker far louder than you, and a "stop" wake word is detected only weakly and too late. The feature was tried and removed. See Audio architecture.
Can I use my own boot sound?
Yes. Point the boot_sound_file substitution at any URL or local MP3, FLAC or WAV
in your thin config. The board resamples playback to 16 kHz mono, so a small
16 kHz mono file sounds the same as a large stereo one on this speaker. See
Configuration.
Why is the core pulled from GitHub instead of being one file?
So you keep only a small config (waveshare-va.yaml) with your settings, and the
maintained core is shared. To update, you bump one ref: and rebuild. If you
prefer a fully local copy, download base/core.yaml and include it directly
instead of using the packages: block.
How do I pin a version so updates never surprise me?
The example config already pins the v1.0.0 tag. A pinned tag never moves, so
builds are reproducible. Bump the ref: to a newer tag when you want to update.
See Installation.
Can I run several of these?
Yes. Give each a unique name in its thin config. Each becomes its own device and
its own voice satellite in Home Assistant.
Is Bluetooth audio (A2DP) possible?
No. The ESP32-S3 has BLE only, not Bluetooth Classic, so there is no A2DP sink.
Can I read the battery level?
Effectively no. The battery divider needs a 0 Ohm resistor soldered, and enabling it makes the camera unusable. Treat battery monitoring as unavailable. See Hardware.
The three buttons do volume and play-pause. Can I change them?
Yes, in the binary_sensor: button handlers in base/core.yaml. The BOOT button
(GPIO0) is also free to use at runtime if you want a fourth function.
Is the API encrypted?
Not by default, since this is a LAN-only device. You can enable encryption in
base/core.yaml and add the key to secrets.yaml. See
Configuration.