Everything the Show shows and hears comes from Home Assistant. This page covers the dashboard choices, the voice pipeline the Show will talk to, the optional streaming server, and what to build with it.
You build dashboards in Home Assistant exactly as usual. On the Show's device page in HA (Settings → Devices & services → the Show → Configuration) there are two settings that decide what it displays:
| Setting | Choices |
|---|---|
| Dashboard mode | Off, Drawn on the device, or Streamed |
| Dashboard to show | A list of every dashboard and view you have. The list refreshes within five minutes when you add or rename one. Automatic means a Rooms dashboard built from your HA areas (drawn mode) or your default dashboard (streamed mode). |
| Dashboard when idle | On: the dashboard replaces the clock whenever nothing else is on screen. |
The Show reads the dashboard's card configuration from HA and draws it itself, in your theme's colours, at 960 × 480. Taps are instant, edits appear within a second or two. Tap a tile to toggle, slide across a light, cover or thermostat to set brightness, position or temperature, drag up and down to scroll.
Works: tile, button, entity, light, thermostat, entities, glance, heading, markdown, sensor and graph cards (history, statistics, mini-graph-card, apexcharts), gauge, picture cards, grid, stacks, layout-card, conditional and visibility rules, and the Mushroom entity, chips, title and template cards.
Does not draw: other custom cards, card-mod, button-card JavaScript (a placeholder tile names the card), and built-in pages such as Energy, History and Logbook.
A small server called dashcast runs in Docker next to HA. It opens the dashboard in a headless Chrome, signed in with a long-lived token, and streams only the changed pixels to the Show, encrypted with a key you choose. The Show shows exactly what a browser would, custom cards and Energy page included, with about a fifth of a second of touch lag.
Best for the fancy dashboards. Drawn mode is best for a snappy room controller.
dashcast needs a Docker host that can reach Home Assistant over HTTP. Not napoli: the HA VM uses a macvtap NIC and napoli itself cannot talk to it. Rabies (10.0.0.36) already runs the observability compose stack and reaches 10.0.0.50, so it is the natural home; Roma or torino work too.
In HA, create a user that is not an administrator (Settings → People → Users), log in as it once, and create a long-lived access token from its profile. dashcast signs in with that token; a non-admin user limits what a leaked token could do.
mkdir -p /opt/dashcast && cd /opt/dashcast
cat > .env <<'END'
HA_TOKEN=paste-the-long-lived-token
DASHCAST_KEY=a-long-random-string
END
cat > docker-compose.yml <<'END'
services:
dashcast:
image: ghcr.io/huskerminion/techo5-dashcast:latest
restart: unless-stopped
ports:
- "10.0.0.36:9555:9555"
environment:
HA_URL: http://10.0.0.50
HA_TOKEN: ${HA_TOKEN}
DASHCAST_KEY: ${DASHCAST_KEY}
shm_size: 256m
END
docker compose up -dPort 9555 stays on the LAN. Never forward it from the router.
Swipe down on the Show → Connections → Dashboard server: enter 10.0.0.36:9555 and the key. Or from HA call the action esphome.<node>_dashboard_server with address and key. Then set Dashboard mode to Streamed and pick the dashboard.
The Show detects the wake word by itself and streams the speech to Home Assistant's Assist. Assist needs a speech-to-text engine and a text-to-speech voice. Nothing is configured yet on ha.daha.us, so this is the work to do before the Show arrives:
| Piece | Plan |
|---|---|
| Speech to text | Whisper (Wyoming add-on). On the HA VM's two vCPUs a command takes two to four seconds to transcribe. For snappy replies run Whisper on kuru, which already serves Ollama, and point HA at it over the Wyoming protocol. |
| Text to speech | Piper (Wyoming add-on). Fast enough on the VM. |
| Wake word | On the device (microWakeWord). No openWakeWord add-on needed. |
| Conversation | Assist handles device control ("turn off the office lights", "set a timer for ten minutes", "is the front door open"). For open questions, add Ollama on kuru as the conversation agent with "prefer handling commands locally" turned on. |
| Exposed entities | Settings → Voice assistants → Expose. Lights, plugs, the alarm, covers, and the cameras for "show me the driveway". |
The Show's speaker is fine for spoken replies and radio. For music, send Music Assistant to a Cast speaker or a TV instead.
Beyond the voice satellite and the dashboard settings, the device offers a media player, its front camera, an update entity, and a set of ESPHome actions you can call from automations:
| Action | Use |
|---|---|
| home_show_camera | Pop a camera on the screen for N seconds. Doorbell rings, show the front door. |
| home_cameras | Set the list of cameras available on its Cameras page. |
| announce_house | Say something on every other techo5 Show in the house. |
| timer_start, alarm_set, reminder_set | Timers, alarms and reminders that ring on the device even if HA is down. alarms_follow wires input_datetime helpers to it. |
| screen_night_hours | Dim or black out the screen between two times. |
| calendar_sources, calendar_show | Which HA calendars to show and pop up. |
| home_weather, home_slideshow, home_radio | Weather entity for the clock, photo source for the idle screen, radio stations. |
| intercom_call, phone_call, phone_account | Show-to-Show intercom, and SIP calling if you sign it into a provider. |
| ssh_keys | Drop an SSH public key on it. SSH is off by default and key-only. |