HomeAssitant¶
Qu’est-ce que HomeAssistant ?¶
HomeAssistant est, comme son nom l’indique, un orchestrateur de domotique. De très nombreux tweaks sont disponible sur lui, j’ai commencé à le manipuler un peu. Ici, la documentation s’attardera dans un premier temps sur son installation. Je la mettrai à jour pour présenter mes dashboards et fonctionnalités qui me paraiassent nécessaires.
Il existe plusieurs méthodes d’installation, soit une image entière, soit du docker, soit à la main. On verra en dessous la méthode manuelle.
Installation¶
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y python3 python3-dev python3-venv python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff6 libturbojpeg0-dev tzdata ffmpeg liblapack3 liblapack-dev libatlas-base-dev python3-numpy bluetooth # Le dernier n'était pas présent dans la doc, mais mon raspberry remontait des erreurs sans ça.
sudo useradd -rmd /srv/homeassistant homeassistant -G dialout #,gpio,i2c #Ne rajouter les groupes qu'au besoin. Ils disent que dialout est nécessaire pour Z-Wave & Zigbee, GPIO pour ... gpio ... mais l'autre, j'ai pas d'idée.
sudo -u homeassistant -s
pipx install homeassistant
J’ai déjà dit que je détestais les paquets « clé en main » où on a tout de compris dedans ? Bah là, on est en plein dedans … Je vais voir comment il va cohabiter avec mon pihole…
Python 3.13¶
Pour la version 2024.12, j’ai besoin d’avoir homeassistant 3.13. Pour cela, direction sid.
echo 'deb https://deb.debian.org/debian/ sid main contrib non-free' | sudo tee /etc/apt/sources.list.d/deb.debian_sid.list
apt update && apt install --reinstall python3.13 python3.13-venv python3.13-dev python3-pip pipx #pas sure que ca serve
ln -fs $(which python3.13) $(which python)
sudo -u homeassisstant -s
pipx install homeassistant
Autostart avec Systemd¶
Une fois HomeAssistant installer, il convient de lui créer un service pour qu’il se lance automatiquement. Pour ça, on va
cat <<EOF > /etc/systemd/system/home-assistant@homeassistant.service
[Unit]
Description=Home Assistant
After=network-online.target
[Service]
Type=simple
User=%i
WorkingDirectory=/srv/%i/.homeassistant
ExecStart=/srv/%i/bin/hass -c "/srv/%i/.homeassistant"
RestartForceExitStatus=100
[Install]
WantedBy=multi-user.target
EOF
Reverse proxy avec nginx¶
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80 default_server;
# http2 on;
server_name home.par.luclis.fr pi2.par.luclis.fr;
return 301 https://$host$request_uri;
location / {
add_header Alt-Svc 'h3=":443"; ma=86400';
}
}
server {
listen 443 ssl http2 default_server;
# listen 443 ssl default_server;
# http2 on;
# http3 on;
server_name home.par.luclis.fr pi2.par.luclis.fr;
ssl_certificate /etc/ssl/public/home.par.luclis.fr_chain.pem;
ssl_certificate_key /etc/ssl/private/home.par.luclis.fr.key;
#Fichier de logs
access_log /var/log/nginx/homeassistant_access.log;
error_log /var/log/nginx/homeassistant_error.log;
location / {
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload;";
proxy_pass http://127.0.0.1:8123;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
Configuration¶
La plupart des modules se configurent de façon automatique. J’ai gardé les quelques qui ont des particularités.
Installation de HACS¶
Ok, c’est tout pourri, mais ca fonctionne alors tant pis
wget -O - https://get.hacs.xyz | bash -
Musique et music-assistant¶
Par défaut, Home Assistant n’est pas hyperdoué avec la musique … Pour que ça soit un peu mieux, il y a Music Assistant. En gros, son rôle c’est de s’interfacer entre HA et les enceintes pour te permettre de mettre musique ou autres alertes. Pour le lancer, il faut d’abord l’installer puis l’exécuter. Par défaut, MA propose uniquement une image docker ou l’intégration depuis un OS HomeAssistant. Ça m’a un peu soulé, je l’ai bypass :
apt install cargo #Necessaire si python = 3.13.
# echo 'deb https://deb.debian.org/debian/ sid main contrib non-free' > /etc/apt/sources.list.d/deb.debian_sid.list #Necessaire si python 3.13
# apt update && apt install --reinstall ffmpeg/unstable rustc/unstable --no-install-recommends #Necessaire si python 3.13
sudo -u homeassistant
pipx install music-assistant
pipx inject music-assistant music_assistant_frontend colorlog shortuuid memory_tempfile unidecode eyed3 faust-cchardet yt-dlp
Pour Music-Assistant, l’inconvénient majeur de pipx est qu’il fait penser à MASS qu’il n’est pas dans un venv. ca nous oblige à installer les paquets un par un j’ai l’impression.
ln -fs .local/bin/ bin
pipx inject --include-apps music-assistant uv
pipx inject music-assistant aiosonos==0.1.6 #Sonos integration
pipx inject music-assistant soco==0.30.5 defusedxml==0.7.1 #Sonos S1 integration
Je sais pas encore pourquoi, mais il m’a fallut la S1 plutôt que la normale. Je regarderai à l’occasion. Autre particularité, j’ai dû installer ffmpeg en version 7.
echo 'deb https://deb.debian.org/debian/ sid main contrib non-free' > /etc/apt/sources.list.d/deb.debian_sid.list
apt update && apt install --reinstall ffmpeg/unstable rustc/unstable --no-install-recommends
##
Service¶
Une fois installé, on créé le service et on le lance.
cat <<EOF > /etc/systemd/system/music-assistant@homeassistant.service
[Unit]
Description=Music Assistant
After=network-online.target
[Service]
Type=simple
User=%i
WorkingDirectory=/srv/%i/.homeassistant
ExecStart=/srv/%i/bin/mass
RestartForceExitStatus=100
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable music-assistant@homeassistant.service
systemctl start music-assistant@homeassistant.service
Attention toutefois : si ce dernier cherche à faire des pip, ça ne marchera pas (car il ne sait pas qu’il est dans le venv). Il faudra les faire à la main.
Installation du support matter¶
Plutôt chiant car hass pousse a faire du docker casse couille.
apt-get update && apt-get install -y --no-install-recommends curl libuv1 zlib1g libjson-c5 libnl-3-200 libnl-route-3-200 unzip gdb iputils-ping iproute2 && apt-get purge -y --auto-remove #Normalement, rien de nouveau
chmod 1770 /data
sysctl -w net.ipv6.conf.all.forwarding=0
sysctl -w net.ipv6.conf.wlan0.accept_ra=1
sysctl -w net.ipv6.conf.wlan0.accept_ra_rt_info_max_plen=64
curl -o /usr/local/bin/chip-ota-provider-app https://github.com/home-assistant-libs/matter-linux-ota-provider/releases/download/2024.7.2/chip-ota-provider-app-aarch64
chmod +x /usr/local/bin/chip-ota-provider-app
Puis en tant que homeassistant
pipx install python-matter-server[server]
pipx inject python-matter-server cryptography
En tant que service systemd¶
[Unit]
Description=matter server
After=network-online.target
[Service]
Type=simple
User=%i
WorkingDirectory=/srv/%i/.homeassistant
ExecStart=/srv/%i/local/bin/matter-server --storage-path /srv/%i/.matter/ --paa-root-cert-dir /srv/%i/.matter/credentials
RestartForceExitStatus=100
[Install]
WantedBy=multi-user.target