Uživatelské nástroje

Nástroje pro tento web


harpi

Toto je starší verze dokumentu!


HA Raspberry PI

  • na čistý raspberry PI OS (bez desktopu) nainstalovat docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
  • kontejnery mám propojeny přes vlastní network, protože default bridge, který by jinak stačil, neposkytuje preklad názvu kontejnerů na jejich IP adresu (viz komunikace_mezi_kontejnery)
  • vypnul jsem swap
    • sudo dphys-swapfile swapoff
    • sudo systemctl disable dphys-swapfile
  • zapnul jsem cgroup pro memory (aby fungovaly limity RAM pro docker)
    • do cmdline.txt jsem přidal cgroup_enable=memory cgroup_memory=1

Kontejner s HA

apt install dbus-broker
systemctl enable dbus-broker.service --now
systemctl disable dbus.service
  • po spuštění na http://<host>:8123
pi@harpi:~ $ cat /home/pi/homeassistant/homeassistant.service 
[Unit]
Description=Home Assistant Container
After=docker.service
Requires=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker run \
  --rm \
  --name homeassistant \
  -e TZ=Europe/Prague \
  -v /home/pi/homeassistant/config:/config \
  -v /run/dbus:/run/dbus:ro \
  -p 8123:8123 \
  --network my-net \
  ghcr.io/home-assistant/raspberrypi4-64-homeassistant:stable
ExecStop=/usr/bin/docker stop homeassistant

[Install]
WantedBy=multi-user.target
  • bacha.. musí být kvalitní napájení nebo se celé pi po spuštění HA zasekne :D
  • instalace HACS
docker exec -it homeassistant /bin/bash
wget -O - https://get.hacs.xyz | bash -
  • dříve se přidávalo přes configuration.yaml, teď už je to asi přes integraci (křičelo to, že to nemám přidávat ručně do yaml)

Bluetooth

Funguje správně?

  • v journalctl home assistenta nebo ve web UI - system - logs je error:
2025-01-17 10:18:08.734 WARNING (MainThread) [bluetooth_auto_recovery.recover] Getting Bluetooth adapter failed hci0 [D8:3A:DD:96:0B:D9] because the system cannot create a bluetooth socket: Unable to open PF_BLUETOOTH socket
2025-01-17 10:18:08.735 WARNING (MainThread) [bluetooth_auto_recovery.recover] Could not find adapter with mac address D8:3A:DD:96:0B:D9 or hci0
2025-01-17 10:18:08.735 WARNING (MainThread) [bluetooth_auto_recovery.recover] Closing Bluetooth adapter hci0 [D8:3A:DD:96:0B:D9] failed: 'NoneType' object has no attribute 'detach'
  • vypadá to, že v dockeru není přímý přístup k Bluetooth HW (přes ten PF_BLUETOOTH). Funguje pouze přístup přes dbus a nejde s tím nic udělat.
    • HA (userspace) komunikuze s BlueZ přes DBUS (bluetooth systemd služba)
    • PF_BLUETOOTH je pro přímý přístup k BT zařízení (kernelspace)
      • přímý přístup může být potřeba například pro reset zařízení nebo určité BLE skeny
      • v HA je nějaký bluetooth_auto_recovery.recover, což je py skript, nespíš používá pybluez vyžadující PF_BLUETOOTH
    • ChatGPT říkal, že to může být tím img, že prostě nemá podporu pro PF_BLUETOOTH a proto nepomáhá ani když mu dávám privileged práva
  • takhle jde ověřit, že PF_BLUETOOTH nefunguje
docker exec -it homeassistant /bin/bash

hciconfig 
Can't open HCI socket.: Address family not supported by protocol

python3 -c "import socket; socket.socket(socket.AF_BLUETOOTH, socket.SOCK_RAW, socket.BTPROTO_HCI)"
  • takhle lze ověřit, že bluetooth přes D-BUS funguje
docker exec -it homeassistant /bin/bash

bluetoothctl list
Unable to open mgmt_socket
Controller D8:3A:DD:96:0B:D9 harpi [default]

proč to píše to „Unable to open mgmt_socket“?

  • přidání –privileged nepomohlo
    • přes výpis /dev lze ověřit, že privileged zpřístupnil vše včetně /dev/ttyACM0
  • nejspíš ta hláška souvisí s PF_BLUETOOTH? (viděl jsem na diskuzi člověka, co na to pustil strace)

funguje divně

  • měl jsem zapnutý –privileged a v bluetooth viděl 4 různá zařízení včetně xgimi RC hned po stisku tlačítka
  • odstranil jsem —privileged a už nic neviděl
  • vrátil jsem –privileged a zase nic neviděl
  • spustil jsem ručně sken (bluetoothctl scan on), v kontejneru, a ukázalo se xgimi RC i v UI
  • ale takto se to chovalo i bez privileged :D
  • po ukončení bluetoothctl se ale vypne i sken
bluetoothctl
scan on
  • při ručním spouštění skenů a pokusech se v HA občas ukáže nová chyba :D
hci0 (D8:3A:DD:96:0B:D9): Error stopping scanner: [org.bluez.Error.Failed] No discovery started
  • chová se to divně
  • na diskuzích často píši, že se to BT zasekává, hlavně na rpi. Proto je tam asi ten BT recovery skript. Jenomže on nemá přístup k tomu PF_BLUETOOTH
  • doporučuje se používat spíš Bluetooth proxy přes ESP Home

Kontejner s MQTT

mkdir -p /home/pi/mosquitto/config /home/pi/mosquitto/data /home/pi/mosquitto/log
vim /home/pi/mosquitto/config/mosquitto.conf
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883
allow_anonymous false
password_file /mosquitto/config/passwordfile
docker run -it --rm -v /home/pi/mosquitto/config:/mosquitto/config eclipse-mosquitto mosquitto_passwd -c /mosquitto/config/passwordfile z2m
pi@harpi:~ $ cat mosquitto/mosquitto.service 
[Unit]
Description=Mosquitto MQTT Broker Container
After=docker.service
Requires=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker run \
  --rm \
  --name mosquitto \
  -v /home/pi/mosquitto/config:/mosquitto/config \
  -v /home/pi/mosquitto/data:/mosquitto/data \
  -v /home/pi/mosquitto/log:/mosquitto/log \
  --network my-net \
  eclipse-mosquitto
ExecStop=/usr/bin/docker stop mosquitto

[Install]
WantedBy=multi-user.target

Kontejner s Zigbee2mqtt

  • data ve složce /home/pi/zigbee2mqtt
  • je třeba zjistit path k USB adaptéru a doplnit do docker
cat /home/pi/zigbee2mqtt/zigbee2mqtt.service 
[Unit]
Description=Zigbee2MQTT Container
After=docker.service
Requires=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker run \
  --rm \
  --name zigbee2mqtt \
  --device=/dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20230221110549-if00:/dev/ttyACM0 \
  -v /home/pi/zigbee2mqtt/data:/app/data \
  -v /run/udev:/run/udev:ro \
  -e TZ=Europe/Prague \
  -p 8080:8080 \
  --network my-net \
  koenkk/zigbee2mqtt
ExecStop=/usr/bin/docker stop zigbee2mqtt

[Install]
WantedBy=multi-user.target

configuration.yaml

  • je třeba nastavit device
    • mám adaptér Sonoff ZBDongle-E V2, měl jsem firmware EZSP 6.4.x
    • ale EZSP prý končí a nahrazuje ho ember
    • do konfigurace jsem tedy přidal typ ember a musel jsem i boudrate
    • naflashoval jsem ncp-uart-hw-v7.4.4.0-zbdonglee-230400.gbl přes universal-silabs-flasher
serial:
  port: /dev/ttyACM0
  adapter: ember
  baudrate: 230400
  • Zigbee síť se inicializuje automaticky
  • je třeba nastavit parametry MQTT serveru v configu
    • přidat user: a password:

Komunikace mezi kontejnery

  • mám vytvořenou vlastní siť (typu bridge), aby mohli kontejnery mezi sebou komunikovat
docker network create my-net
docker network ls

TODO

FIXME

  • ze tuya integrace nenajdou zařízení skenem, protože kontejner je v jiné síti
  • zapsat, kde je jaká konfigurace HA
    • hlavně ten .storage a že to jde klidně copy pastnout
harpi.1752789092.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki