After my first attempts with Assist I wanted a voice assistant with a display, so I started a small project with Claude Code to get there.
The result is a custom firmware for the Waveshare ESP32-S3-Touch-AMOLED-1.75, turning it into a voice satellite with a screen.
Everything that happens on the screen is driven by HA entities. No app, no cloud dashboard, no extra layer of configuration.
Specifically, it includes:
- Breathing microphone while listening, wave of dots while processing, equalizer while responding, as visual feedback
- Three standby pages: clock with date, hand-less watch face, and the highlight, an animated face with wandering eyes
- A timer shown as a ring around the screen edge that visibly counts down
- Single and double tap as their own events, recording can be cancelled by tapping
- Can be wired into your own automations
- Entities for orientation, standby brightness, microphone muted, wake word engine, recognized text and response
Six blueprints are included to get started, among them a notification on event, an announcement via assist_satellite.announce, weather on request with an icon, music control through Music Assistant, and an LLM-based open weather question. Heads up: the trigger phrases in these blueprints are written for German-language pipelines, so if you’re on English Assist you’ll want to adapt the wording.
Flashing is done in the browser via ESP Web Tools, straight over USB. Updates after that come through Home Assistant as usual.
Curious how and whether you’d use this, especially if you’re already running multiple satellites and know what actually matters here. Feedback welcome.
