Introducing Hass.io Ingress

Today we are proud to introduce a new feature for Hass.io called Ingress. Ingress allows Hass.io add-ons to seamlessly integrate their user interface with Home Assistant. Home Assistant will take care of the authentication and the secure connection, so users can start using the add-on directly, without any configuration necessary by the users. It just works. Even with Nabu Casa’s Home Assistant Cloud Remote UI!

Ingress demo on Hass.io Demo with an add-on on Ingress.

Add-ons that already support Ingress

Some add-ons already have been upgraded to support the new Ingress feature. Here are a couple of add-ons that support Ingress and are available on the add-on store right now:

Core add-ons:

Community add-ons:

You can recognize add-ons that support the Ingress feature by the Ingress icon on the add-on information tab:

Add-on view with Ingress support Screenshot of an Add-on view with ingress support.

Please note, that in order to upgrade or install these Ingress enabled add-ons, you need to be running Home Assistant 0.91.3.

What’s next

Releasing the Ingress feature is just a start. It allows us to make even better integrations in the future. For the upcoming Home Assistant 0.92 release, we will be adding support to add links to your add-ons to the Home Assistant sidebar via a toggle on the add-on details page. The link will open the add-on Ingress interface, embedding the add-on in the Home Assistant UI. This will make it look and feel like a single system.

Other new things

While adding Ingress support, we have tweaked and polished some other things in the Hass.io user interface:

  • Network ports in the add-on view now have a description, so you know what they are being used for.
  • Reloading the add-on store will now show a spinner to indicate that reloading is being done.

For add-on developers

Ingress is added as an additional feature that add-on authors can choose to support starting today, granted that the application in the add-on supports it. The old approach of exposing add-ons on different ports will remain available. It will be up to add-on authors to choose what to support, including an option to support both.

If an add-on is going to support both, you should not have the add-on exposed on a port enabled by default. Instead, allow users to enable the port access by assigning a port number in the “Network” section of the add-on configuration panel.

Are you an add-on developer looking to support Ingress on your add-on? Check the developer documentation.

FAQ & Known Issues

Hass.io Ingress is a new and complex technology. Without a doubt, now that everybody starts using it, we will discover new issues. Here are some frequently asked questions and some currently known issues with the Ingress feature.

  • After upgrading the add-on, I’m unable to access it directly.
    Direct access to the add-on might now be disabled by default by the add-on developer. If the add-on supports running Ingress + direct access, you can re-enable direct access by setting a port number in the “Network” section of the add-on configuration.

  • After upgrading the add-on, my panel_iframe doesn’t work anymore.
    This is related to the question above. Once you enable direct access again, your iFrame panel will start working again. Until the automated panel integration lands in 0.92, you can also manually add a panel that points at Ingress.

  • I cannot upgrade my add-on: “This update is no longer compatible with your system.”
    Please update your Home Assistant installation to 0.91.3 or higher.

  • I cannot access the add-on via Ingress using the Tor Browser or Firefox.
    We found a last minute issue impacting Firefox based browsers (including the Tor Browser). There are some issues accessing add-ons that use WebSockets. We have identified the issue and expect it to be solved with the release of Home Assistant 0.91.4.


0.91: More streaming, better Zigbee, cameras with ESPHome

It’s time for release 0.91 and this release is all about streaming cameras. Home Assistant 0.90 allowed users to stream cameras in the frontend and play camera streams on Chromecasts. This release adds support to:

  • Record camera streams to disk with the new recording service for the camera integration
  • Support to ask Google Assistant to show your camera on its display or on a Chromecast
  • Preload streams so that bringing up a stream on a device is super fast. This can be configured on a per camera basis via the camera more info dialog.

Thanks to @hunterjm for all this work on this! ❤️ Check the latest release of the Home Assistant podcast for an interview with @hunterjm about streams in Home Assistant.

We’re still in the process of updating more cameras to support the stream component. If you want to try it today, the easiest approach is to configure a generic camera with a stream_source or buy a camera that supports the standard ONVIF protocol.

A BIG shout to @awarecan, who has migrated our CI infrastructure to CircleCI and Codecov. CircleCI’s advanced caching and code splitting controls has speed up tests significantly. Codecov tracks our code coverage and generates detailed reports for each contribution to see how well it is tested.

And in case you missed the announcement, we will soon start working on an official Android app. And in case it wasn’t clear, our other announcement, that we would occasionally show ads in the UI, was an April fools joke 😁.

Notable breaking change

We finished the great migration. All built-in platforms are now in their own folder. This means that if you had a custom component or platform that had the same name as a built-in one, you have to rename it. If you still have platforms in your custom_components/ directory in the old file format, sensor/my_platform.py, rename it to my_platform/sensor.py. It still works but it will not be supported in a future release.

Thanks to @Swamp-Ig, @robbiet480 and @cgtobi for their work on this!

Trusted networks now support trusted users

Trusted networks has been updated by @awarecan to allow specifying specific uses that specific IP addresses are allowed to log into. If a user is logging in with trusted networks and there is only a single user, you can now configure it to skip the login form and automatically login. See the documentation for more info.

ESPHome Cameras

This release adds camera support to the ESPHome integration. If you haven’t heard about ESPHome yet, it allows you to create your own sensors and smart devices and configure them using YAML. With Home Assistant 0.91, it is now possible to integrate cameras. This means that you can have a WiFi enabled camera that integrates automatically into Home Assistant for as little as $9 😲.

Check this cool demo, part of this blog post:

Zigbee ZHA pairing experience

Every release our Zigbee integration is getting better thanks to the hard work by @dmulcahey, @damarco and @Adminiuga. This release introduces a brand new pairing experience. While pairing mode is enabled, any device that is getting paired will instantly show up, allowing users to configure the name and the area.

VSCode hass.io add-on

If you run hass.io on an Intel NUC and haven’t seen it yet, check out the VS Code add-on by Frenck.

New Platforms

Release 0.91.1 - April 4

Release 0.91.2 - April 8

Release 0.91.3 - April 10

Release 0.91.4 - April 16

If you need help…

…don’t hesitate to use our very active forums or join us for a little chat. The release notes have comments enabled but it’s preferred if you use the former communication channels. Thanks.

Reporting Issues

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

Read on →

When will there be an official Home Assistant for Android app???

1 year, 11 months and 17 days ago or 716 days ago, I announced Home Assistant Companion for iOS on this blog. Ever since then, at least once a week, sometimes far more often, I am asked a question that I haven’t been able to truly answer until today. It’s a question that has gotten on my nerves almost every time I’ve seen it. I could understand why people were wanting an official Android app to mirror the functionality of the iOS app. But I never thought of myself as the person to best deliver on that idea.

Recently, these requests have reached a ear shattering volume and I had enough. It had been almost 2 years and no official app had materialized. It was time for me to act. So I bought a Pixel 3 and re-immersed myself in Android, not having used it for more than a few minutes since my Nexus 5. It’s changed a lot, for the better in my mind, since that time. I knew I could do this. I did it once before. It will require learning a new language, Kotlin, but I learned Swift to build the iOS app and that worked out well.

So here I am, announcing to you, that the official Home Assistant Companion for Android will soon be under development.

I’m going to try to duplicate the timeline of the iOS app as much as possible, although with less time between releases to start. The 1.0 will feature three core features:

  1. A location engine to rival the iOS app. This means location updates while out and about as well as region monitoring.
  2. Push notifications that aim to be just as powerful as iOS. Actions and sounds will be added to start and eventually I hope to add embedded content like camera streams and maps. No more need for HTML5 notifications.
  3. A full screen view for the beautiful web UI that Paulus and co have built. That’s right, no native UI, at least for now.

Long term, I hope to provide a similar feature set on Android as on iOS. That means Android Wear support, sensors and widgets.

If you’re an iOS user reading this, don’t fret. Here’s the current timeline I’m working on:

  • April 1, 2019: Announce the Android app
  • No later than April 31st, 2019: Release iOS 2.0 to the App Store
  • Early to mid summer, 2019: Release first beta of the Android app
  • Mid to late summer, 2019: Release 1.0 of the Android app to the Play Store
  • Late summer to mid fall, 2019: Adopt new features in iOS 13 into the iOS app, version 2.5.

I’ve already laid the groundwork in Home Assistant itself by implementing the utterly fantastic mobile_app component which provides a very secure and featureful integration system for mobile apps.

Now, i’d like to take a moment to address the elephant in the room: What about the other Android apps that have cropped up to fill the void left without having an official app for so long? The answer is, nothing. Authors of third party apps can continue to build their app and provide innovative features that blend phone and Home Assistant. They will be able to leverage the foundation that was put in place for them: the mobile app component. These apps are part of our ecosystem and we don’t intend to push them out, but embrace them. The better apps they can offer, the more choice our users have and the better it is for the Home Assistant ecosystem.

You might be wondering why we are choosing to do this now, other than the previously mentioned constant questions. Recently, we’ve seen a worrying uptick in the number of apps making poor integration choices or outright horrifying security choices. Furthermore, Home Assistant will always remain free and your privacy is a key part of our mission. Because of that key ideal, we don’t like seeing ads in Home Assistant mobile apps as they have been previously shown to not care about your privacy and in some cases be downright dangerous. We wanted to provide a full featured solution that was open source and cared about your privacy.

So that’s it. The app that 74.15 % of you have been waiting for. Coming soon to a Play Store near you. You’ll be hearing and seeing progress on it very soon via this blog, Twitter, Facebook, Discord, and more.

Finally, I’m going to make a public plug for my Patreon which will hopefully soon enable me to spend 100% of my time on Home Assistant for the rest of 2019. That means full time on iOS, Android and more fun. Thanks in advance for your ongoing support.


0.90: Remote UI, Streams, User Groups

It’s time for Home Assistant 0.90 and it’s just wow. This release is so packed with cool stuff that it’s difficult to even know where to start, so let’s just jump in.

The first big feature is that Home Assistant Cloud now supports remote control. This allows you to check in on your home while away from home. Get a notification that motion was detected? Now you can easily check what happened and take action while away. It works end-to-end encrypted. Only thing needed to get started is to enable it. That’s it.

For more information on how it works, check out the documentation or listen to the latest episode of the Home Assistant Podcast.

Screenshot of the Remote UI preference. Screenshot of the Remote UI preference.

Camera streams for everyone

With this release we’re getting serious about cameras. @hunterjm has worked months on this and it’s finally ready for the first reveal. With the stream component, we will be able to forward streams from cameras in your house and repackage it into formats that your display devices understand. Previously, streaming cameras was limited to 2 frames per second and only in the frontend. For the first version we focused on the HLS format, which is supported by modern browsers and Chromecast. Each camera integration will need to be individually updated, for the first version we have only added support for the generic camera integration.

So what is possible now? You can start streaming your frontdoor feed on your TV when the doorbell rings or you can install a camera in the nursery and turn your Google Home Hub into a babymonitor.

To get started, add stream: to your configuration.yaml, configure the generic camera and start using the new camera.play_stream service.

User Groups

This has been a long time in the making, and has been worked on for a long time: you can now put users in groups to prevent them from being able to configure things from the UI. Users in the new “users” group will not see links to the configuration panel or to the developer tools. This is currently a UI feature, not a security feature. We’re working on making this a security feature by limiting access at API level too.

Smarter SmartThings

If you use Home Assistant Cloud, setting up SmartThings will now automatically leverage Cloudhooks. This means that you will not need to expose your instance to the internet to start using SmartThings. Yay for easy set up and thanks @andrewsayre! SmartThings support has also been added for 3 axis sensors and air conditioners.

Area love

This release also adds some more love to areas. Thanks to @Swamp-Ig, areas will now be included as room hints when you sync Home Assistant with Google Assistant. This should make setting up a breeze.

Areas can now also be used as targets in services. Just specify area_id instead of entity_id in your scripts or automations.

We’ve also made areas a part of the set up flow for integrations. When you add an integration, we will check which devices are added and ask you to configure them right away. That way you won’t forget.

VSCode extension

In case you missed it, earlier this week Kees Schollaart released the first version of his Home Assistant extension for the free text editor VSCode. It will connect to your instance and will provide you with entity ID autocompletion while editing your config!

New Platforms

Release 0.90.1 - March 21

Release 0.90.2 - March 26

If you need help…

…don’t hesitate to use our very active forums or join us for a little chat. The release notes have comments enabled but it’s preferred if you use the former communication channels. Thanks.

Reporting Issues

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

Read on →

0.89: Nissan Leaf, PlayStation 4, Point alarm control, Owlet baby monitor

It’s time for release 0.89. It’s another great new release with some cool new features, bug fixes and improvements. The first cool new feature is that yet another car is integrated into Home Assistant: the Nissan Leaf. Both deConz and SmartThings integrations keep expanding to cover more devices.

This release introduces a new mobile app component. @robbiet480, who also works on the iOS app, has taken the best parts of the Home Assistant iOS app component and turned it into a standardized API that any mobile app can build upon. This will allow any mobile apps to integrate with Home Assistant with a great user experience. If you are a mobile app developer, please check the updated app integration docs. We will be fine tuning the API in upcoming releases. Feedback is welcome.

Noteworthy backward-incompatible changes

Custom Components file structure change: A significant change in how the “under the hood” of Home Assistant works has led to forcing platforms to be resolved based off the component path, if it exists.

Today, if you want, you can override the Hue light platform, but not the other parts of the Hue integration. If a future update evolves the Hue component, removing or changing internal methods that the custom platform relied upon, the custom platform will start failing (like this report).

To avoid this, we’re going to no longer allow custom components to be partial overlays (just a platform). Instead, if you want to override a built-in platform, you will need to override the whole component.

This is enforced by first resolving the platform as a component, and if it exists, limiting the lookup path to the component path.

Example: if I look up the hue component, and it is provided by a custom component, then all platform lookups will also be looked up in the custom component dir. The same works the other way around, if a user would only try to override hue/light.py but not hue/__init__.py, the custom platform will be ignored.

Paulus has written some detailed information about this change on the developers’ blog, if you’d like more information. The Great Migration by Paulus

Existing SmartThings configuration entries will be removed, including the SmartApp/Automation from the SmartThings app. Home Assistant will prompt you to configure the integration again or it can be invoked from the integrations page. The configuration process is the same as before. To prepare, have your personal access token and a mobile device with the SmartThings Classic App handy. This will not affect the naming of devices or entities and is a one-time inconvenience. The implementation switches over to the SmartApp access token to synchronize subscriptions during setup of the config entry, which cannot be done using the personal access token.

New Platforms

Release 0.89.1 - March 8

Release 0.89.2 - March 12

If you need help…

…don’t hesitate to use our very active forums or join us for a little chat. The release notes have comments enabled but it’s preferred if you use the former communication channels. Thanks.

Reporting Issues

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

Read on →

0.88: Persons, Command line auth and event subscriptions

Release 0.88 has landed. It’s been a busy two weeks with a ton of cool stuff and improvements.

This release introduces a new person component thanks to @MartinHjelmare. With this component, Home Assistant can be set up to track the people in your home. Each person can be linked to a user and multiple device tracker entities. This release does basic device tracker state merging, which will be evolved in the future. Device trackers merging their own states will be phased out in favor of persons. You can configure persons via the config panel. To get started, add the person component to your configuration.yaml file: person:. If you want to automatically stay up to date with the latest default Home Assistant components, you can now also add default_config: to your config.

This release also extends the event dev tool to include an event debugger. It allows you to listen to core events and get them printend to the screen. This makes it easy to find the event data that your remote is sending out.

Screenshot of the new event subscription tool.

We also have a new command line auth provider. This will allow you to use a shell script to validate users logging in to the system. This gives a lot of flexibility. For example, you can now authenticate against LDAP. More info in the documentation.

@andrewsayre has been working hard on extending the SmartThings support. This release brings sensors and climate devices into the mix. Awesome!

Noteworthy backward-incompatible changes

We have tightened config validation, so expect a couple of new warnings. Platform configuration will no longer allow to contain keys that are not supported. This should help with finding typos in your current and future YAML configs. This will currently fallback to a warning and will become a full error in the future.

Note for Lovelace custom card developers: if you relied on the availability of <paper-button> in your code, you will have to update it to <mwc-button> to get a similar component.

Note for custom component developers: We are moving to a new file structure. More information on our dev blog.

New Platforms

New Features

Release 0.88.1 - February 21

Release 0.88.2 - February 27

If you need help…

…don’t hesitate to use our very active forums or join us for a little chat. The release notes have comments enabled but it’s preferred if you use the former communication channels. Thanks.

Reporting Issues

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

Read on →

hass-cli 0.5: Area, Device Registry and event CLI

With Home Assistant 0.87 out we got Areas and Device Registry UI thus it is time to do a release of hass-cli that allows you to operate on these in a terminal.

This release adds the following features:

  • Area list, create, delete, and rename
  • Device list and assign
  • Event watch

To get it run:

$ pip3 install homeassistant-cli

And once you have configured some of the new things you can like:

Create an area:

$ hass-cli area create Attic
-  id: 1
   type: result
   success: true
   result:
      area_id: 83977bdb16524579a856560925a791a7
      name: Attic

List all your areas:

$ hass-cli area list
ID                                NAME
295afc88012341ecb897cd12d3fbc6b4  Bathroom
9e08d89203804d5db995c3d0d5dbd91b  Winter Garden
8816ee92b7b84f54bbb30a68b877e739  Office
e6ebd3e6f6e04b63a0e4a109b4748584  Kitchen
f7f5412a9f47436da669a537e0c0c10f  Livingroom
bc98c209249f452f8d074e8384780e15  Hallway
83977bdb16524579a856560925a791a7  Attic

List devices matching a pattern:

$ hass-cli device list "Kitchen.*Light*"
ID                                NAME                      MODEL                    MANUFACTURER    AREA
f9cad07069c74d519fbe84811c91f1fb  Kitchen Light 2           LCT003                   Philips         e6ebd3e6f6e04b63a0e4a109b4748584
d02ec64623ae4407a80b903cbc061511  Kitchen Light 3           LCT003                   Philips         e6ebd3e6f6e04b63a0e4a109b4748584
820c9e511fce42ea92b228c18710aa56  Kitchen Light 1           LCT003                   Philips         e6ebd3e6f6e04b63a0e4a109b4748584
417dd42c0c764765aa29580d77b8b7ad  Kitchen Light 5           LCT003                   Philips         e6ebd3e6f6e04b63a0e4a109b4748584

Like with entity list you can filter and pipe results to get interesting things.

How about a inventory count?

$ hass-cli --no-headers --columns manufacturer,model device list | sort | uniq -c | sort -nr
10 IKEA of Sweden      TRADFRI bulb GU10 WS 400lm
 8 Philips             SML001
 7 LUMI                lumi.sensor_magnet.aq2
 6 Sonos               Play:1
 6 Philips             LTW012
 6 Philips             LCT003
 6 Philips             Hue color spot
 6 Philips             Hue ambiance candle
 5 Philips             LWG001
 5 Philips             LCT012
 5 Philips             Hue color candle
 5 IKEA of Sweden      TRADFRI bulb E14 W op/ch 400lm
 4 Sonos               One
 4 Philips             RWL021
 4 Philips             Hue color lamp
 4 IKEA of Sweden      TRADFRI remote control
 3 Philips             Hue lightstrip plus
 3 OSRAM               Color temperature light
 3 LUMI                lumi.vibration.aq1
 3 IKEA of Sweden      TRADFRI transformer 30W
 ....

And then my favorite feature, assign of area to a device:

$ hass-cli device assign Kitchen "Kitchen Light 2"

or even more powerful, bulk-assign to any entity matching a certain pattern:

$ hass-cli device assign --match "Kitchen" Kitchen
  Successfully assigned 'Kitchen' to 'Kitchen'
  Successfully assigned 'Kitchen' to 'Kitchen table left'
  Successfully assigned 'Kitchen' to 'Kitchen table right'
  Successfully assigned 'Kitchen' to 'Kitchen left middle at window'
  Successfully assigned 'Kitchen' to 'Kitchen front right at fridge'
  Successfully assigned 'Kitchen' to 'Kitchen left back at hub'
  Successfully assigned 'Kitchen' to 'Kitchen left back at bar'
  Successfully assigned 'Kitchen' to 'Kitchen right back at sink'
  Successfully assigned 'Kitchen' to 'Kitchen right middle at oven'
  Successfully assigned 'Kitchen' to 'Kitchen Light 2'
  Successfully assigned 'Kitchen' to 'Kitchen Light 3'
  .... 

And finally as a little bonus feature you can now watch the event bus from the CLI:

All events:

$ hass-cli event watch

or specific events:

$ hass-cli event watch call_service

At the moment the output is raw JSON, that will improve in a future release.

The full change list including bugfixes from community is as follows:

What’s Changed

New features:

  • Device, Area and event support 237ade8 @maxandersen
  • add minimal dockerfile 2b00bd7 Ben Lebherz

Bug fixes:

  • fix(entity): honor –columns in entity get 67397a1 @maxandersen
  • Fix result reporting from service calls 14fc952 @maxandersen
  • Remove pyaml and move to ruamel only for yaml df9f8c2 @maxandersen

Minor fixes:

  • fix: release 0.5.0 version 200a099 @maxandersen
  • fix: be pep440 complant 98320f8 @maxandersen
  • fix: fix lint errors eca26fa @maxandersen
  • fix: fix lint errors ffd2369 @maxandersen
  • enable deploy of git timestamped build 4b27a65 @maxandersen
  • Merge branch ‘master’ into dev caaf7b1 @maxandersen
  • add docker reference d3b64e8 @maxandersen
  • docs: add docs for area, device and event watch ee4f74a @maxandersen
  • Make dockerfile build from source + entrypoint b7f8764 @maxandersen
  • Fix lint issue 8bb0c9e @fabaff
  • Fix lint issues 58fdc83 @fabaff
  • fix bad typing 499b544 @maxandersen
  • fix editor formatting 86d9bf8 @maxandersen
  • Fix version 3765a03 @maxandersen
  • Fix version marker edbe4bf @maxandersen

Have fun!

Max Rydahl Andersen


0.87: SmartThings, Areas and Entity Registry UI.

Today we’re releasing Home Assistant 0.87, our third release of the year. Besides a bunch of bugs squashing and performance improvements, we got some cool new features too.

Let’s start with the big one: we now support SmartThings. Via a custom app that can be installed inside SmartThings, you can now push the state of each device in SmartThings, as soon as it changes, to Home Assistant. No more fiddling with MQTT bridges or other solutions. Big shoutout to @andrewsayre for making this possible. Have a look at the SmartThings docs to get started.

New in this release is a new area feature thanks to @Kane610. Areas will allow users to organize their devices by their physical area, like kitchen or living room. This will unlock a whole new range of possible new features (of which none are implemented yet). With this release, users will just be able to manage areas in the configuration panel and place devices in areas via the integration page. In the future, we’re planning to add area based user permissions and a Lovelace area card. If you can’t wait to start leveraging areas today, @thomasloven has created a custom Lovelace card that can leverage areas.

This release also includes a UI to manage the entity registry. The entity registry contains all entities with unique IDs that Home Assistant has ever seen. It will allow users to quickly rename entities, change entity IDs or have Home Assistant forget entities that are no longer active.

We didn’t forget about the frontend in this release. In the last release we introduced Lovelace, so for this release we focused on bug squashing, performance improvements and usability. The YAML editor is now rendered using a full editor including line numbers thanks to @bramkragten. There is also a new system health component that will help users diagnose problems from the “info” developer tool. See changelog for the frontend.

In this release we have also upgraded the Material Design Icons to 3.3.92, which renames some icons. Make sure to check their changelog.

If you prefer a podcast over release notes, check out the Hass Podcast in which Phil and Rohan discuss each new Home Assistant release and keep a tap on what’s happening in the home automation space.

New Platforms

Release 0.87.1 - February 9

New Features

If you need help…

…don’t hesitate to use our very active forums or join us for a little chat. The release notes have comments enabled but it’s preferred if you use the former communication channels. Thanks.

Reporting Issues

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

Read on →

Introducing Home Assistant CLI aka. hass-cli

When I started using Home Assistant (HA) I was missing a way to interact with HA via a command line (CLI). A CLI allows you to utilize the power of auto-completion, scripting and direct access.

Thus I started working on Home Assistant CLI, a project that was initially started by Fabian Affolter.

The great thing about hass-cli is that it uses the exact same API’s as the other UI’s and integration uses thus it makes a great complement to the Home Assistant family of tools.

Last week we released version 0.4, which provides majority of the features I was looking for to do from a CLI.

Feature highlights:

  • Get configuration info (hass-cli config)
  • List, get, edit and delete state for entities (hass-cli entity’)
  • Query history with relative time (‘hass-cli entity history’)
  • List and run services (hass-cli services)
  • Execute templates locally and remotely (hass-cli template)
  • Control over columns, sorting, etc. (hass-cli --columns attr1,attr2 --sort-by attr3)
  • Shell completion for most commands and arguments (hass-cli completion zsh)
  • Get logs (hass-cli system log)
  • Run discovery (hass-cli discover)
  • Show map for zone (hass-cli map)
  • Call raw api directly (hass-cli raw)
  • … and more

Usage

For the basic intro to hass-cli see the docs at github.

Installation

Install latest homeassistant-cli by pip:

$ pip3 install homeassistant-cli

or if upgrade use:

$ pip3 install --upgrade homeassistant-cli

or if you like an isolated install you can use pipsi

$ pipsi install --python python3 homeassistant-cli

or if you are adventurous you can build it from source at.

Changes since 0.1-0.3

The first thing is that the commands have been cleaned up to be more logcial/explicit.

$ hass-cli
...
...
Commands:
completion  Output shell completion code for the specified shell (bash or...
config      Get configuration from a Home Assistant instance.
discover    Discovery for the local network.
entity      Get info and operate on entities from Home Assistant.
event       Interact with events.
info        Get basic info from Home Assistant.
map         Print the current location on a map.
raw         Call the raw API (advanced).
service     Call and work with services.
system      System details and operations for Home Assistant.
template    Render templates on server or locally.

Rather than using generic terms (eg. get, list), the commands are now explicit and have further sub-commands.

The biggest change is that most operations, by default now use “table” mode. i.e., instead of getting a yaml or json dump you get a more concise view:

$ hass-cli entity list winter
ENTITY                           DESCRIPTION                STATE    
timer.timer_winter_garden                                   idle     
group.winter_garden_lights       Winter Garden Lights       off      
group.winter_garden_motionview   winter garden              off      
light.winter_garden_light_2      Winter Garden Light 2      off      
light.winter_garden_light_5      Winter Garden Light 5      off      
light.winter_garden_light_1      Winter Garden Light 1      off      
light.winter_garden_light_3      Winter Garden Light 3      off      
light.winter_garden_light_4      Winter Garden Light 4      off      
media_player.winter_garden       Winter Garden              paused   
sensor.lightlevel_winter_garden  Winter Garden Motion       1.0      
sensor.temperature_winter_garden Winter Garden Temperature  5.0      

On top of better tables you can also use --sort-by to sort by an attribute and you can use --columns to control which attributes to show.

You can combine it all and do history querying with things like:

$ hass-cli --sort-by last_changed entity history \
  --since 50m  light.kitchen_light_1 binary_sensor.presence_kitchen
ENTITY                          DESCRIPTION      STATE
binary_sensor.presence_kitchen  Kitchen Motion   off
light.kitchen_light_1           Kitchen Light 1  on
binary_sensor.presence_kitchen  Kitchen Motion   on
binary_sensor.presence_kitchen  Kitchen Motion   off
light.kitchen_light_1           Kitchen Light 1  off

If you still want to get all the glory details you can use -o yaml to get the full details.

Frequently Asked Questions

A few frequent asked questions we’ve seen the last months are as follows:

Why would anyone use this ?

This is not removing or trying to compete with existing ways to access Home Assistant - this is a complementary way to access Home Assistant. If you like to use CLI’s and its power of auto-completion you’ll find hass-cli to be awesome; if not and you prefer the browser UI you just continue using it. We still use it for normal interactions, but when we want to be fast or script things hass-cli is great.

Why not just use the REST API’s directly via curl or similar ?

You can most definitely use curl or similar to access REST API directly - it’s basically what hass-cli does behind the scenes. hass-cli give though a few advantages. Firstly that you do not need to remember the exact commands, hass-cli have contextual help and auto completion to make it super easy to type out. Finally over time as hass-cli will get support for utilizing the more extensive websocket API’s hass-cli will be more consistent and simpler to use than using “raw” access via curl.

Does this only work with HTTPS and hass.io ?

No, it works with any Home Assistant that has REST API exposed - something that is done by default. In short - if you can access Home Assistant with your browser and see the UI hass-cli can communicate and control it too.

Thus http, https, hass.io, non-hass.io, etc. are all supported by hass-cli

Do I need to install Home Assistant to use this ?

No, hass-cli does not require Home Assistant installed on the computer you want to run it on. It should run on any install with Python 3.5 or higher on all major operating systems.

Does this work with client-generated certificates ?

It should, but we have not yet been able to verify it. If you would like to help us try it run with --cert <certificate.pem> and let us know if it works on issue #66.

Next steps

Personally the next feature I would like to add is more specific support for system control commands (like refreshing groups, restarting, etc.) but also for accessing hass.io add-ons. Also having an easy way to hook into the event bus (via websocket) to see what is happening live.

What would you like to see ?

Feedback

If you have questions for feedback you can put a comment on this blog, use the hass-cli forum thread or open issues or pull-requests at github.

Have fun!

Max Rydahl Andersen


[Update: we are wrong] Nest locks users out of their own data

Update 1 (Jan 24): We got some reports from people that they are still able to create accounts and generate the right keys. We just verified and this is the case. So for now you can still access your data, which is good. We’re still puzzled on the response to our tweet. And thanks to Reddit user /u/lefos123 for pointing out that they announced this updated link on Nov 2018.

Although it’s still working, we’re still scared about the future of the Nest API.


Some sad news for users with a Nest product: Nest is no longer accepting new developer accounts. This means that if you bought a Nest thermostat, you are no longer able to access YOUR data.

New Home Assistant users will not be able to integrate their Nest products. Home Assistant users that have already integrated Home Assistant with Nest are not affected.

We hope that Nest will implement a new program or add support for locally controlling the Nest thermostat, if they do, we will update this post. Until then, we can no longer recommend buying or using any Nest product.