Add-On Communication
There are different ways for communication between add-ons inside Hass.io.
Network
We use an internal network that allows to communicate with every add-on, even to/from Home Assistant, by using his name or alias. Only the add-ons which run on the host network are a bit limited. These can talk with all internal add-ons by their name but all other add-on can’t address these add-on by name - using an alias works for both!
Name/alias are used for communication inside Hass.io.
The name is generated using the following format: {REPO}_{SLUG}
, e.g. local_xy
or 3283fh_myaddon
. In this example, {SLUG}
is defined in an add-ons config.json
. If an add-on is installed locally, {REPO}
will be local
. If the add-on is installed from a Github repository, {REPO}
is a hashed identifier generated from the GitHub repository’s URL (ex: https://github.com/xy/my_hassio_addons). See here to understand how this identifier is generated. Note that this identifier is required in certain service calls that use the Hass.io add-on API. You can view the repository identifiers for all currently installed add-ons via a GET request to the hassio API addons
endpoint.
Use hassio
for communication with the internal API.
Home Assistant
An add-on can talk to the Home Assistant API using the internal proxy. That makes it very easy to communicate with the API without knowing the password, port or any other information of the Home Assistant instance. Use this URL: http://hassio/homeassistant/api
and internal communication is redirected to the right place. The next stept is to add homeassistant_api: true
to config.json
and read the environment variable HASSIO_TOKEN
and use this as Home-Assistant password.
There is also a proxy for the Home Assistant Websocket API. It works like the API proxy above and requires HASSIO_TOKEN
as password. Use this URL: http://hassio/homeassistant/websocket
.
It is also possible to talk direct to the Home Assistant instance which is named homeassistant
over the internal network. But you need to know the configuration that is used by the running instance.
We have severals services for Hass.io inside Home Assistant to run tasks. To send data over STDIN to an add-on use the hassio.addon_stdin
service.
Hass.io API
To enables calls to the Hass.io API, add hassio_api: true
to config.json
and read the environment variable HASSIO_TOKEN
. Now you can use the API over the URL: http://hassio/
. Use the HASSIO_TOKEN
with header X-HASSIO-KEY
.