AppDaemon Add-on

The AppDaemon python package and the AppDaemon Add-on for Home Assistant (maintained by Frenck) have no official relationship. They have different versions and release schedules, but are both commonly run using Docker containers. The AppDaemon project provides a Docker container, and the add-on uses another one that includes some things to help it integrate with Home Assistant’s Supervisor.

Note

Workflow

An easy way to work with the AppDaemon config files is to expose them with a Samba share, which uses smb to make folders accessible across a network. This is an old, well-established standard that works really well across platforms. The Samba add-on makes the AppDaemon config folder accessible at addon_configs/a0d7b954_appdaemon. That share can be mounted on your local system as a network drive where it can be accessed with an IDE like VSCode or PyCharm.

See this section of the Home Assistant docs for more information about accessing samba shares.

Paths

Name

Inside Container

Samba

Host

Home Assistant config

/homeassistant

/config

/mnt/data/supervisor/homeassistant

AppDaemon config

/config

/addon_configs/a0d7b954_appdaemon

/mnt/data/supervisor/addon_configs/a0d7b954_appdaemon

Home Assistant Media

/media

/media

/mnt/data/supervisor/media

Home Assistant Share

/share

/share

/mnt/data/supervisor/share

Config

Token

The authentication token for the Hass plugin is automatically provided by the Hass Supervisor using the SUPERVISOR_TOKEN environment variable.

System Packages

System packages are installed into the container environment using apk before AppDaemon is launched. Anything from the Alpine Package Index can be used.

For example, to install pandas:

py3-pandas

Tip

Many python packages can be installed this way, which is much faster and more reliable than using pip. The packages usually have a py3-*prefix.

Python Packages

Python packages are installed into the container environment using pip before AppDaemon is launched. Any package on PyPI can be used. Pip also supports targeting VCS systems, so any python packages on GitHub can be installed directly in several ways:

  • git+<github_url>@<branch>

  • git+<github_url>@<short commit hash>

  • <github_url>/archive/refs/heads/<long commit hash>.zip

appdaemon add-on config

Tip

The add-on will use the version of AppDaemon installed from GitHub in the example screenshot above. This makes it easy to control which version of AppDaemon the add-on uses.

  • git+https://github.com/AppDaemon/appdaemon@dev

  • git+https://github.com/AppDaemon/appdaemon@4.4.2

  • git+https://github.com/AppDaemon/appdaemon@beaa161

Docker Mechanics

This section shows some of how the AppDaemon add-on container works in the supervised environment of Hass OS and is just for informational purposes. It uses the Advanced SSH & Web Terminal Add-on to inspect the Docker container.

Warning

Protection mode has to be disabled for the SSH add-on for the following instructions to work. It’s recommended to only disable it temporarily. Proceed carefully and at your own risk.

Check the status of the AppDaemon container

docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}" | grep appdaemon

Check the AppDaemon container logs

docker logs --tail 10 addon_a0d7b954_appdaemon

Enter the AppDaemon container

docker exec -it addon_a0d7b954_appdaemon /bin/bash

Show volume mounts from the AppDaemon container

docker inspect --format='{{json .Mounts}}' addon_a0d7b954_appdaemon | \
    jq -r '.[] | select(.Type == "bind") | [.Destination, .Source] | @tsv'

View installed Python packages

docker exec addon_a0d7b954_appdaemon pip list