The Stereo Is Responding.
A day of room-aware music, less-confused lights, a Plex dashboard, and teaching the house that “next song” needs a destination.

I spent part of today teaching a house what “next song” means.
This sounds like a modest ambition. It becomes less modest when the house has several speakers, more than one voice assistant, and a music service that remembers where a stereo used to live on the network.
People worry that AI will replace writers. So far, mine has mostly helped me negotiate with audio equipment. The novel can wait. The stereo has moved.
The stereo had left a forwarding address. Nobody read it.
The first music problem was wonderfully unglamorous: a player had picked up a different network address, while Music Assistant was still trying the old one.
We corrected discovery and tested playback. Both Music Assistant and the stereo reported that music was actually playing.
We also fixed the failure response. An unavailable player should not produce a cheerful announcement that music has been queued. I already have enough devices expressing confidence without evidence.
A router reservation is still the follow-up needed to keep that address stable. Today’s repair got playback working; preventing the same problem tomorrow is a separate checkbox.
Two Echo Dots found new employment
We also unlocked two second-generation Echo Dots and used Kiosk Satellite to connect them to Home Assistant as voice satellites.
Kiosk Satellite is an Android app that can turn a spare device into a Home Assistant dashboard and voice endpoint. Wake-word detection runs on the device, and its Home Assistant connection exposes controls and sensors for automations. On a tablet, that can mean a wall dashboard with music controls. On our Dots, the useful part is having a microphone and speaker connected to the assistant we choose.
The project has a dedicated Echo Dot setup guide for the second-generation model running LineageOS. It runs without a screen and can be configured through a browser. Unlocking and installing the operating system are the groundwork; Kiosk Satellite is the app that gives the repurposed hardware its Home Assistant job. This is a specific supported setup, not an app you can simply ask stock Alexa to install.
For me, the appeal is reuse and control. We already had compact devices built to hear speech across a room. Bringing them into Home Assistant lets us keep that hardware while connecting it to our own automations and preferred music players. The Dot can handle the conversation while a proper stereo handles the music. No need to ask a little plastic puck to become an audiophile.
There is a useful distinction here: local wake-word detection does not automatically make every answer local. Speech recognition, speech synthesis, and any AI service depend on the Home Assistant voice pipeline you configure. Kiosk Satellite provides the endpoint; our shared assistant and Music Assistant controls provide the behavior described below.
The little pucks now have a career beyond their original assignment. I admire their willingness to retrain. Mine required several browser tabs.
“Here” should mean something
Once the stereo was reachable, the bigger problem was the vocabulary.
“Play music” had a narrow shortcut. Asking for an artist, choosing a service, or sending music somewhere else needed a more coherent system. Adding another voice device should not mean inventing another slightly different collection of automations.
We built shared music controls around a few rules:
- Use the speaking device’s room as the default destination.
- Honor an explicitly named destination.
- Remember that destination for follow-up commands.
- Keep each assistant’s context separate.
- Check what actually happened before announcing success.
That third rule is the one I care about most. If I ask for music somewhere else and then say “next,” I should not need to repeat a small shipping label.
Tests covered artist shuffle, albums through Tidal, radio, queue-next behavior, room routing, and playback transfers. A second repurposed Echo Dot joined the same assistant setup, with music routed to its intended stereo. Independent playback worked, and a synchronized group also reported both stereos playing the same track.
These were tests through Home Assistant Assist using the devices’ context. The spoken, across-the-room microphone test is still on the list. Software receiving the right request and a microphone hearing me over a dishwasher are two different accomplishments.
We also investigated wake-word arbitration: the part that should stop two nearby assistants from answering at once. The setting was sent, but we have not confirmed that coordination end to end. I am not declaring victory over a household chorus until I have heard the household refrain from becoming one.
A room is allowed to be its own room
Some of the most useful work was less conversational.
A lighting group was mixing together controls for two different areas. We separated the groups, moved the relevant devices into the right area, and restored an occupancy automation with its existing five-minute shutoff.
Temperature, humidity, and battery information now show up where they belong. Appliance power and energy readings were added to the appropriate detail panel.
The saved configuration and mobile display were checked. One unavailable light controller remains unavailable, and the physical motion test still needs doing.
There is a particular satisfaction in making a dashboard agree with the building. A button labeled for one room should ideally control that room. This is the sort of radical product vision you arrive at after owning enough smart bulbs.
The dashboard can now help me avoid watching anything
We also added a “Fresh on Plex” media card to the Home panel of the live dashboard.
It brings together recently added movies, episodes, new shows, and Seerr requests, with artwork and availability information. It refreshes every minute while open, and Plex titles can be tapped to open them.
Seerr’s broken connection was repaired along the way. The live feeds and desktop/mobile previews passed their checks. The final visual check inside the complete, authenticated dashboard is still pending.
The practical benefit is having one place to see what arrived and what is still a request. The less practical benefit is that I can now browse things to watch from the same interface I use to adjust the lights, without committing to either activity.
Naturally, this required a blog
Somewhere among all of this, we built the place you are reading.
Jack Handey’s Nightmare is a deliberately simple EmDash blog running on Cloudflare Workers. We gave it a spare layout, fixed the phone’s dark-mode controls, connected Cloudflare email, and sent a successful test through the blog’s email system.
We also connected the blog to an account-hosted plugin using OAuth, so drafting articles does not depend on carrying an API key from one computer to another.
That is the experiment here: use AI to help build things, keep track of what actually worked, and write down the awkward bits before memory edits them into a flawless afternoon.
Today included working music, better room controls, a new media card, and a blog. It also included a few tests we still owe ourselves. Both belong in the notes.
Art is dead. The stereo is responding. We are calling that progress.