Blog

Power-up your ESP8266 and ESP32 projects: browser-based installation and configure Wi-Fi via Bluetooth LE

ESP8266 and ESP32 are microcontrollers made by the Chinese company Espressif. Microcontrollers are teeny tiny computers with little processor power, memory and space that can interact with sensors, send infrared commands and many other things.

With the ESP devices Espressif has achieved something formidable: their devices have Wi-Fi, are compatible with code for the popular Arduino microcontroller and they are cheap. Like, $5-including-shipping-from-China-cheap (AliExpress) or $15 for 2 on Amazon cheap. So cheap that they are the de facto standard for microcontrollers used in IoT products, both for manufacturers and creators in the DIY space.

Quindor and DrZzs playing with an ESP32-based QuinLED running WLED Quindor and DrZzs playing with an ESP32-based QuinLED running WLED (YouTube)

Microcontrollers are just computers and so are nothing without their software. Open source software like ESPHome, WLED and Tasmota allow users to turn their ESP8266 and ESP32 devices into powerful little machines that can gather information and control devices. In your home, microcontrollers are the eyes and ears while Home Assistant is the brain.

But these projects all have a common problem: it is difficult to get started. We identified three pain points:

  1. Installing the software on the microcontroller.
  2. Connecting the microcontroller to your wireless network.
  3. Configure the software on the microcontroller.

These pain points stand in the way for creators to reach a wider audience. It’s our mission to make local home automation succeed, and these projects, and all the possibilities that they unlock, are an important part of this.

Today, we are introducing some things to make using microcontrollers easier.

Using terms everybody understands

We are going to start using words that a user understands instead of forcing the technical terms on them. Terms like “firmware” and “flashing” are the correct terminology but for inexperienced users they do more harm than good. They will make the user feel uncomfortable before they even start.

So instead of “upload firmware” we’ve updated the ESPHome dashboard to talk about “installing”. We are encouraging other projects to do the same.

Things will get more technical as a user continues playing with microcontrollers. But this change might just be that little thing why they will actually continue.

ESP Web Tools: Installing projects on your microcontroller via the browser

We have created ESP Web Tools. ESP Web Tools allows project websites to offer a great onboarding by enabling users to install the software on their microcontrollers via their browser. All the user has to do is connect their microcontroller to their computer and hit the install button on the website. ESP Web Tools will automatically select the right build for your microcontroller and install it.

This works for both the ESP8266 and ESP32 and with any project for these devices. This technology is powered by Web Serial, a web standard for serial communication that is part of Google Chrome and Microsoft Edge.

ESP Web Tools Web has already been adopted as part of the onboarding by WLED and ESPEasy.

Learn how to add ESP Web Tools to your website

If you have an ESP32 or ESP8266 device handy, you can try it out right here:

ESP Web Tools uses code written by @MakerMelissa from Adafruit. We’re currently relying on an enhanced fork that can fit a wider range of use cases, including ours. We have a pull request open to get our changes contributed back.

ESP Web Tools website

Note: We don’t like to use technology that is not available in all browsers and cannot be made available in other ways. However, in this case the benefits outweigh the cons. We hope that Firefox and WebKit add support for Web Serial in the future.

Improv Wi-Fi: Open standard to provision Wi-Fi credentials via Bluetooth Low Energy

We have created Improv Wi-Fi. Improv Wi-Fi is a free and open standard that anyone can use to offer a user-friendly way for users to connect their devices to the wireless network.

Improv Wi-Fi logo

For open source firmware there are two popular ways of getting a device to connect to your wireless network. The device sets up a wireless network and you need to connect to it via your phone or laptop, or the user compiles the network and password into the firmware before installing it on the ESP. Both methods are difficult and error prone, they offer a bad user experience.

If you look at off-the-shelf products, you see another approach: send Wi-Fi credentials to the device via Bluetooth Low Energy (BLE). BLE allows the user to get instant feedback if something goes wrong. This technology is used in many products, but there is no open standard that is free to implement. Improv Wi-Fi is an open standard that is free to implement.

Open source projects often host their control interface as a website on the ESP device. Improv Wi-Fi supports this and when provisioning is done, the user can be redirected to a URL to finish onboarding.

Improv Wi-Fi can be used today to provision ESP32 microcontrollers running ESPHome (ESP8266 devices do not support BLE). Users will soon be able to provision devices with the Improv Wi-Fi service via the Home Assistant Android and iOS apps. All these implementations are open source and can be used in your projects.

Improv Wi-Fi is also available for the web in the form of a button that can be added to your website. This will allow users to configure and set up a device from any browser that supports Web Bluetooth.

If you’ve used the installation button in the previous section but have not yet connected it to the wireless network, you can onboard that device here:

Improv Wi-Fi website

ESPHome Dashboard: simplified and streamlined

With ESPHome users don’t program microcontrollers, they configure them. Tell ESPHome there is a temperature sensor on pin 3 of your ESP device and ESPHome will install custom software on your ESP device that makes this information available in Home Assistant.

# Example ESPHome configuration
sensor:
  - platform: dht
    pin: D2
    temperature:
      name: "Living Room Temperature"
    humidity:
      name: "Living Room Humidity"
    update_interval: 60s

Result of how it shows up in Home Assistant with the example ESPHome above

The ESPHome Dashboard has been updated with a simplified and streamlined wizard for new configurations. You now enter the name of your project and your Wi-Fi credentials and it will install it on your ESP device via the browser. After that all further updates will happen wirelessly.

ESPHome: embracing projects

We want to make it easy for creators to sell ESPHome powered products that offer a great user experience. ESPHome projects embrace local control and integrate nicely with Home Assistant, and so each extra ESPHome product that our users can buy is a win.

To make it easier to keep creators and users connected once a product is installed, projects can now add a project identifier and version to their firmware (docs). With today’s release this information will be available in the device information, logging output and the mDNS discovery info.

The goal is to integrate the projects tighter into the ESPHome dashboard by showing the project’s logo, link to the documentation and issue pages and allow installing updates.

Why we build this

Home Assistant’s mission is to make local home automation a viable alternative to cloud based solutions and accessible to everyone.

To make this mission a reality, we started the company Nabu Casa. Together with the community, Nabu Casa develops Home Assistant and ESPHome and is funded solely by people that support this mission. No investors or loans.

If you want to help fund our work, subscribe to Home Assistant Cloud.


Community Highlights: 25th edition

The 25th edition of the Home Assistant Community Highlights! Some interesting things popped up around our community, which we thought was worth sharing.

Also, keep an eye out for the ESPHome release next week Wednesday. We’re going to have some great announcements!

Do you want to share something for the next edition? Information on how to share.

./Klaas
Intern on Home Assistant Energy

Blueprint of the week


Are there more people who turn their lights on and off at certain times when they go on holiday?

This week’s blueprint is that of timgiwo, who created a blueprint that can repeat the behavior of your lights from the past week, so it seems like you are still at home. Try it out! Read more about it on the community forum or install this automation in your instance with a click on the My button!

Slider Button Card


Mattieha made a button card that also included a slider, so you could, for example: switch a light but also immediately adjust the brightness with the slider. Useful for those who want to keep their dashboard compact.

Floorplan Dashboard


This week again we have a new Lovelace dashboard for the necessary portion of inspiration 😄 This time the one from theone11 who has a dashboard with a floorplan, definitely recommended to take a look at the repository because there is a lot of explanation on it.

Would you also like your dashboard to be in the community highlight? Drop it on Reddit and maybe I’ll pick it out for the next edition.

Ispindel


Between the community submissions, we came across a nice project that works with ESPHome, it’s a sensor with which you can monitor your own homebrew, for example, the alcohol percentage and the temperature. Cheers Alexander! 🍻

Got a tip for the next edition?


Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant?

Click here to send us your Community Highlight suggestion.

Also, don’t forget to share your creations with us via Social Media:

See you next edition!


Home Assistant OS Release 6

Home Assistant OS Release 6 Logo

Home Assistant OS 6.0 stable is available now!

Highlights:

  • OS Agent for better OS integration with Supervisor

  • Support for additional Wi-Fi and Bluetooth devices

  • Smaller virtual machine disk images

  • Improved: Generic x86-64 system support

Table of contents

Operating System Changes

OS Agent

Operating System release 6 comes with a new, Go written daemon called OS Agent. This allows the Supervisor to access more aspects of the OS. One such aspect is to move the data to an external data disk or wipe data to start over without reinstalling. Note however that at this point, the required logic in the Supervisor and Frontend is still being developed.

Under the Hood

Under the hood, the OS was updated to the latest upstream Linux 5.10 kernel as well as Buildroot 2021.02.1. The latest Buildroot release brings tons of new software versions along with bug and security fixes. Some key components which received an update were systemd 247 and the Docker Container Engine 20.10.6.

Other Changes

  • The short name of the OS used throughout the software stack was renamed to “haos”. From a users perspective not much changes, but it leads to new file names.
  • The Home Assistant CLI is now started on tty1 instead of the login prompt. The HA CLI banner shows the IP and other device information without the need to attach a keyboard to login.
  • The default shell of the root user is now the Busybox ash. This allows to use scp and similar tools using SSH.
  • The system start is now delayed until the system time has been synchronized with an NTP server. This avoids connection issues to SSL/TLS enabled servers when the system time is off. In practice, the delay should only be a few seconds. The system proceeds with startup after 90s in case the NTP server was not reachable (e.g. if no Internet connectivity is available).

Device Support

Raspberry Pi

All Raspberry Pi versions were updated to use the Linux Kernel 5.10 from the Raspberry Pi team, just like Raspberry Pi OS. The latest Bluetooth firmware for CYW43455 (Raspberry Pi 3 B+/4) with security fixes is now part of the Raspberry Pi images.

Generic x86-64

In Home Assistant OS 6 the board/image “Intel NUC” was renamed to “Generic x86-64”. Existing “Intel NUC” installation will automatically migrate to the “Generic x86-64” image on update.

Already with OS 5 the “Intel NUC” image was usable for most UEFI capable x86-64 systems. With the rename that fact is emphasized. Home Assistant OS is open to changes to add drivers to extend support for other x86-64 platforms. However, keep in mind that we don’t have access to all x86-64 hardware, so support for devices is on a best effort basis.

Other Changes:

  • The Intel IGC network driver supports Intel network cards such as I225-LM/I225-V used on some newer Intel NUC devices.

  • With Home Assistant OS 6 the latest version of the Barebox bootloader 2021.05.0 which fixes boot from hard disks larger than 2TB.

  • The ACPI kernel driver for Thinkpad devices is enabled.

Open Virtualization Appliance

The virtual disk images are now built from a sparse file as source, which leads to smaller effective disk image sizes. Disk images are now also distributed in the more common zip file format (except the qcow2 images which are mostly used on Linux, they continue to be in the xz compression format).

By default, the image now has a serial console enabled which is useful to access Home Assistant OS on headless host systems.

Additional Wi-Fi and Bluetooth Device Support

Ralink rt27xx/rt28xx/rt30xx, as well as Realtek 87xx/88xx devices, are now supported on boards that don’t have onboard Wi-Fi/Bluetooth. This is also true for the OVA image for virtualized environments (when using hardware passthrough functionality). For the OVA image, also Intel firmwares are now part of the image so that Intel Wi-Fi/Bluetooth devices can be used in passthrough mode as well.

Homematic IP Support

@jens-maus contributed OS support for Homematic/Homematic IP dual-stack support for RPI-RF-MOD or HM-MOD-RPI-PCB devices. This together with the RaspberryMatic CCU Add-On offers the full functionality of RaspberryMatic embedded in Home Assistant.

Google Coral PCIe AI Accelerator Support

@ryddler enabled the driver for Google Coral PCIe TPU devices. This allows to use Google Coral Mini PCIe Accelerator or M.2 Accelerator on all boards supporting PCIe.

That’s all Folks! Now go out and update!


Community Highlights: 24th edition

The 24th edition of the Home Assistant Community Highlights! Some interesting things popped up around our community, which we thought was worth sharing.

Do you want to share something for the next edition? Information on how to share.

./Klaas
Intern on Home Assistant Energy

Blueprint of the week


I think this situation is familiar to many parents: your children who get out of bed too early and who you would like to learn when it is the right time to get out of bed.

This week’s blueprint is that of koosvanw, who created a blueprint for the above situation that works with a light that can change color and where the brightness can also be adjusted. Try it out! Read more about it on the community forum or install this automation in your instance with a click on the My button!

Threedy card


Do you have a 3D printer and are you not quite sure how to display it in a beautiful way in your Lovelace dashboard? Then try this card from dangreco, which works well in combination with octoprint.

ESPHome weather station


Have you always wanted to build a weather station in your garden? Then try the ESPHome variant of hugokernel, it is quite extensive with many measuring options.

Garage fingerprint


This week we also came across something cool that was shared on our subreddit page. For example, you could open a garage door by means of geofencing from your phone or with an NFC tag. But Nhminer has tried another option, namely opening with a fingerprint sensor 😲

Do you want to know more about it? Then also check this forum topic.

Got a tip for the next edition?


Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant?

Click here to send us your Community Highlight suggestion.

Also, don’t forget to share your creations with us via Social Media:

See you next edition!


2021.6: A little bit of everything

A little bit of everything. That is probably the best way to describe this release. It is a packed release, with a lot of small new features everywhere!

Sonos got quite a bit of love, Hue now supports push updates, the UI has a lot of usability tweaks, MQTT added quite a few attributes, themes can now support modes… seriously, I can go on forever with this list.

So, no new big features (something might be cooking for the next release…), but a nice release that has something for everybody. Definitely worth scanning the all changes section for your favorite integrations.

../Frenck

Support for custom Dark mode themes

Previously, all themes automatically used our light theme as the base to build on. As of today, themes can be based on our default dark theme as well!

Not only that, @spacegaier added support for themes that can support both a Dark & Light mode in a single theme! This allows Home Assistant to select the dark or light mode of your custom theme automatically.

Screenshot of a custom theme supporting both light & dark mode Screenshot of a custom theme supporting both light & dark mode.

If you are a theme developer, you can find more information on how this works in the frontend documentation.

Oh, and of course, all your existing themes will still just work as before.

Collapsed attributes

Some entities provide quite a few attributes and those show up in the user interface. Most of the time, you don’t need to those and often contain technical data that only confuse or clutter.

To unclutter the more information entity dialog from these attributes a bit, the attributes will now show up collapsed into a bar and can be revealed with a click.

Screen recording of the collapsible entity attributes Screen recording of the collapsible entity attributes.

Time format settings

A couple of releases back, we added the possibility to select the number format that Home Assistant uses when showing numbers. Awesome! But… what about the formatting of time?

That question was raised a lot that release and many of you requested the same feature for time formatting, for example, if one prefers a 24-hour format.

Well, you can thank @spacegaier for this one:

Screenshot of new time format setting Screenshot of new time format setting.

You can find this new setting in your user profile.

Disable polling updates on any integration

One returning feature request, for many integrations, is adding controls for tuning the polling interval an integration uses.

For example, if an integration has an API that needs to be paid for and you don’t need too many updates, it can be a cost saver to use a slower polling interval.

Another often requested example is things like battery-powered devices, or maybe a device you only want to poll during the day and not during the night.

This release, we add support for disabling polling on every integration via the integration system options; for ALL integrations.

Screenshot of the system options of an integration showing the disable polling option Screenshot of the system options of an integration showing the disable polling option.

Wait? Disable polling?! Yes :)

So, there are many different requests on, for example, changing polling rates (also known as scan interval), but also requests for polling on a schedule, or, only based on other input (e.g., triggered by a motion sensor).

Therefore, we decided to provide the maximum flexibility for any use case you can come up with. Disabling polling makes Home Assistant stop polling automatically. However, you can use the homeassistant.update_entity service on those entities to trigger a poll for information.

This means, once you’ve disabled polling for an integration, you can create automations and completely customize when you poll that integration from that point on. All based on your own schedule, conditions or triggers.

Network integration

This release adds a new Network integration, created by @bdraco, to help other Home Assistant integrations to get the right information about your network.

It also provides you a single place to tell Home Assistant about your network. It is an advanced feature and thus will only show up if you have advanced mode enabled on your user profile.

You probably don’t need to change these settings, by default, Home Assistant will auto-detect the right configuration. However, if you have a more complex network configuration, with multiple network adapters or VLANs, you can now select the interface Home Assistant integrations should use.

Screenshot of new Home Assistant Network settings in the general configuration Screenshot of new Home Assistant Network settings in the general configuration.

Please note that this is a new feature that needs to be implemented/used by other integrations. At this point, not all integrations will honor these settings yet.

Other noteworthy changes

There is much more juice in this release; here are some of the other noteworthy changes this release:

  • The Modbus has been receiving lots and lots of love from @janiversen, a big shout out to him for continuously improving it for the past weeks!
  • The Hue integration now supports push updates! Blazing fast response times if you are using that platform.
  • @balloob and @bdraco have been working on replacing date/time/timezone handling in Home Assistant. Right on time.
  • All services, for all integrations, now have updated information for their service calls. This means all service calls now have a nice new UI. Amazing job @tkdrob!
  • Support for the new colors modes is slowly expanding. This release Elgato, Z-Wave JS, KNX and MQTT have added support.
  • Sonos got some love from @mountainsandcode, @AaronDavidSchneider and @jjlawren. A lot of fixes and improvements, but also added support for controlling the state of the hardware buttons and controlling your Sonos alarms!
  • The developer state tools, now shows the name of the entity additional to the entity ID. Searching/filtering the list now supports wildcards (*). Thanks, @spacegaier!
  • Thanks to @PeteBa, there is now a recorder.purge_entities service that allows you to purge data from the recorder database for specified entities.
  • Watson TTS has added a bunch of new voices to choose from, thanks @demikl!
  • Ding dong! @bdraco added support for doorbell buttons to the HomeKit Controller integration.
  • BMW Connected Drive, now provides a bunch of sensors about your last trip. Thanks, @EddyK69!
  • @emericklaw added a new feature that allows you to duplicate a scene!
  • My Home Assistant now supports linking to the Ingress interface of an add-on!
  • Light templates now have support for effects, transitions and a bunch more properties, thanks to @jacekpaszkowski!
  • VeSync now supports Etekcity light bulbs, thanks @sdrapha.
  • The universal media player now supports overriding a lot of commands! Thanks for adding that @Drafteed!
  • @mdz continues expanding the SmartTub integration adding service to change filtration settings and snoozing reminders.
  • The Elgato integration now supports the new Elgato LED strips.
  • If you are into Oracle DB, @mciupak made sure our recorder can now use that.
  • Z-Wave JS integration now shows progress when adding or re-interviewing a device. Thanks, @cgarwood!
  • The Nexia integration now also supports controlling American Standard thermostat, added by @bdraco.
  • @Drafteed added support for changing channels on your LG NetCast TV, thanks!
  • @mib1185 ensured that the UX for counters and number helpers look nice!

New Integrations

We welcome the following new integrations this release:

New Platforms

The following integration got support for a new platform:

Integrations now available to set up from the UI

The following integrations are now available via the Home Assistant UI:

Release 2021.6.1 - June 3

Release 2021.6.2 - June 4

Release 2021.6.3 - June 7

Release 2021.6.4 - June 11

Release 2021.6.5 - June 15

Release 2021.6.6 - June 20

If you need help…

…don’t hesitate to use our very active forums or join us for a little chat.

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 →

Community Highlights: 23rd edition

The 23rd edition of the Home Assistant Community Highlights! Some interesting things popped up around our community, which we thought was worth sharing.

Do you want to share something for the next edition? Information on how to share.

./Klaas
Intern on Home Assistant Energy

Blueprint of the week


This week’s blueprint is all about medication. It may happen that you forget to swallow it, what if you create an automation that sends you a message as a reminder every time? Mati24 has now made a handy blueprint for that, try it out!

Read more about it on the community forum or install this automation in your instance with a click on the My button!

Swiper card


Not enough space on your Lovelace dashboard? Then try the swiper card made by bramkragten, with which you can easily swipe through different cards in the same card frame.

Lovelace dashboard


Also this week we have a new Lovelace dashboard for the necessary portion of inspiration 😄 This time the dashboard of DoIGotSkillz, who made one for use on a tablet wall mount.

Would you also like your dashboard to be in the community highlight? Drop it on Reddit and maybe I’ll pick it out for the next edition.

Homegame


Recently we had an item about switching entities in Minecraft, well this time it’s a game again but in 2D. svendroid made a proof of concept game that you can play in the browser, you can adjust the map so that your own light entities work with it.

Demo of the 2D game

Doesn’t this also remind you of the old Pokemon games from the past? 😅

Got a tip for the next edition?


Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant?

Click here to send us your Community Highlight suggestion.

Also, don’t forget to share your creations with us via Social Media:

See you next edition!


Community Highlights: 22nd edition

The 22nd edition of the Home Assistant Community Highlights! Some interesting things popped up around our community, we thought was worth sharing.

Do you want to share something for the next edition? Information on how to share.

./Klaas
Intern on Home Assistant Energy

Blueprint of the week


Are you one of those who always leave the doors open?

Then this week we have a nice blueprint for you! BasTijs has made a blueprint that announces through text-to-speech in the house, that a door is open and only stops when the door is closed again.

Try it out! Read more about it on the community forum or install this automation in your instance with a click on the My button!

Sun card


On our Home Assistant reddit page we also encountered another nice project, namely that of AitorDB. Who made a Lovelace card that shows the position of the sun when it rises, is at its highest point and sets again.

Collapsed card


Is your Lovelace dashboard overflowing with cards and do you want to make some free space? Then try the card made by RossMcMillan92, which makes it possible to collapse entire cards and reappear as a dropdown.

Hyperion - HA bridge


You have those TVs where LEDs are mounted on the back so that the colors of the TV continue over the wall behind it, this is also called ambilight. If your TV is not equipped with this, you can also make this yourself through the Hyperion project. pimw has also written an instruction post about this on our community forum on how to connect the bridge to Home Assistant.

Got a tip for the next edition?


Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant?

Click here to send us your Community Highlight suggestion.

Also, don’t forget to share your creations with us via Social Media:

See you next edition!


Community Highlights: 21st edition

The 21st edition of the Home Assistant Community Highlights! Some interesting things popped up around our community, we thought was worth sharing.

Do you want to share something for the next edition? Information on how to share.

./Klaas
Intern on Home Assistant Energy

Blueprint of the week


Imagine, you are listening to music and suddenly you get a call, then of course you first want to turn the music down a bit to understand the person, what if we automate that with a blueprint!

This week’s blueprint is that of JackPoint, which will mute your media player when you receive a call and are at home. Try it out! Read more about it on the community forum or install this automation in your instance with a click on the My button!

Would you rather not have the media player muted but, for example, paused or take another action? More variants can be found on the Blueprint Exchange!

Car Telemetry


A few editions earlier we had shown the dashboard of Make_Itt_Work and it contained telemetry data from his car. The question was of course how does he do that?! Well, that question now has an answer, a video has come online with all the details.

Shower Duration


We’ve talked enough about saving energy, but using water efficiently is just as important. With the project from farstreet, which consists of some hardware and an automation, you could time how long you are in the shower and indicate with a LED light how long you have been under it.

Finished taking a shower? Then you can hear what your shower time was through a media player.

Mine Assistant


This item is especially nice for the Minecraft players, Andy has managed to switch a light in Home Assistant by means of a redstone block in Minecraft! In the Reddit post you can find more information about this project, as well code to get started yourself.

Got a tip for the next edition?


Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant?

Click here to send us your Community Highlight suggestion.

Also, don’t forget to share your creations with us via Social Media:

See you next edition!


Why Home Assistant doesn't have an external API for integrations

Home Assistant is the world’s largest home automation platform talking with over 1900 different devices and services. Home Assistant works with these via “integrations”.

Each integration runs inside Home Assistant. They convert the data from the device into data that Home Assistant understands and forward commands from Home Assistant back to the device. For this to work a device or service needs to have an application programming interface (API).

It is not possible for a device or service to provide lights, switches or other device types via the Home Assistant API without an integration. It can be faked, but it won’t work correctly. We explicitly did not add this feature because of interoperability.

If Home Assistant were to offer this option, devices and services would no longer be required to create an API for control – they could just implement ours. This creates vendor lock-in, locks other home automation platforms out and hurts the open Internet of Things ecosystem.

You should be able to access your data from your devices without any restrictions. Requiring a specific application to get to your data is not the solution.

Our goal is a home where all smart devices can be managed locally.

This stance will hurt us in the short term because we get less integrations. It is more work for a manufacturer to create an API and a Home Assistant integration.

In the long term the user will win. Devices with local APIs will still work 10 years from now and no one will be held hostage by vendor lock-in because some of their devices only work with Home Assistant.

Note about Home Assistant APIs: Home Assistant does have an API, just not for integrations. It allows you to access all your data in real-time. We also have a data science portal that documents how you can query the historical data stored on disk.


Easier notifications in iOS 2021.5

Notifications are a popular feature of the Companion apps, but the differences between Android and iOS made it painful to use them to their full potential. Starting with today’s release of iOS 2021.5, the vast majority of functionality is now shared across both platforms. As part of this, the notifications documentation has been extensively updated as well.

Actionable notifications

Building actionable notifications for iOS and watchOS no longer requires defining categories in advance of using them; instead, you can include the actions right in the notification. Support for macOS will be included in a future release. Categories were one of the hurdles around multi-server support, so removing them entirely solves that part!

Included in the documentation is how to migrate from categories to dynamic actions. Both are still supported in the app at this time, but categories will be removed in the future.

Below is an example script which sends an actionable notification and uses script variables, wait for trigger, and choose to decide what to run.

# In a script's `sequence` or an automation's `actions`
- alias: "Set up action variables"
  variables:
    # Including 'id' in 'action' allows us to identify this script run
    # and not accidentally trigger for other notification actions
    action_very: "{{ 'VERY_' ~ context.id }}"
    action_mod: "{{ 'MOD_' ~ context.id }}"
- alias: "Send the notification"
  service: notify.mobile_app_zac_iphone
  data:
    message: "Are you hungry?"
    data:
      actions:
        - action: "{{ action_very }}"
          title: "Very Hungry"
        - action: "{{ action_mod }}"
          title: "Moderately Hungry"
- alias: "Wait for a response"
  wait_for_trigger:
    # We wait for specific actions because we don't want to run for 
    # any action, only for a response to the one we just sent
    - platform: event
      event_type: mobile_app_notification_action
      event_data:
        action: "{{ action_very }}"
    - platform: event
      event_type: mobile_app_notification_action
      event_data:
        action: "{{ action_mod }}"
- alias: "Handle the response"
  choose:
    - conditions: "{{ wait.trigger.event.data.action == action_very }}"
      sequence:
        - service: notify.notify
          data:
            message: "⚠️ Soylent Launch Incoming"
        - service: homeassistant.turn_on
          target:
            entity_id: switch.soylent_dispenser
    - conditions: "{{ wait.trigger.event.data.action == action_mod }}"
      sequence:
        - service: notify.notify
          data:
            message: "Anyone want to grab a croissant? -Zac"

This works for both platforms without including any platform-specific logic! Other features around actionable notifications are also shared, including adding a URL to open when picking an action:

actions:
  - action: "URI"
    title: "View More"
    uri: "/lovelace/some-dashboard"

Replacing, grouping, clearing

Replacing existing notifications or threading certain notifications was another difference between platforms, and the iOS-specific versions were a bit less ergonomic, so the Android versions now work for both. You can now use the simpler tag and group keys:

- service: notify.mobile_app_<your_device>
  data:
    message: "The front door is unlocked!"
    data:
      # replace any existing front_door_lock notifications
      tag: front_door_lock
      # thread with other doors notifications
      group: doors

You can also remove an existing notification by its tag:

- service: notify.mobile_app_<your_device>
  data:
    message: clear_notification
    data:
      tag: front_door_lock

Attachments

Attachments no longer require certain categories for dynamic attachment, so you can include streaming playback of a camera for any notification:

- service: notify.mobile_app_<your_device>
  data:
    message: "Motion detected"
    data:
      entity_id: camera.outside

Specifying a non-dynamic attachment is a little easier now, allowing you to short-hand the attachment part:

- service: notify.mobile_app_<your_device>
  data:
    message: "3D Print Complete"
    data:
      image: /media/local/3dprinter/latest.jpg

You can use video, image and audio. Only image is supported on Android.

You may have noticed that iOS notifications have file limits; this release adds on-demand downloading of attachments that exceed the size limit or when requested using the lazy attachment option.

Future areas of improvement

We’re still on the lookout for places of confusion or redundancy in notifications across the iOS and Android apps. What would you like to see improved?