Skip to content

Latest commit

 

History

History
 
 

homeassistant-core

homeassistant-core

CONTAINERS IMAGES RUN BUILD

Note

Thank you to @ms1design for his generous contributions and work on porting Home Assistant & Wyoming containers for Jetson!

Home Assistant Core onboarding screen

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

docker-compose example

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:

Onboarding

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.

How to's

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 without Supervisor.

Manual wyoming add-on discovery

To manually add the wyoming enabled add-on from this repository to the running Home Assistant Core instance, just follow the steps below:

  1. Browse to your Home Assistant instance (eg.: homeassistant.local:8123).
  2. Go to Settings > Devices & Services.
  3. In the bottom right corner, select the Add Integration button.
  4. From the list, search & select Wyoming Protocol.
  5. Enter the wyoming add-on Host IP address (use localhost if running of the same host as Home Assistant).
  6. Enter the wyoming add-on port (default is 10400).


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


TODO's

  • Fix add-ons auto-discovery

Support

Got questions? You have several options to get them answered:

For general Home Assistant Support:

For NVIDIA Jetson based Home Assistant Support:

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 to docker 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

  1. Home Assistant Core is now containerized.

  2. Supports only manually installed, dockerized and preconfigured wyoming Local Voice Assistant add-ons from this repository. These add-ons are compatible with Home Assistant Core hosted on any machine.