
A smart home that is not listening for somebody else
What you will learn
- Why your smart speaker sends your voice to another state to switch on a nearby lamp
- How to build the same thing at home, so it keeps working when the internet does not
- The two small mistakes that cost hours, written down so they cost you nothing
Say the wake word to a shop-bought smart speaker and your voice leaves the building. It travels to a large building full of computers in another state, gets turned into text there, and comes back as an instruction to a lamp that is eight feet away from you. If that company has a bad night, your lights stop working. In your own house.
None of that is technically necessary. It is a business model.
Home Assistant is the open version. It runs on a small computer in your house, it talks to your devices directly, and it keeps working when your internet does not. Mine lives on a tiny computer that uses less electricity than a light bulb.
Start here, and not with voice
Install it and let it look around your network. It will find things on its own, more than you expect. Get your lights and switches appearing, build one automatic rule that actually does something you want, and then live with it for a week.
This thing is deep. It will absorb as much time as you hand it. Get one useful thing working before you start building a cathedral.
The wall panel
I have a small computer behind a screen in the living room showing the house at a glance. It is a four inch touchscreen next to a seventy five inch television, which is a ridiculous sentence, but the little one is the control panel and the big one is for everything else.
The trick is running the web browser in a locked-down mode so that it is only the dashboard. No address bar, no tabs, nothing to close by accident.
The browser's name changed. The command is chromium, not
chromium-browser, and half the guides online still have the old one.
You get a confusing "command not found" and start doubting the whole approach over
seven characters.
A fresh browser on a machine with nobody sitting at it will stop and ask for a password to unlock its keyring, and then wait forever. There is one setting that tells it to skip that. Nobody mentions it, because everybody hits it once and then forgets.
Voice, without the cloud
This is the part people assume is impossible. It is not. It is three separate jobs, and you can run all three yourself.
- Hearing the wake word. A small program that listens for one specific phrase and does nothing else. Runs happily on a tiny computer. Mine listens for "Hey Jarvis", because I am not subtle.
- Turning speech into text. This is the heavy one. It wants a machine with a graphics card.
- Turning text back into a voice. Also happier with a graphics card, and this is where you get to choose what your house sounds like.
They do not have to live on the same machine. The little computer by the sofa just listens. When it hears the wake word it sends the audio to the machine in the other room that has the graphics card, and that machine does the thinking. Nothing leaves the house at any point.
The wake word is the easy half, and getting it working feels like real progress. Then you hit a wall, because the chain is not finished until the other two pieces exist somewhere too.
If you only set up the listener, you get a system that knows you are talking to it and has no idea what you said. Plan for all three from the start.
What it is actually worth
Speed, mostly. A command handled at home does not make a round trip to another state, so the response is close to instant in a way the shop-bought ones are not.
And the way it fails changes completely. When the internet goes out here, the lights still work, the automatic rules still run, and the voice still answers.
You do not need the voice half to get value out of this. A dashboard that controls your house and keeps running during an outage is already worth the afternoon.
When the internet goes out here, the lights still work. That is the whole argument in one sentence.
The main part runs on a small always-on computer. The heavy voice pieces want a machine with a graphics card. Replace anything in angle brackets with your own value.
1. Install it and let it look around
What this is: a web address, not a command. Install the software on a machine that stays on, then open this page to create your account.
What should happen: it will already have found devices on your network before you have configured anything.
What to do next: get lights and switches showing, build one automatic rule, and live with it for a week before adding more.
http://127.0.0.1:<port> # or the box's address from another device
2. Set up the wall panel
What this does: opens the browser locked to your dashboard, at a set size and position, with nothing else on screen.
What each part is for: the first setting removes all browser controls. The second is the password fix described below. The rest place the window on the right screen.
What should happen: the screen shows only your dashboard. Set it to run when the machine starts.
chromium --kiosk --password-store=basic \
--window-size=<w>,<h> --window-position=<x>,<y> \
"http://<home-assistant-address>:<port>/<dashboard>"
3. The two settings that cost real time
What the first command does: tells you whether the browser is installed and under what name.
Why you need it: the name changed. Older guides use the old one, and you get "command not found" for a program that is definitely installed.
The second line: is the setting that stops a machine with nobody sitting at it hanging forever on a password prompt.
command -v chromium
# the setting that skips the keyring prompt on an unattended machine
--password-store=basic
4. Local voice is three separate jobs
What this lists: the three pieces and where each one should live. They talk to each other over a shared protocol, so they can sit on different machines.
Where to wire them together: in the voice assistant settings, join all three into one chain.
# 1. WAKE WORD tiny, always listening, runs on the small box
# waits for one phrase, for example "Hey Jarvis"
# 2. SPEECH TO TEXT the heavy one, wants a graphics card
# 3. TEXT TO SPEECH also happier with one, and it picks the voice
Set up all three, or you have a doorbell that cannot take a message.
This page in the original Kyber Cypher voice: A smart home that isn't listening for someone else