Lien Domoticz-Alexa : ha-bridge

ha-bridge est un logiciel qui simule sur votre ordinateur un pont zigbee Philips Hue.

installation de ha-bridge

On va installer avec l’utilisateur domotiko précédemment créé.

pré-requis : 

sudo su - domotiko
mkdir ha-bridge
cd ha-bridge
wget https://github.com/bwssytems/ha-bridge/releases/download/v5.4.1RC1/ha-bridge-5.4.1RC1.jar -O ha-bridge.jar
exit

création du service :

Par défaut ha-bridge écoute sur le port 80, déjà utilisé par apache, on va le faire écouter sur le port 8082 pour réduire les risques de conflit.

sudo bash
cat > /etc/systemd/system/ha-bridge.service <<!

[Unit]
Description=HA Bridge
Wants=network.target
After=network.target

[Service]
Type=simple

WorkingDirectory=/home/domotiko/ha-bridge
ExecStart=/usr/bin/java -jar -Dserver.port=8082 -Dconfig.file=/home/domotiko/ha-bridge/data/habridge.config /home/domotiko/ha-bridge/ha-bridge.jar
User=domotiko
RuntimeDirectory=domotiko
LogsDirectory=domotiko
Restart=on-abort
PIDFile=/var/run/domotiko/ha-bridge.pid

[Install]
WantedBy=multi-user.target
!

sudo systemctl daemon-reload
sudo systemctl start ha-bridge.service
sudo systemctl enable ha-bridge.service

ha-bridge est maintenant accessible sur : http://adresse_du_pi:8082/

facultatif mais conseillé : configurez un utilisateur.

se connecter sur l’interface : http://adresse_du_pi:8082 onglet bridge control : Cliquez sur «Update Security Settings»

configurer apache pour relayer le port 80 vers le port 8082

Google Home et Alexa exigent que le pont réponde sur le port 80. On va utiliser les fonctions de proxy d’ apache pour rediriger les urls concernant ha-bridge vers le port 8082.

On active les modules nécessaires et on lance l’éditeur nano pour modifier la configuration du site par défaut :

sudo a2enmod proxy proxy_http headers
sudo nano /etc/apache2/sites-enabled/000-default.conf

Dans l’éditeur, il faut maintenant ajouter les lignes ci-dessous aprés la ligne ‘<VirtualHost *:80>’ :

        ProxyPass         /api  http://localhost:8082/api nocanon
        ProxyPassReverse  /api  http://localhost:8082/api
        ProxyRequests     Off
        AllowEncodedSlashes NoDecode

        # Local reverse proxy authorization override
        # Most unix distribution deny proxy by default (ie /etc/apache2/mods-enabled/proxy.conf in Ubuntu)
        <Proxy http://localhost:8082/api*>
                  Order deny,allow
                  Allow from all
        </Proxy>

sauver le fichier avec Ctrl-X

On active apache, et on le relance :

sudo systemctl enable apache2
sudo systemctl stop apache2
sudo systemctl start apache2

Vous pouvez maintenant configurer le lien Alexa-Domoticz : voir l’article Amazon Alexa

Note :

Après migration du pi vers bullseye, apache ne démarrait pas au démarrage. Erreurs :

Sep 23 17:45:24 localhost apachectl[500]: (99)Cannot assign requested address: AH00072: make_sock: could not bind to address 192.168.24.103:80
Sep 23 17:45:24 localhost apachectl[500]: no listening sockets available, shutting down
Sep 23 17:45:24 localhost apachectl[500]: AH00015: Unable to open logs
Sep 23 17:45:24 localhost apachectl[449]: Action 'start' failed.
Sep 23 17:45:24 localhost apachectl[449]: The Apache error log may have more information.

un lancement manuel avec sudo systemctl start apache2 marchait sans problème. Pour contourner le problème, j’ai rajouté dans /lib/systemd/system/apache2.service dans la section «[Service]» les lignes :

Restart=on-failure
RestartSec=10

Maintenant le premier démarrage d’ apache échoue, mais une deuxième tentative réussit automatiquement 10 secondes plus tard.