Note
Thank you to @ms1design for his generous contributions and work on porting Home Assistant & Wyoming containers for Jetson!
The container image is based on the Home Assistant Core
with a few modifications:
HA OS |
Container |
Core |
Core on Jetson |
Supervised |
|
---|---|---|---|---|---|
Automations | ✅ | ✅ | ✅ | ✅ | ✅ |
Dashboards | ✅ | ✅ | ✅ | ✅ | ✅ |
Integrations | ✅ | ✅ | ✅ | ✅ | ✅ |
Blueprints | ✅ | ✅ | ✅ | ✅ | ✅ |
Uses container | ✅ | ✅ | ❌ | ✅1 | ✅ |
Supervisor | ✅ | ❌ | ❌ | ❌ | ✅ |
Add-ons | ✅ | ❌ | ❌ | ✅2 | ✅ |
Backups | ✅ | ✅ | ✅ | ✅ | ✅ |
Managed Restore | ✅ | ❌ | ❌ | ❌ | ✅ |
Managed OS | ✅ | ❌ | ❌ | ❌ | ❌ |
If you want to use docker compose
to run Home Assistant Core Voice Assistant Pipeline on a Jetson device with cuda
enabled, you can find a full example docker-compose.yaml
here.
name: home-assistant-jetson
version: "3.9"
services:
homeassistant:
image: dustynv/homeassistant-core:latest-r36.2.0
restart: unless-stopped
init: false
privileged: true
network_mode: host
container_name: homeassistant
hostname: homeassistant
ports:
- "8123:8123"
volumes:
- ha-config:/config
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
volumes:
ha-config:
The user interface can be found at http://your-ip:8123. (replace with the hostname
or IP
of the system). Follow the wizard to set up Home Assistant. Feel free to follow the official instructions.
We encourage to look for help in the official Home Assistant documentation and within the HA Community Forums or on a Jetson Research Group thread on the NVIDIA forum.
Configuration files location
You can specify where you want to store your Home Assistant Core configuration by attaching a docker volume
. Make sure that you keep the :/config
part:
-v /PATH_TO_YOUR_CONFIG:/config
Devices auto-discovery
Home Assistant can discover and automatically configure zeroconf
/mDNS
and UPnP
devices and add-ons on your network. In order for this to work you must create the container with --net=host
:
when using docker cli
:
--net=host
when using docker-compose.yaml
:
network_mode: host
Add-on auto-discovery
TLDR; It's disabled, go with manual way...
Native auto-discovery of add-ons running on the same host/network is disabled due to the requirement of running Home Assistant Supervisor
. This has some deep debian system dependencies which were too tedious to port in this project.
Most Home Assistant add-ons use
bashio
under the hood so some of the system overlay commands ware adapted to make them work withoutSupervisor
.
To manually add the wyoming
enabled add-on from this repository to the running Home Assistant Core instance, just follow the steps below:
- Browse to your Home Assistant instance (eg.:
homeassistant.local:8123
). - Go to
Settings > Devices & Services
. - In the bottom right corner, select the
Add Integration
button. - From the list, search & select
Wyoming Protocol
. - Enter the
wyoming
add-onHost IP
address (uselocalhost
if running of the same host as Home Assistant). - Enter the
wyoming
add-onport
(default is10400
).
Accessing Bluetooth Devices
To provide Home Assistant with access to the host's Bluetooth
device(s), the Home Assistant Core container uses BlueZ
on the host
- add the capabilities NET_ADMIN
and NET_RAW
to the container, and map dbus
as a volume
as shown in the examples below to enable Bluetooth support:
when using docker cli
:
--cap-add=NET_ADMIN \
--cap-add=NET_RAW \
-v /var/run/dbus:/var/run/dbus:ro
when using docker-compose.yaml
:
cap_add:
- NET_ADMIN
- NET_RAW
volumes:
- /var/run/dbus:/var/run/dbus:ro
- Fix add-ons auto-discovery
Got questions? You have several options to get them answered:
- The Home Assistant Discord Chat Server.
- The Home Assistant Community Forum.
- Join the Reddit subreddit in
/r/homeassistant
- In case you've found an bug in Home Assistant, please open an issue on our GitHub.
- The NVIDIA Jetson AI Lab tutorials section.
- The Jetson AI Lab - Home Assistant Integration thread on NVIDIA's Developers Forum.
- In case you've found an bug in
jetson-containers
, please open an issue on our GitHub.
Note
This project was created by Jetson AI Lab Research Group.
CONTAINERS
homeassistant-core:latest |
|
---|---|
Aliases | homeassistant-core |
Requires | L4T ['>=34.1.0'] |
Dependencies | build-essential homeassistant-base ffmpeg python:3.12 |
Dockerfile | Dockerfile |
Images | dustynv/homeassistant-core:latest-r36.2.0 (2024-04-26, 1.4GB) |
Notes | The homeassistant-core wheel that's build is saved in /usr/src/homeassistant |
homeassistant-core:2024.4.2 |
|
---|---|
Requires | L4T ['>=34.1.0'] |
Dependencies | build-essential homeassistant-base ffmpeg python:3.12 |
Dockerfile | Dockerfile |
Images | dustynv/homeassistant-core:2024.4.2-r35.4.1 (2024-04-09, 6.0GB) dustynv/homeassistant-core:2024.4.2-r36.2.0 (2024-04-09, 1.4GB) |
Notes | The homeassistant-core wheel that's build is saved in /usr/src/homeassistant |
CONTAINER IMAGES
Repository/Tag | Date | Arch | Size |
---|---|---|---|
dustynv/homeassistant-core:2024.4.2-r35.4.1 |
2024-04-09 |
arm64 |
6.0GB |
dustynv/homeassistant-core:2024.4.2-r36.2.0 |
2024-04-09 |
arm64 |
1.4GB |
dustynv/homeassistant-core:latest-r36.2.0 |
2024-04-26 |
arm64 |
1.4GB |
dustynv/homeassistant-core:r35.4.1 |
2024-04-10 |
arm64 |
6.0GB |
dustynv/homeassistant-core:r36.2.0 |
2024-04-10 |
arm64 |
1.4GB |
Container images are compatible with other minor versions of JetPack/L4T:
• L4T R32.7 containers can run on other versions of L4T R32.7 (JetPack 4.6+)
• L4T R35.x containers can run on other versions of L4T R35.x (JetPack 5.1+)
RUN CONTAINER
To start the container, you can use jetson-containers run
and autotag
, or manually put together a docker run
command:
# automatically pull or build a compatible container image
jetson-containers run $(autotag homeassistant-core)
# or explicitly specify one of the container images above
jetson-containers run dustynv/homeassistant-core:latest-r36.2.0
# or if using 'docker run' (specify image and mounts/ect)
sudo docker run --runtime nvidia -it --rm --network=host dustynv/homeassistant-core:latest-r36.2.0
jetson-containers run
forwards arguments todocker run
with some defaults added (like--runtime nvidia
, mounts a/data
cache, and detects devices)
autotag
finds a container image that's compatible with your version of JetPack/L4T - either locally, pulled from a registry, or by building it.
To mount your own directories into the container, use the -v
or --volume
flags:
jetson-containers run -v /path/on/host:/path/in/container $(autotag homeassistant-core)
To launch the container running a command, as opposed to an interactive shell:
jetson-containers run $(autotag homeassistant-core) my_app --abc xyz
You can pass any options to it that you would to docker run
, and it'll print out the full command that it constructs before executing it.
BUILD CONTAINER
If you use autotag
as shown above, it'll ask to build the container for you if needed. To manually build it, first do the system setup, then run:
jetson-containers build homeassistant-core
The dependencies from above will be built into the container, and it'll be tested during. Run it with --help
for build options.
Footnotes
-
Home Assistant Core is now containerized. ↩
-
Supports only manually installed, dockerized and preconfigured
wyoming
Local Voice Assistant add-ons from this repository. These add-ons are compatible withHome Assistant Core
hosted on any machine. ↩