View on GitHub

server-workshop

HomeAssistant Installation

Bind Mount für Config-Ordner, damit die Config außerhalb des Containers gespeichert wird. HomeAssistant wird grundsätzlich nur über Dateien konfiguriert. Messwerte werden standardmäßig in einer lokalen SQLite-Datenbank gespeichert, also im Dateisystem.

services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - ./config:/config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    privileged: true
    ports:
      - 8123:8123

Setup mit MariaDB

Echte MySQL-Datenbank zur Speicherung der Messwerte. Sinnvoll für langfristigere Speicherung (trotzdem nicht für Langzeitarchivierung geeignet!)

services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - ./config:/config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    privileged: true
    ports:
      - 8123:8123
    depends_on:
      - mariadb

  mariadb:
    image: mariadb
    container_name: mariadb
    restart: unless-stopped
    volumes:
      - mariadbx:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
      MYSQL_DATABASE: "${MYSQL_DATABASE}"
      MYSQL_USER: "${MYSQL_USER}"
      MYSQL_PASSWORD: "${MYSQL_PASSWORD}"
      PUID: 1000
      PGID: 1000

# phpMyAdmin zur Verwaltung der Datenbank
#  phpmyadmin:
#    image: phpmyadmin
#    restart: unless-stopped
#    environment:
#      PMA_HOST: mariadb
#    ports:
#      - 8080:80

volumes:
  mariadbx:

Datei .env für Umgebungsvariablen

MYSQL_ROOT_PASSWORD=ROOTPW
MYSQL_DATABASE=homeassistant
MYSQL_USER=homeassistant
MYSQL_PASSWORD=MYUSERPW

einfügen in secrets.yaml von HA:

mariadb_url: mysql://root:ROOTPW@mariadb/homeassistant?charset=utf8

einfügen in configuration.yaml von HA:

recorder:
  db_url: !secret mariadb_url
  purge_keep_days: 365
  commit_interval: 0

Dann wird die MariaDB genutzt, um Messwerte zu speichern. Messwerte werden 365 Tage aufbewahrt.

Zigbee-Stick oder andere USB-Geräte

USB-Geräte, die am Hostystem angeschlossen sind, z. B. ein Zigbee-Stick, sind nicht direkt im Docker-Container verfügbar. Man muss in der docker-compose.yml explizit auswählen, welche Geräte für den Container bereitgestellt werden.

Unter Linux sind alle Geräte als Dateien unter /dev abgebildet. Mit ls /dev auflisten, welche Geräte es gibt. Dann Stick einstecken und wieder auflisten. Durch den Unterschied kann man das Gerät finden.

Unter devices in der Compose-Config kann man dann dieses Gerät verfügbar machen:

services:
  homeassistant:
    container_name: homeassistant
    # ...
    devices:
      - /dev/ttyACM0

Danach kann man in HomeAssistant die Integration “Zigbee Home Automation” verwenden.