harpi
Obsah
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
- data ve složce /home/pi/homeassistant
- DBus je potřeba pro bluetooth integraci
- je potřeba mít nainstalován BlueZ viz https://www.home-assistant.io/integrations/bluetooth
- doporučuje se používat dbus-broker místo dbus-daemon
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)
- v HACS jsem našel Local Tuya, ale není tam Tuya Local :D musí se přidat vlastní repo nebo kliknout na link v https://github.com/make-all/tuya-local
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:apassword:
Kontejner s Unifi
- kvůli ARMv8 musím snížit verzi mongo na 4.4.18
- nové zařízení má credentials ubnt:ubnt, po adaptaci se změní na uživatele admin s generovaným heslem. Heslo lze zjistit a nastavit v Unifi Devices - Devices updates and settings
- zapnutí 802.11r automaticky vygeneruje mobilní doménu, lze zjistit z wireshark, na zařízení jsem ji nenašel.
mkdir -p unifi/db mkdir -p unifi/data mkdir -p unifi/db-init
vim unifi/db-init/init-mongo.js
db.getSiblingDB("unifi").createUser({user: "unifi", pwd: "YOUR_PASSWORD", roles: [{role: "dbOwner", db: "unifi"}]});
db.getSiblingDB("unifi_stat").createUser({user: "unifi", pwd: "YOUR_PASSWORD", roles: [{role: "dbOwner", db: "unifi_stat"}]});
vim unifi/container-vars.env PUID=1000 PGID=1000 MONGO_USER=unifi MONGO_PASS=YOUR_PASSWORD MONGO_HOST=unify-mongodb MONGO_PORT=27017 MONGO_DBNAME=unifi
vim unifi/docker-compose.yml
Kontejner DokuWiki
- dříve jsem provozoval na pi2, ale po upg tam byl problém s 64bit kódem na 32bit rpi.
- ze starého jsem zkopiroval
- dokuwiki/conf
- smazal jsem *.bak, *.examples, *.dist
- dokuwiki/data
- smazal jsem cache/, locks/, __dummy
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
- 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.txt · Poslední úprava: autor: djbuldog
