Accessible Home

Accessible Home User Guide

This guide explains how to install, use and extend Accessible Home, an accessible interface for Home Assistant built for JAWS, NVDA and VoiceOver. It accompanies the Accessible Home Change Log.

Downloads

Installing and signing in

Accessible Home is a single file, index.html, that lives inside Home Assistant itself. There is nothing else to install and no extra server to run.

What you need: Home Assistant on any hardware (a Home Assistant Green or Yellow, a Raspberry Pi, a virtual machine or a mini PC) and a recent version of Home Assistant. Pages under Settings need an administrator account. Everything else works with any account.

Copy the file onto your Home Assistant

The Samba share add-on lets you copy files from Windows File Explorer, which works well with JAWS.

  1. In Home Assistant, open Settings, then Add-ons, then Add-on Store, and install Samba share.
  2. On the add-on’s Configuration tab, set a username and password, save, then start the add-on.
  3. In Windows File Explorer, type \\homeassistant.local\config in the address bar and press Enter. Sign in with the Samba username and password.
  4. Inside the config folder, create a folder named www. Inside www, create a folder named accessible.
  5. Copy index.html into the accessible folder. If you downloaded the file under another name, such as accessible-home-general.html, rename it to index.html.
  6. If you just created the www folder, restart Home Assistant once so it starts serving that folder. Use Settings, then System, then the Restart button.

Open the app

The app’s address is your Home Assistant address with /local/accessible/index.html on the end:

The first time, choose Sign in with Home Assistant. You’ll see the normal Home Assistant login page; sign in as usual and you’ll come straight back to the app. It stays signed in on that device until you choose Sign out.

Put it on your iPhone home screen

  1. Open the app’s address in Safari. If you have remote access, use that address, so it works both at home and away.
  2. Sign in.
  3. Open the Share menu and choose Add to Home Screen. The icon is named Home.

It then opens full screen like a regular app.

Signing in with a token instead

If the normal sign-in ever gives you trouble, you can use a long-lived access token. It keeps working until you delete it, so the normal sign-in is safer; see Security. In Home Assistant, open your profile, go to the Security tab, and create a long-lived access token. In the app, expand Use a long-lived access token instead, paste it into the Access token field and press Connect.

Updating to a new version

Copy the new index.html over the old one in the same folder.

You don’t need to reload anything after that. Home Assistant tells browsers to keep its files for up to a month, so the app looks after updates itself:

In the Home Assistant app on your iPhone, the app keeps its page open in the background, so it can go on showing the version it loaded earlier. To make it load the new one:

  1. Close the Home Assistant app completely. With VoiceOver, slide one finger slowly up from the bottom edge of the screen until you hear a second tone, then lift your finger to open the App Switcher. Swipe to Home Assistant, then swipe up with three fingers to close it; or swipe down with one finger until you hear the Close action, then double-tap. Open the app again and choose Accessible Home.
  2. If it still shows the old version, open the Home Assistant app’s own settings (Settings, then Companion App) and choose Reset frontend cache. The app reloads Home Assistant from scratch.

To check which version you have, open Settings, then App preferences, then About, or move to the footer at the end of any page. It gives the version and the build number, for example “version 1.0, build 1”. The version changes on release days; the build number goes up with every change.

Getting around

Every screen has the same layout: the Home Assistant view button, the Go to menu, the app heading, a status line, then the current page. Heading navigation is the fastest way to move around.

Groups that open and close. Wherever two or more things of the same type are listed together, such as the lights on Home, the devices in a room, a device’s controls, or your favorite devices, they’re under one heading that’s a button, such as “Lights, 6, 2 on”. It starts closed; press it to open the group and you land on the first thing in it, and press it again to close it. Its name keeps count of how many are on, playing or unlocked. A type with only one thing stays on its own, after the groups. Each device keeps whether each group is open.

When you open a section, focus goes straight to the first item in it, such as the first button in Settings or the first item in the Automations list, skipping the filter box. When you open something inside a section and go Back, focus returns to the item you opened. Opening a media folder puts you on its first folder or file.

Focus stays where you are. Using anything, anywhere in Accessible Home, leaves you on it: pressing a button or switch, adjusting a temperature or volume, choosing from a menu, saving, or typing. When the page or part of it changes because of what you did or because Home Assistant reported something, such as the thermostat reaching its new temperature, a speaker starting to play, or a page refreshing after a save, you’re put back on the same control, never somewhere else on the page. If that control is gone, for example after deleting an item, you land on the nearest thing in the same place. Adjusting a control with VoiceOver counts too, even though VoiceOver doesn’t always tell the browser it’s there.

The page layout

  1. Home Assistant view, a button at the very top of the page, before everything else. It goes to Home Assistant’s Overview page. When you opened Accessible Home from Home Assistant’s sidebar or the iPhone app, it changes page inside Home Assistant, the way Home Assistant’s own sidebar does, so Home Assistant doesn’t load again. Home Assistant’s sidebar brings you back.
  2. Heading level 1, Home, the app’s name. Right after it is the status line, for example “Connected to Home” or “Connection lost. Reconnecting.” Then At a glance, a level 2 heading with a short list, on every screen: what’s playing, for example “Playing: Clair de Lune on Living room Sonos.”; while a meat probe is out of its charger, the grill, for example “Grill: Meat probe 1, 162 degrees, about 40 minutes to its target of 203.”; and “Needs attention” with how many notifications, repairs, updates and low batteries there are, or “Nothing needs attention.” It keeps itself up to date without speaking, so it never talks over you; move to it, or press the heading key, whenever you want a look. Below that is the Command box, a search landmark with the Briefing button first, on its own line, then the Command field and the Do it button. The field’s description, read when you reach it, gives examples of commands.
  3. Go to, right after Home Assistant view, in the Go to menu landmark: one button that opens a list of every section, so the sections aren’t all on the screen. It says “collapsed” or “expanded”. Press it and you land on the section you’re in, marked as the current page; choose another to go there, and the list closes. Escape closes it and puts you back on Go to; moving out of it closes it too. The sections, in alphabetical order: Assist, Automations, By type, Favorites, Home, Media, Notifications, Rooms, Scenes, Scripts, Search and Settings. Some appear only when Home Assistant has what they need: Cameras, Energy (once there’s a thermostat) and Network, each in its alphabetical place. The Notifications button includes a count when something needs attention, for example “Notifications, 2”. The Alt plus Shift shortcuts still go straight to a section without opening the list.
  4. Now playing on this device, a region that appears only while the Media section is playing something here. See “Media library”.
  5. The main landmark. Every page starts with a level 2 heading naming the page. When you open a page, focus moves to its first item; the heading is just above it.

How it looks

Accessible Home is built for screen readers first, and it looks the part too. Nothing here changes what your screen reader says.

Descriptions on controls

Many buttons, switches and fields have a short description of what they do or change. It isn’t printed under the control; your screen reader speaks it when you reach the control, the way it speaks a tooltip. JAWS and NVDA say it after the control’s name, and Insert plus Tab in JAWS, or NVDA plus Tab, repeats it. VoiceOver says it after a short pause. Pointing at a control with the mouse shows it as a tooltip. Text that explains a whole section, and live information such as how long is left, is still printed on the page.

To turn descriptions off, so controls are read by name only, open Settings, then App preferences, and clear Describe what controls do, spoken and as tooltips. Or type “descriptions off” in the Command box, and “descriptions on” to bring them back. The setting is kept on each device, so you can have them on your iPhone and off on your computer.

Headings inside pages

Each item is also a labeled group, so when you Tab into its controls, JAWS and NVDA announce which device or item they belong to.

Going deeper and coming back

Most things open a new page: editing an automation, a device’s settings, an integration. Opening anything works the same way everywhere, whether you double-tap, press Space or press Enter: focus goes straight to the first entry inside it, such as the first control on a device’s page or the first item in a group. A Back button sits right after the page heading, and its label says where it goes, for example “Back to Automations”. When you go back, focus returns to the item you opened, so you never lose your place.

If a page has unsaved changes, leaving it asks whether to discard them.

At the very bottom of every screen, after the main content, is a footer with the app’s version and the date and time it was last updated. It’s the content information landmark, so landmark navigation reaches it directly.

Keyboard shortcuts on Windows

These pass through JAWS and NVDA in both browse and focus mode.

Spoken announcements

The app speaks results through your screen reader without moving focus. What it announces is up to you, under Settings, then App preferences:

Errors are always announced, whatever this is set to.

Confirmations

Anything that can’t easily be undone, like deleting, unlocking, restoring a backup or restarting, asks first. The question appears on the page itself, as an alert dialog with the question and two buttons, usually Yes and No, or wording that fits, such as Yes, cancel it and No, keep it, or Leave without saving and Stay. Focus starts on the safe answer. The rest of the page can’t be reached until you answer, Escape means no, and afterwards focus goes back to the button you pressed.

When something needs typing, such as a new name, a password, your alarm code or a due date, the same dialog has a text box, filled in with the current value when there is one, and OK and Cancel buttons. Focus starts in the text box, and Enter is OK.

The app doesn’t use the browser’s own pop-ups, because VoiceOver handles them poorly inside the Home Assistant app on iPhone.

Organized lists: trees and expandable groups

Automations, Scripts, Entities and Integrations are organized into groups, so you only open what you need. Each page starts with a Group by choice (Automations, Scripts and Entities), a Filter box, and a count, such as “12 scripts in 4 groups”. Typing in the filter opens every group that has a match and leaves out the rest.

The same lists can appear in two ways. Which one you get is under Settings, then App preferences, then Layout of organized lists. Automatic, the default, uses the tree on computers and expandable groups on phones and tablets.

The tree, best with JAWS and NVDA on Windows. The whole list is one control, and your screen reader switches to focus mode by itself. Each item says its name, a short status, whether it’s a group, whether it’s open or closed, its level and its position, for example “Front, 2 scripts, collapsed, 1 of 4, level 1”.

The Tab key moves into and out of the tree as one stop, so you never have to tab through every item.

Expandable groups, best with VoiceOver on iPhone and iPad. Each group is a heading with a button, such as “Front, 2 scripts”, that says whether it’s expanded or collapsed. Double-tap it to open it, and focus moves to the first item inside. Items inside are the next heading level down. Each item has just two buttons: its main action, such as Run, and More actions.

The actions page. Enter on a tree item, or More actions, opens a page named after the item, with every action as one list of buttons: the main action first, then the rest in alphabetical order. When you go Back, you’re returned to the same item, and the groups you had open stay open.

Section by section reference

This chapter goes through every section in the Go to menu, in order, and every page under Settings. For each, it says what the section is for, how to get there, how the page is laid out by headings, and what every button does. Other chapters explain the bigger features in more depth, and this chapter points to them.

Assist

What it’s for: asking or telling Home Assistant things in plain words, like “is the back door locked?”

How to get there: the Assist button, or Alt plus Shift plus 1.

Layout:

Tips: the answer is read out automatically and focus stays in the box. On iPhone, use the dictation key. Your request goes to your preferred voice assistant, the same one your phone uses when you speak to it, and the page names it. If that assistant uses an AI, such as Google Gemini, you can ask follow-up questions, and anything it can’t answer goes to Home Assistant’s own agent instead. Assist can only see and control what’s shared with it under Settings, then Voice assistants.

Automations

What it’s for: everything that happens by itself, such as lights at sunset or announcements when a door opens.

How to get there: the Automations button, or Alt plus Shift plus 2.

Layout:

Main action: Edit, or View for ones written in YAML files. In the tree, press Space. More actions, or Enter in the tree, lists Edit first, then Disable or Enable, Run actions (runs the actions now, skipping triggers and conditions), Favorite, Room, labels and name, Run history, Duplicate and Delete. Automations written in YAML files don’t have the last three.

More detail: the Automations chapter covers the editor, every trigger, condition and action, describing in words, checking for problems, blueprints and run history.

By type

What it’s for: seeing every device of one kind together, for example every light or every lock.

How to get there: the By type button, or Alt plus Shift plus 3.

Layout:

Tips: this is the quickest way to the helpers you’ve made, such as toggles and number settings, and to every camera’s page.

Cameras

What it’s for: your cameras, whether their motion is announced, and the camera events with Ring’s descriptions, going back as far as Ring keeps them. It appears in the Go to menu, between By type and Coffee, when you have cameras.

How to get there: the Cameras button, Alt plus Shift plus E, or type “cameras” or “camera events” in the Command box. Type “what happened at the cameras” to hear the last three events without opening the page.

What’s on it:

Energy

What it’s for: your whole home’s electricity, day by day, from your power company, and how much your heating and cooling ran: today, yesterday and each of the last 7 days, by month, how many times they started, and, if you add your equipment’s size, estimates of gas and electricity, with your thermostat’s controls at the end. The weather isn’t here; it’s on Home, at the bottom. It appears in the Go to menu, between Coffee and Favorites, once Home Assistant has a thermostat. Opening it puts you on Energy use, at its first part: Estimated costs once the numbers are in, otherwise Whole home electricity.

How to get there: the Energy button, Alt plus Shift plus U, or type “energy” or “heating and cooling” in the Command box. Type “how long did the heat run today” or “heating today” to hear today’s run time without opening the page.

Layout, from the top:

Good to know: the last 10 days come from the thermostat’s own detailed record of when it was heating or cooling, which Home Assistant keeps for about 10 days. Older days and the months come from a permanent record that Home Assistant keeps for good: four counters that start again at midnight, Heating run time today, Cooling run time today, Heating starts today and Cooling starts today, made from two sensors, Heating running and Cooling running. Home Assistant saves their totals every hour as long-term statistics, which take very little space. They’re hidden from lists, Assist and Alexa, so they don’t clutter anything. The permanent record starts from the day it was set up. A furnace’s gas isn’t measured by anything in your home, so gas is always an estimate; your gas bill is the real figure.

The Nest needs the Google Nest integration for run times. Through Matter, a Nest shares the temperature and its settings but not when it’s actually heating or cooling, so until the Google Nest integration is added, Energy use explains what’s missing; the thermostat controls work either way. The Google Nest integration and Matter can both stay; Energy uses whichever reports running, even when it’s hidden. Setting it up, in order:

  1. In Google Cloud Console, make a project and note its Project ID.
  2. Turn on two APIs for it: Smart Device Management and Cloud Pub/Sub.
  3. Set up its OAuth consent screen as External, add your Google account as a test user, and publish it to production, so the sign-in doesn’t expire after a week.
  4. Make an OAuth client of type Web application, with the redirect address https://my.home-assistant.io/redirect/oauth, and keep its client ID and secret.
  5. In the Device Access Console, pay Google’s one-time 5 dollar fee, make a Device Access project, and give it the OAuth client ID.
  6. Make a Pub/Sub topic, let the Device Access Console publish to it, and turn on events in your Device Access project with that topic.
  7. In Accessible Home, open Settings, then Integrations, and add Google Nest. Enter the IDs and the client ID and secret, sign in to Google, allow your thermostat, and choose the topic.

Claude can go through these with you; the fee and your Google sign-in are the parts only you can do.

Favorites

What it’s for: the things you use most, on one page, so you don’t have to dig through rooms.

How to get there: the Favorites button in the Go to menu, or Alt plus Shift plus 4 on Windows.

Layout:

Buttons: each favorite has the same controls it has everywhere else, plus More for its details page and Favorite, which is pressed. Press Favorite to remove it from the page.

How to add a favorite: press the Favorite button next to any device control, script, scene or automation, anywhere in the app. The button is a toggle: your screen reader says “pressed” when it’s a favorite.

Tips:

Grill

What it’s for: a ThermoWorks RFX wireless thermometer: each meat probe’s temperature and target, how long it has to go, the grill air temperature with an alarm for when it’s too high or too low, and whether the RFX Gateway is connected. It appears in the Go to menu, between Favorites and Home, once the ThermoWorks Cloud integration is set up in Home Assistant.

How to get there: the Grill button, Alt plus Shift plus G, or type “grill” in the Command box. Type “grill temperatures” or “how’s the grill” to hear the readings without opening the page, “grill coach” for the coach’s estimate, “probe 1 target 203” to set a target from anywhere, “grill air 250” to set the grill air target, “grill alarm” to hear the grill air and the alarm, “alarm range 25” to set the range, and “grill alarm off” or “grill alarm on”.

Layout:

The grill air alarm. Nothing sounds while the grill heats up. The alarm starts watching once the grill air first comes within range, and you hear “Grill air has reached 250 degrees.” From then on, if the grill air stays too high or too low for a minute, the alarm sounds on the speakers and your phone, even during quiet hours: “Grill alarm. The grill air is too low: 212 degrees. The target is 250, and the alarm sounds below 225.” It repeats every 2 minutes until the grill air is back in range, then you hear “Grill air back in range.” While Accessible Home is open, it also plays an alarm sound and says it there, even with sound cues off. Changing the target waits for the new range again, and unplugging the air probe for 5 minutes puts it back to waiting, ready for the next cook. It runs in Home Assistant, in the Grill air alarm automation, so it works with the app closed. The Grill announcements switch doesn’t turn it off; its own switch does.

How the time left is worked out. With the Grill Estimates add-on on Home Assistant, each probe gets a Meat probe time left sensor, and that’s what you hear.

Tips:

Home

What it’s for: the things you use most, on one page. The app always opens here.

How to get there: the Home button in the Go to menu, between Favorites and Media, Alt plus Shift plus O, or type “home” in the Command box.

Layout: level 3 headings in alphabetical order. A part with nothing in it is left out.

Cameras, Lights, Locks and Now playing, when there are two or more, are headings that open and close, closed to start, such as “Lights, 6, 2 on” or “Now playing on Sonos, 3 speakers, 1 playing”.

Tips: everything updates as it changes without moving you. Press H on a desktop screen reader to jump between the parts. Thermostat and Weather are always open.

Media

What it’s for: browsing and playing your media library: everything under My media in Home Assistant, such as a network drive or an rclone mount, plus other sources like internet radio.

How to get there: the Media button, Alt plus Shift plus M, or type “media” in the Command box. Focus goes straight to the first folder in your library, past Now playing and Recently played. Each folder or file is read once, by its name, without a description after it.

Layout:

See “Media library” in the Controlling devices chapter for the details.

Network

What it’s for: your UniFi network: whether your UniFi equipment is online, what’s connected, firmware updates, and network announcements. It appears in the Go to menu, between Media and Notifications, once the UniFi Network integration is set up in Home Assistant.

How to get there: the Network button, Alt plus Shift plus W, or type “network” or “wifi” in the Command box. Type “network status”, “internet status” or “how many devices are connected” to hear a one-sentence summary without opening the page.

Layout:

Notifications

What it’s for: messages from Home Assistant, and problems it wants you to fix.

How to get there: the Notifications button, or Alt plus Shift plus 5. When something is waiting, the button says how many, for example “Notifications, 2”.

Layout:

Rooms

What it’s for: finding a device by where it is, and changing its settings.

How to get there: the Rooms button, or Alt plus Shift plus 6.

Layout, first page:

Layout, a room: see “Rooms, devices and their settings” in the Controlling devices chapter. In short: a summary, All lights on, All lights off and Room settings buttons, then a Devices and controls heading. Two or more of the same type, such as lights, are grouped under a heading that opens and closes, such as “Lights, 3, 1 on”; the rest follow in one list, sorted by name. Each item has Open and, where it makes sense, a quick on and off switch.

Layout, a device: sections for Controls and status, Settings and Diagnostics, then More for this device, with Device settings, New automation with this device and History. A Used by list at the end shows automations, scripts and scenes that use the device.

Tips:

Scenes

What it’s for: saved settings for a group of devices, such as Movie night.

How to get there: the Scenes button, or Alt plus Shift plus 7.

Layout:

Buttons on each scene, in order: Activate and Favorite. Scenes made in Home Assistant also have Edit, Duplicate and Delete. Scenes from integrations, such as Philips Hue, can only be activated.

More detail: the Scenes and scripts chapter.

Scripts

What it’s for: a list of actions you run whenever you want, such as Goodnight, or Describe front camera.

How to get there: the Scripts button, or Alt plus Shift plus 8.

Layout:

Main action: Run, which becomes Stop while running. In the tree, press Space. More actions, or Enter in the tree, lists Run first, then Favorite, Run with options (fill in the script’s values first, if it has any), Room, labels and name, Edit, Run history, Duplicate and Delete.

Tips: you can also run a script by typing its name in the Command box, or by asking Assist if the script is shared with Assist.

What it’s for: going straight to something by name.

How to get there: the Search button, or Alt plus Shift plus 9. Focus goes straight to the search box.

Layout:

Tips: search matches names, entity IDs and room names, so “kitchen” finds everything in the kitchen. For doing something rather than finding it, the Command box is faster.

Settings

What it’s for: everything that sets up Home Assistant and this app.

How to get there: the Settings button, or Alt plus Shift plus 0.

Layout: four menu buttons, each a level 3 heading, in alphabetical order. Pressing one opens its menu and puts you on its first item; the items are in alphabetical order, and each has a one-line description, spoken when you reach it. Pressing the button again, or Escape, closes the menu and puts you back on the button. Opening another menu closes the one that was open. When you come Back from a Settings page, the menu you used is still open, with focus on the item you chose:

Each Settings page is described below, in the order it appears: group by group, alphabetically.

Settings pages, one by one

These sit outside the sections and are on every screen:

Command box, sound cues and briefing

These three features are the fastest way to use the app day to day. The Command box does things without navigating, sound cues tell you what happened without waiting for speech, and the briefing tells you the state of the house in one go.

The Command box

The Command box sits at the top of every screen, just below the status line. It’s a search landmark, so you can reach it with your screen reader’s landmark navigation, or press Alt plus Shift plus K on Windows. On iPhone it’s near the top of the screen; double-tap the Command field and type or dictate.

Type a command and press Enter, or press Do it. The result is announced and focus stays in the box, ready for the next command. Things you can say:

Names match loosely. You don’t need the full name, and voice assistant aliases you’ve set under Entity settings work too. If more than one device matches, the app plays a short two-note sound, says “Which one?” with the choices, and lists them as buttons just below the Command box. Choose one, or choose “None of these, ask Assist instead”.

Press the Up arrow in the Command field to bring back earlier commands, and Down to move forward again. The last 30 are remembered on each device.

Sound cues

Short sounds play alongside your screen reader, so you know what happened before speech finishes. They’re on by default. Each sound has a distinct shape:

To change them, open Settings, then Sound cues:

  1. Play sound cues sets when they play: Off; For my own actions and errors; or Also for doors, locks, people coming and going, alarms and notifications (the default). Ordinary sensor changes, like temperature, never make a sound.
  2. Sound volume is a slider. Each change plays a sample so you can judge it. This volume is separate from your screen reader’s volume.
  3. Hear each sound has a Play button for every sound, so you can learn them.

On iPhone, sounds start after your first tap in the app, and they follow the ring and silent switch. If you don’t hear them, check the switch and the Sound volume slider.

House briefing

Press Briefing, just above the Command field, press Alt plus Shift plus I, type “briefing” in the Command box, or open Settings, then House briefing. It’s played as soon as it opens (see “Where it plays” below), and each part it includes has its own level 3 heading so you can review it. To begin with it includes Now, People, Climate and Needs attention; the others are there to switch on under What it includes:

At the top, a line says where it’s playing and why, then the buttons: Play on the speakers, Play on this device, Read it again (by your screen reader), Choose speakers, Set up a daily spoken briefing and Refresh.

What it includes. The last heading on the page, What it includes, has a checkbox for each part. Your choice is kept in your Home Assistant account, so every device uses it, and it applies the next time you open the briefing.

Where it plays. The heading Where it plays holds When I ask for a briefing, kept on each device:

Home or away comes from the person linked to your Home Assistant sign-in, which is you. You can also say where in the Command box: “briefing on the speakers”, or “briefing here”.

To play the briefing on particular speakers, for example only the kitchen:

  1. Press Choose speakers.
  2. Under Speakers, choose a speaker and press Add. Add as many as you like.
  3. Choose the Voice engine. Home Assistant Cloud is the usual choice and sounds the most natural.
  4. Press Play now. Your choices are remembered for next time.

This needs a text-to-speech engine. A Nabu Casa subscription includes one called Home Assistant Cloud. Without one, add Piper, which runs on your Home Assistant itself, or Google Translate text-to-speech under Settings, then Integrations.

To set up a daily spoken briefing, which plays by itself each morning:

  1. Open the briefing and press Set up a daily spoken briefing.
  2. Change the Name if you like. The default is Daily house briefing.
  3. Set the Time, for example 07:30.
  4. Under Days, untick any days to skip. All seven are ticked by default.
  5. Under Speakers, add each speaker it should play on.
  6. Choose the Voice engine.
  7. Leave Only when someone is home ticked so it doesn’t play to an empty house.
  8. Press Hear a sample now to hear exactly what it will say right now.
  9. Press Create the daily briefing. You’ll hear “Daily briefing created. It will play at” and the time.

The daily briefing is a normal automation, listed under Automations as Daily house briefing. To change the time, days or speakers later, edit it there. To stop it, press Disable in its actions on the Automations page, or delete it. The spoken daily version covers the time, weather, who’s home, inside temperature, low batteries and available updates. A daily briefing you set up before build 4 still says the longer version; delete it and set it up again to get the shorter one.

Controlling devices

Four sections show your devices: Favorites, Rooms, By type and Search. Every device looks the same in all of them: a heading with its name, a line describing its state, then its controls.

The four device sections

Hidden and diagnostic entities are left out of the device lists to reduce clutter, except battery levels, which always show. A device’s own page always shows its settings and diagnostics. To show them, turn on “Show hidden and diagnostic entities” in App preferences.

Rooms, devices and their settings

Rooms work in three levels, each on its own page: the list of rooms, one room, and one device. Back always returns to the level above, with focus on the item you came from.

Level 1, Rooms. Each floor is a level 3 heading, such as “Basement level, 1 room”, followed by a button for each room. Each button is followed by a short summary, for example “2 devices, 1 light on” or “3 devices, something playing, 68°F”. If you don’t use floors, the rooms are listed on their own. A last button, No room assigned, holds devices that aren’t in a room yet, such as a phone or a watch.

Level 2, a room. For example, Basement. It starts with the room’s summary, then buttons for All lights on, All lights off and Room settings (rename the room, change its floor or its voice assistant names). Then a level 3 heading, Devices and controls, with a count. Things of the same type, two or more, are grouped under a level 4 heading that’s a button, such as “Switches, 2, 1 on” for the washer and dryer, closed to start; open it and each one inside is a level 5 heading. A type with only one thing is a level 4 heading in the list after the groups:

Names are sorted so that similar names stay together: number words and digits sort the same way, so “Kitchen sink one” comes right before “Kitchen sink2”. When a device has a single control with its own name, like a Hue bulb named Kitchen sink one, the item is listed under that name, and the summary starts with the device’s own name, such as “Device: Hue white lamp 1.”

Level 3, a device. For example, Washer. It starts with the maker, model and room, then up to three sections, each a level 3 heading with a count:

Each control is a level 4 heading, with More and Favorite buttons like everywhere else. Under More for this device are Device settings (name, room, labels, enabled, diagnostics download and removing the device), New automation with this device, and History. If any automations, scripts or scenes use the device, they’re listed at the end under Used by.

Example: changing the washer’s spin speed

  1. Open Rooms and press Basement.
  2. Under Devices and controls, open Switches, find the Washer heading and press Open.
  3. Under the Settings heading, find Spin speed and choose a new option from its list.
  4. The change is sent about a second after you stop, and announced, for example “Washer Spin speed: Extra high”.

Reading a device

The state line is written in plain words, for example:

The state line updates live. It isn’t announced unless your announcement setting includes that device.

Controls by device type

On and off is always a switch named after the device, so your screen reader says something like “Kitchen lamp, switch, on”. Other controls depend on what the device supports:

Sliders follow standard keys: arrow keys move in small steps, Page Up and Page Down in larger steps, Home and End go to the ends. On iPhone, swipe up or down with one finger. The value is announced as you move, and the change is sent about half a second after you stop.

Lists send the change about a second after you stop moving through them, so arrowing through Thermostat Mode doesn’t switch modes on every press.

The More page

Every device has a More button. Its page shows:

To-do lists and calendars

Open list shows unfinished items, then finished ones. Each item has Mark done or Mark not done, Rename, and Delete. An Add item field at the top adds new items when you press Enter.

Open calendar lists events for the next 30 days, grouped by day. You can add an event with a title, start, end, an all-day option, a description and a location.

Cameras

Each camera has Open camera and a Camera on switch, if it can be turned off. The camera page has these parts:

Camera descriptions on speakers

The camera page can describe a picture to you on screen with no setup beyond an AI service. To hear descriptions on your speakers, from a favorite, the Command box or Assist, you make a short script for each camera. The app finds it by its name: a camera called Front door uses the script script.describe_front_door_camera. The words “camera” and “live view” are left out of the camera’s name, so a camera called “Front Live view” uses script.describe_front_camera.

To make the script:

  1. Set up an AI service first; see “Setting up an AI service” below.
  2. Open Scripts and press New script.
  3. In Name, type for example “Describe front door camera”. In Script ID, type describe_front_door_camera, using your camera’s name.
  4. Under Save and more, press Edit everything as YAML, replace what’s there with the example below, and change the three marked entity IDs to yours. Settings, then Entities, with “camera”, “ai task”, “tts” or “media player” in the filter, shows the right IDs.
  5. Press Save, then Run to try it.
alias: Describe front door camera
mode: single
sequence:
  - action: ai_task.generate_data
    data:
      task_name: Describe front door camera
      entity_id: ai_task.google_ai_task   # your AI task entity
      instructions: >-
        Describe what you see in one or two short sentences, for someone
        who is blind. Mention people, vehicles, animals and packages.
        If nothing notable is happening, say so.
      attachments:
        - media_content_id: media-source://camera/camera.front_door   # your camera
          media_content_type: image/jpeg
    response_variable: result
  - action: tts.speak
    target:
      entity_id: tts.home_assistant_cloud   # your voice engine
    data:
      media_player_entity_id: media_player.kitchen   # your speaker
      message: "Front door camera: {{ result.data }}"

To speak on more than one speaker, list them under media_player_entity_id, one per line, each starting with a dash. You can also press Describe a new script in words and describe it, for example “Describe what the front door camera sees and say it on the kitchen speaker”, then check that the Script ID follows the pattern above.

Once the script exists, the camera page has Describe on speakers, “describe front door camera” works in the Command box, and you can mark the script as a favorite. Running it from the app gets a fresh picture first. When an automation runs it by itself, Home Assistant uses the camera’s latest stored picture, which for Ring and similar cameras is from the last motion event or live view.

To hear a description whenever there’s motion, make an automation:

  1. Press New automation and name it, for example “Front door motion description”.
  2. Add a trigger: a Device trigger for the camera’s motion, or Entity state changes on its motion sensor or motion event entity.
  3. Add an action: Perform an action, choose “Scripts: Turn on” and target your Describe script. Or choose the script itself from the action list.
  4. Under Running mode, choose Single, so a burst of motion doesn’t describe the same thing several times. To space descriptions out, add a Wait for a time action of a few minutes at the end.
  5. Press Save.

For Ring cameras with a Ring Protect plan, the camera’s picture only updates when a new recording is ready, usually 25 to 40 seconds after motion. To describe the motion itself rather than the previous recording, add a Wait until a template is true action before running the script, with the template {{ state_attr('camera.front_door', 'last_video_id') | string != old_video | string }} and a 2 minute time limit, and a Set variables action before that which sets old_video to {{ state_attr('camera.front_door', 'last_video_id') | string }}. Tick continue when the time limit runs out, so it still describes something.

To turn the announcements on and off without editing anything, make a Toggle helper, for example “Front door announcements”, and add a condition Entity is in a state that checks it is On. The toggle then shows up in Favorites, Rooms and the Command box like any switch.

Scenes and scripts

A scene saves how a set of devices should be, such as Movie night with the lamp at 20 percent and the soundbar on. A script is a list of actions you run on demand, built with the same step editor as automations.

Scenes

The Scenes section lists every scene. Each has Activate and Favorite, and scenes made in the Home Assistant interface also have Edit, Duplicate and Delete. Scenes written in YAML files or created by integrations can only be activated.

To make a scene:

  1. Choose New scene and type a Name.
  2. Set your devices the way you want them, using the device sections or the device controls you already know.
  3. Back in the scene editor, choose an entity in “Add a device or entity” and press Add to scene with its current state. Or choose a whole device under “Or add every entity of a device” and press Add device to scene.
  4. Press Save.

Each device in the scene is a level 4 heading with two lines: “Saved as” (what the scene will set) and “Right now” (its current state). Its buttons are:

Under “Save and more”: Try this scene now applies it without saving, Use current state for every device recaptures everything at once, and Edit everything as YAML shows the whole scene.

Scripts

The Scripts section groups your scripts by category, by room, by label, or not at all; change it with Group by at the top. Each script has one main action, Run, which becomes Stop while it’s running. Its actions page, from More actions or Enter in the tree, has:

Choose New script to make one. More ways to add has Describe a new script in words, New from a blueprint and Reload scripts from YAML.

To put a script in a room or category, or give it a label, open its actions page and press Room, labels and name. Change Room, Labels or Category and press Save. To start a new category, type its name in Or a new category instead; it’s made when you save. The same works for automations and helpers.

The script editor works like the automation editor (next section), with these differences:

Automations

The automation editor is a set of labeled forms, one step at a time, with no dragging. Every trigger, condition and action Home Assistant supports is available, including device-specific ones and anything else through YAML.

The Automations list

Automations are grouped by category, by room, by label, by whether they’re enabled, or not at all; change it with Group by at the top. Each automation says its state, such as “Enabled, last ran 2 hours ago”. Its main action is Edit, which opens the editor; automations written in YAML files show View instead, which displays their YAML read-only. Its actions page, from More actions or Enter in the tree, has:

At the top are New automation and More ways to add, which has Describe a new automation in words, New from a blueprint, and Reload automations from YAML. A filter box narrows the list as you type.

How the editor is laid out

The editor page has these parts, in order:

  1. A line saying whether you have unsaved changes.
  2. Name (required) and Description.
  3. Level 3 heading When (triggers), with a count. The automation starts when any one of these happens.
  4. Level 3 heading And if (conditions). Optional. All must be true or nothing runs.
  5. Level 3 heading Then do (actions). These run in order, top to bottom.
  6. Level 3 heading Running mode: what happens if it starts again while still running.
  7. Level 3 heading Save and more: Save, Run the actions now, Edit everything as YAML, Run history, Duplicate, Discard changes and Delete.

Nothing is saved until you press Save. Leaving with unsaved changes asks first.

Working with steps

Each trigger, condition and action is a level 4 heading: its number, then a plain-language summary such as “2. When Front door changes from Closed to Open for 5 minutes”. Disabled steps end with “(disabled)”. Each step has these buttons:

Below each list is Add trigger, Add condition or Add action. That opens a page listing every type as a button, each with a one-sentence explanation, spoken when you reach it. Choosing one adds it and opens its form.

Editing a step

The step page starts with a Summary line, then a Type list (changing it clears the step’s settings, after asking). Next come the fields for that type, then a More settings group:

At the bottom: Done returns to the list, Edit as YAML shows just this step, and for actions Run this action now tests it immediately.

Entity choosers have a Filter box above the list when there are many entities: type part of a name and the number of matches is announced. Where several entities are allowed, chosen ones are listed with a Remove button each, and you add more with the list and an Add button.

Trigger types

Condition types

Action types

Steps inside steps

If, Choose, Repeat, Wait for a trigger, groups and condition groups contain their own lists. On the step’s page, each inner list is a button with a count, for example “Then do these actions, 2 actions”, followed by a short numbered preview. Pressing it opens that list on its own page, which works exactly like the main lists. Done or Back takes you up a level. The page heading always names where you are, for example “Option 2 actions”.

Example: porch light at sunset

  1. Choose New automation and type the name “Porch light at sunset”.
  2. Under When, choose Add trigger, then Sunrise or sunset. Set Event to Sunset, then press Done.
  3. Under Then do, choose Add action, then Perform an action. In the Filter box type “light turn on” and choose “Light: Turn on”. Under Targets, add the porch light. Optionally set Brightness percentage. Press Done.
  4. Press Save. You’ll hear “Created and saved”.

Blueprints

New from a blueprint lists your blueprints with Use this blueprint, Re-import to update and Delete. To add one, paste its web address into Blueprint address and press Import. An automation made from a blueprint shows the blueprint’s inputs as a form instead of the step lists. Turn into a regular automation I can edit step by step converts it so you can change the steps themselves.

Run history

Run history lists recent runs, newest first, with the time, the result (“Finished”, “Stopped because a condition was not met”, “Error: …”) and what started it. Step by step shows each step in order with its time and outcome: which conditions passed, which option was chosen, which actions were performed and on what. Home Assistant keeps 5 runs by default; tick “Keep detailed run history for more runs” in the editor to keep 20.

Describe it in words

Instead of building an automation step by step, you can describe it in everyday words and an AI drafts it for you. This needs an AI service set up first; see “Setting up an AI service” below.

  1. On the Automations page, press More ways to add, then Describe a new automation in words.
  2. In What should it do?, describe it. Be specific about names, times and conditions. For example: “When the front door opens after 10 at night, announce it on the kitchen Sonos”, or “If the garage door has been open for 15 minutes, send me a notification.”
  3. If you have more than one AI, choose which in AI to use.
  4. Press Draft it. You’ll hear “Drafting”. It usually takes 5 to 20 seconds.
  5. The editor opens with the draft. You’ll hear “Draft ready”, then the whole automation as one sentence, then the result of an automatic check, such as “No problems found” or the first thing to look at.
  6. Go through the steps as usual and change anything that isn’t right.
  7. Press Save. Nothing is saved before this.

A note at the top of the editor reminds you it was drafted by AI, and quotes what you asked for.

If the AI can’t do what you asked, for example because you mentioned a device you don’t have, it says why and nothing is created.

To change an automation with words, open it in the editor and press Change it with words under Save and more. Describe the change, for example “only on weekends” or “also turn on the hallway light”, and press Make the change. The editor updates, reads the result back and checks it. Your changes aren’t saved until you press Save, and Discard changes undoes them.

Scripts work the same way: More ways to add, then Describe a new script in words on the Scripts page, and Change it with words in the script editor.

The AI is given the names, rooms and current states of your devices so it can use the right ones. Nothing else about your home is sent.

Plain words and checking for problems

Every automation and script editor starts with an In plain words paragraph, which describes the whole thing as sentences and updates as you edit. For example: “Porch light at sunset starts at sunset, 15 minutes before. It only continues if Front door is Closed. Then it does 2 things in order: first, Light: Turn on on Porch light; and finally, wait 5 minutes. If it starts again while still running, the new start is ignored.”

Under Save and more:

The check finds, among other things:

The check also runs when you press Save. If it finds problems, you’re told the first one and asked whether to save anyway.

Setup and organization

Everything that configures Home Assistant is under Settings, grouped into Setup, People, System and This app. Each item is a button followed by a one-line description.

Integrations

The Integrations page is organized into groups, shown only when they have something in them:

An integration you’ve set up once is a single item, such as “Sonos, Loaded. 3 devices, 12 entities”. One you’ve set up more than once, such as two Hue bridges, is a group with one item per entry.

Each entry’s main action is Devices and entities, which opens its devices and entities as a tree. Its actions page has, depending on what it supports: Devices, Options, Reconfigure, Rename, Reload, Disable or Enable, System options, Download diagnostics, Add another and Delete.

To add an integration, choose Add integration, type part of its name in the Filter box (for example “Sonos”, “Matter” or “Fellow”), and press its button. Setup then happens one step at a time:

Leaving partway through asks first and cancels the setup.

Devices

Devices are listed with maker, model, room and integration. The filter matches any of those. Open goes to the Device settings page, which has:

Entities, including cleaning up duplicates

The Entities page organizes every entity, including hidden, disabled and read-only ones. Scripts, automations and scenes are left out, because they have their own sections; tick Include scripts, automations and scenes to show them too. Group by offers:

Each device group starts with Device settings for the device. Each entity says its entity ID and any status, such as Disabled, Hidden or Unavailable. Show chooses All entities, Leave out disabled and hidden ones, or Only disabled, hidden, unavailable or read-only.

Each entity’s main action is Settings. Its actions page also has Details and controls, Hide or Unhide, Disable or Enable, Device settings and Delete.

To change many entities at once, press Change many at once at the top of the Entities page. For example, to clean up duplicate entities left behind by an integration:

  1. Type part of a name in the filter box, for example “alexa”. The filter matches names, entity IDs, integration names, rooms and status words such as “disabled”.
  2. Tick the entities you want, or press Select all shown.
  3. Under “Selected entities”, press Hide, Unhide, Disable, Enable or Delete. You can also choose a room and press Apply room, or choose a label and press Add label.
  4. You’re asked to confirm, then told how many succeeded and why any failed. Some integrations don’t allow deleting their entities; disabling works for those.

An entity’s Settings page has Name, Entity ID, Icon, Room, Labels, Show as (for door sensors, covers and switches), Other names for voice assistants, Visible, Enabled, and which voice assistants can control it: Assist, Alexa and Google through Home Assistant Cloud.

Areas, floors and labels

One page has all three, each a level 3 heading with an Add button and an Edit button per item.

Helpers

Helpers are values you create for automations to use. The Helpers page lists them all with Settings, Options, Entity settings, More and Delete. Create helper offers:

Users and people

Zones

Zones are places like work. Each has a name, latitude, longitude, radius in meters, icon, and whether it’s passive. Your Home zone’s location is in General settings.

Voice assistants

A voice assistant is a set of choices: language, what understands your request, speech to text, the voice that answers, and an optional wake word. The page lists each one as a level 3 heading, with “preferred” after the one your phone, voice devices and the Assist page use.

Home Assistant Cloud

Your Nabu Casa account, if you have one. Nabu Casa is the paid service that adds remote access, Alexa and Google voice control, and natural cloud voices, and it funds Home Assistant’s development. The page says who you’re signed in as, whether the cloud is connected, and when your subscription renews.

System

The System group in Settings covers keeping Home Assistant healthy, plus two main sections of their own: Notifications and Assist.

Notifications and repairs

The Notifications section has two level 3 headings:

The Notifications button in the navigation shows the combined count, for example “Notifications, 2”.

Assist

Type a request, such as “turn off the kitchen lights” or “what’s the temperature inside?”, and press Enter or Send. On iPhone you can dictate into the text box. The answer is read out automatically and focus stays in the text box, so you can ask a follow-up straight away. The conversation is listed below, newest first.

Updates

Backups

The Backups page says when the last and next automatic backups are.

Add-ons

Add-ons lists installed add-ons with their status and version. An add-on’s page has:

The Add-on store lists add-ons you can install, with a filter, plus repositories you can add or remove.

Logs

Errors and warnings lists each problem with its level, the part of Home Assistant it came from, the first message, how many times it happened and when. Full details expands the complete message and technical trace. Clear empties the list.

Under Full logs are the Home Assistant, Supervisor and host system logs. Each shows the most recent lines, with a filter box and an “Only errors and warnings” checkbox. The log text can be read line by line with your screen reader’s arrow keys.

History and logbook

Choose one or more entities and a time period, then press Show history for each entity’s changes, or Show logbook for a readable list of events (leave entities empty for everything). Results appear under a heading that receives focus, newest first. Each device’s More page also shows its last 24 hours.

General settings

Home name, units (US customary or metric), time zone, currency, country, language, and your home’s latitude, longitude, elevation and zone radius.

Restart and system

Developer tools

Setting up an AI service

Two features use AI: describing automations and scripts in words, and hearing what a camera sees. Both need an AI integration in Home Assistant that offers the AI task feature. You set it up once, and it takes about ten minutes.

Choosing a service

Each needs an API key, which is a long password that lets Home Assistant use your account. You get it from the service’s website, then paste it into Home Assistant.

Step 1: Get a Google Gemini API key

  1. On your computer, go to aistudio.google.com and sign in with your Google account.
  2. Accept the terms if asked.
  3. Find the Get API key link. It’s in the main navigation, and you can also use your screen reader’s find command to search the page for “API key”.
  4. Press Create API key. If asked to choose a Google Cloud project, accept the suggested one.
  5. The key appears on the screen. Press its Copy button, or select the key text and copy it. Keep it private.

Google changes this website from time to time, and some parts are awkward with a screen reader. If you get stuck, a sighted helper can do these five steps in a couple of minutes; you only ever need to do it once.

For OpenAI, the key is created at platform.openai.com, under API keys, after adding credit under Billing. For Anthropic, it’s created at console.anthropic.com, under API keys, after adding credit.

Step 2: Add the integration in Home Assistant

  1. In Accessible Home, open Settings, then Integrations, and press Add integration.
  2. In the Filter box, type “Gemini” (or “OpenAI” or “Anthropic”) and press the matching button. Google’s integration may be called Google Gemini or Google Generative AI, depending on your Home Assistant version.
  3. On the setup form, paste your key into the API key field and press Submit.
  4. You’ll hear “Success”. Press Done.

Step 3: Check it worked

  1. Open Settings, then Entities, and type “ai task” in the filter.
  2. You should see an entity such as Google AI Task. If you do, you’re ready.
  3. If there’s no AI task entity, open Settings, then Integrations, open the integration, and look for an Options or Add AI task button. Some versions add the AI task part separately. If you can’t find one, the integration may not offer AI tasks yet; Google Gemini and OpenAI both do.

Now try it: open Automations, press More ways to add, then Describe a new automation in words, or open a camera and press Describe.

Using the same AI as your voice assistant

The same integration also adds a conversation agent, which can make Assist much better at understanding natural requests. To use it, open Settings, then Voice assistants, edit your assistant, and choose it as the Conversation agent. Tick Handle common commands locally first so everyday commands stay fast and free.

Privacy and cost

When you use these features, the AI service receives what it needs: your request, and the names, rooms and states of your devices for automation drafts, or the camera image for descriptions. Nothing is sent at any other time. Each request uses a small amount of your free allowance or credit, usually a fraction of a cent.

Security

Accessible Home can unlock doors, change settings and see your cameras, so it’s built to keep others out:

Good habits:

Troubleshooting and limits

Most problems fix themselves: the app reconnects automatically and tells you when it does. If something keeps failing, the error that was announced and the page you were on are the two things to note.

Common situations

Washers, dryers and other appliances that won’t turn on remotely. Many appliances only accept remote commands when remote start is enabled on the machine itself, usually by pressing or holding a button on its control panel after loading it. The machine’s manual or app calls it Remote Start or Smart Control. Until it’s enabled, Home Assistant reports an error and the app tells you the device didn’t change. Some integrations also report an error even when the command worked, because the appliance answers slowly; the app checks and tells you the real result.

Things the app doesn’t do

Reporting a problem

When something doesn’t work as expected, note the page heading, the button or field, and what was announced. The Logs page under Settings also often shows the underlying error.