On est tellement de geek à avoir acquit un Echo pour sa sortie et à essayer de le faire fonctionner avec Jeedom avant la sortie du plugins officiel que voici mon retour d’expérience.
Deux solutions, une simple avec le plugins HomeBridge, mais cette solution n’apporte pas de grandes possibilités, et une autre solution avec HA-Bridge qui est plus complexe à mettre en place.
Solution HomeBridge
Sur cloudwatch
Créez un compte sur le portail : https://homebridge.cloudwatch.net/
Dans Jeedom
Dans Jeedom : Installez le plugins HomeBridge, activez le plugins.
Allez dans la configuration du plugins pour vérifier que le status du Démon est bien OK. De mon côté ce n’était pas le cas.
J’ai du cliquer sur le bouton « Relancer » dans dépendances pour installer les dépendances.
Après cela tout était au vert !
A partir de ce moment là, allez en ssh sur votre jeedom, et lancez l’installation du plugin homebridge-alexa :
sudo npm install -g homebridge-alexa
Attendre un peu, et le tour est joué 😉
Toujours dans Jeedom et dans la configuration du plugins :
- Mettez AlexaLikesApples dans la phrase secrète, et sauvegardez.
- Cliquez sur le bouton pour déclarer des plateformes, et insérez le code ci-dessous,
en y remplaçant votre identifiant et pass cloudwatch et votre PIN :{ "platform": "Alexa", "name": "Alexa", "username": "login_cloudwatch", "password": "mdp_cloudwatch", "pin":"000-00-000", "refresh":5 }
- Mettez le log sur debug (cela sera utile par la suite)
Dans le plugins HomeBridge, allez faire votre (dé)sélection de ce que vous voulez partager et contrôler via Alexa (pensez à sauvegarder).
Dans Alexa.amazon.fr ou sur l’application mobile
Installez le Skill HomeBridge et activez le avec le compte précédemment créé.
Le Skill est dispo ici : https://www.amazon.fr/Northern-Man-54-Homebridge/dp/B07B9QMTFQ
Un check
Retournez dans Jeedom, et aller dans le panneau configuration du plugins HomeBridge.
Il va falloir être rapide sur cette manipulation 🙂
Cliquez sur le deuxième bouton d’affichage des Logs : Homebrige_deamon
Cliquez sur Vider et fermer (histoire d’avoir un log propre).
Cliquez sur (Re)Démarrer et allez vite cliquer sur Homebrige_deamon à nouveau.
Surveillez et faite même une pause dans le log, les lignes suivantes doivent apparaître :
[2018-7-25 18:00:03] Loaded plugin: homebridge-alexa
[2018-7-25 18:00:03] Registering platform ‘homebridge-alexa.Alexa’
[2018-7-25 18:00:03] —
[2018-7-25 18:00:03] Loaded config.json with 0 accessories and 1 platforms.
[2018-7-25 18:00:03] —
[2018-7-25 18:00:03] Loading 1 platforms…
[2018-7-25 18:00:03] [Alexa] Initializing Alexa platform…
Tout semble ok, on continue
Dans Alexa, allez dans Maison connecté, puis cliquez sur Détecter. De mon côté, ça a fonctionné directement, mais apparemment certains ont dû attendre quelques minutes pour que la détection se fasse (n’hésitez pas à réessayer de temps en temps).
Enfin, renommez vos équipements dans Alexa pour pouvoir les contrôler facilement (Lumière du séjour par exemple).
Pour des équipements autres que des lumières, il vous faudra gruger avec des virtuels jeedom 😉
Solution Ha-bridge
Cette solution est techniquement plus complexe, mais elle ouvre toutes les possibilités !
Ha-bridge est dispo ici : https://github.com/bwssytems/ha-bridge
Ma box jeedom est installée sur le port 80, et je veux installer ha-bridge sur le port 8088 (histoire de mettre un port non utilisé)
Allez, hop go full ssh sur jeedom (on aime ça!)
On aime pas taper sudo à chaque ligne ! on se root :
su -
Installez la bonne version de java
(Perso j’avais une trop vieille version de linux, j’ai du faire un petit apt update; apt upgade)
apt-get update && apt-get install oracle-java8-jdk update-alternatives --config java
Sélectionnez JDK 8 (/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/bin/java) si nécessaire.
Télécharger ha-bridge
J’installe ha-bridge dans le dossier plugins, pour qu’il soit sauvegardé quand on lance un backup de jeedom
cd /var/www/html/plugins/ mkdir ha-bridge cd ha-bridge wget https://github.com/bwssytems/ha-bridge/releases/download/v5.2.1/ha-bridge-5.2.1.jar
On trouvera le lien vers la dernière version sur cette page : https://github.com/bwssytems/ha-bridge/releases
Vérifier que le port 8088 est dispo :
netstat -tlnp | grep 8088
Si aucune réponse, c’est ok, le port est dispo
Créer le dossier de config (non nécessaire je pense)
cd /var/www/html/plugins/ha-bridge mkdir data
Installation du service (le deamon)
cd /etc/systemd/system nano ha-bridge.service
Collez le code suivant :
[Unit] Description=HA Bridge Wants=network.target After=network.target [Service] Type=simple WorkingDirectory=/var/www/html/plugins/ha-bridge ExecStart=/usr/bin/java -jar -Dconfig.file=/var/www/html/plugins/ha-bridge/data/habridge.config -Dserver.port=8088 /var/www/html/plugins/ha-bridge/ha-bridge-5.2.1.jar [Install] WantedBy=multi-user.target
On reload et on démarre le service
systemctl daemon-reload systemctl start ha-bridge.service
Testez si aucun messages d’erreurs
systemctl status ha-bridge.service
→ Vérifier s’il y a des erreurs
Et faire que le service soit activé (au démarrage)
systemctl enable ha-bridge.service
Quelques checks :
Testez enfin http://ip_jeedom:8088 pour afficher l’interface de Ha-bridge
Faire
cat /var/www/html/plugins/ha-bridge/data/habridge.config
pour vérifier la présence du fichier de config (et qu’il soit plein de ….)
Pour que Alexa détecte les équipements, il faut que les api ha-bridge soient accessibles sur le port 80.
Pour cela on doit rediriger tous les requêtes http://ip_jeedom/api vers http://ip_jeedom:8088/api (de ha-bridge).
On active la gestion des redirections dans apache :
a2enmod proxy proxy_http headers
et on modifie la config apache :
nano /etc/apache2/sites-available/000-default.conf
Dessous la ligne :
<VirtualHost *:80>
Insérez les lignes :
ProxyPass /api http://localhost:8088/api nocanon ProxyPassReverse /api http://localhost:8088/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:8088/api*> Order deny,allow #Allow from all deny from all allow from 192.168.2.0/24 </Proxy>
On reload et redémarre le service :
systemctl daemon-reload service apache2 restart
Tester si l’api répond bien sur le port de jeedom :
http://ip_jeedom/api/status
et http://ip_jeedom/api/devices (qui donne la liste des équipements, donc au début, c’est vide)
Les problèmes commencent XD
Apache ne redémarre pas :
Faire un
systemctl status apache2.service
Si l’erreur est SSLProtocol, faire :
a2enmod ssl
systemctl restart apache2
Une erreur apache : Si ce n’est pas accessible et que vous avez un message d’erreur apache du style :
Service Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Aller dans jeedom → Analyse → Logs → http.error
Si erreur ap_proxy_connect_backend disabling worker for (localhost) for 60s
Tentez de mettre l’ip du jeedom à la place de localhost dans le fichier /etc/apache2/sites-available/000-default.conf (3 modifications)
J’ai aussi lu que certains mettraient retry=0 après nocanon (je n’en ai pas eu besoin).
Ajouter un équipement dans Ha-bridge
Allez sur http://ip_jeedom:8088
Bouton Add/Edit
Renseignez un nom dans name : Lumière Télévision (se sera le nom utilisé lors de l’appel vocal Alexa)
Plus bas, nous avons On Items, Dim Items, Off Items, etc…
On Items c’est la commande Alexa « Allume »
Off Items c’est la commande « Eteind »
Dim Items c’est la commande « Met Lumière Télévision à 50 » pour la mettre à 50% par exemple.
Pour chaque ordre, nous allons utiliser un appel à l’api de votre jeedom.
Donc dans Type on mettra : Requête HTTP
Dans Target Item : http://ip_jeedom/core/api/jeeApi.php?apikey=cle_api_jeedom&type=cmd&id=id_commande_a_executer
Dans Http Verb on met GET
Dans Content Type on met application/json
Cliquez sur le bouton Add, sinon c’est perdu, la commande n’est pas enregistrée 😉 (oui, je me suis fait avoir)
Vous l’aurez compris, pour une commande, on peut donc exécuter plusieurs appels API Jeedom : très pratique pour par exemple éteindre toutes les lumières de la maison en un seul appel vocal Alexa.
A vous de voir si vous mettez un delay entre deux commandes (en millisecondes attention).
Pour trouvez la clé api jeedom, allez dans le menu Jeedom :
La roue crantée en haut à droite –> Configuration –> API –> A droite de Clé API
Pour trouver l’id_commande_a_executer, déjà il faut pour rappel comprendre qu’il y a un id commande pour l’état de l’équipement, un pour le mettre en route, et un pour l’arrêter.
Allez dans votre équipement, et le plus simple est de cliquer sur « Configuration avancée » en haut à droite,
vous aurez la liste des commandes en bas, et pour chacune une roue crantée.
Cliquez sur la roue crantée, en haut à gauche vous aurez l’ID commande,
et vous pourrez même copier l’URL API en face de URL directe : Un clic droit, copier l’URL du lien et hop le tour est joué.
Sauvez votre équipement (device dans Ha-bridge) et pour les suivants, le mieux est de dupliquer un Device : Cliquez sur Edit/Copy, Cliquez sur Change Edit Mode pour modifier facilement les id de commandes, et cliquez sur Add Bridge Device pour créer un nouvel équipement.
Faire reconnaître ces équipements à Alexa
Dans un premier temps il faut afficher le bouton Link :
HA Bridge : Bridge control → Update security settings
Cocher Use Link Button et Save
Que se soit la première fois, ou pour ajouter ou mettre à jour un équipement il faut faire cette manipulation :
(Oui 2 fois Oui…. je n’ai pas trouver d’autres moyens)
Aller sur Alexa → Maison connectée → Appareils → Détecter
HA-Bridge → Bridge device → Cliquer Link
Si rien sur Alexa refaire rapidement (quasi à chaque fois) :
Aller sur Alexa → Maison connectée → Appareils → Détecter
HA-Bridge → Bridge device → Cliquer Link
Voilà les équipements de Ha-bridge doivent maintenant apparaître dans votre Alexa.
Amusez-vous bien.
Une page intéressante pour les appels api : https://jeedom.github.io/core/fr_FR/api_http
Si la découverte ne fonctionne pas :
Dans le fichier device.db, vérifiez que les uniqueid soient bien du format « uniqueid »: »69:74:ce:5a:c6:60:0c:2b-0b » (avec 9 groupements de 2 chiffres)
Mettre à jour HA Bridge avec la dernière release : https://github.com/bwssytems/ha-bridge/releases
(Cliquez sur le premier lien et télécharger)
Lancer en ligne de commande pour savoir d’où vient le problème. Exemple : /usr/bin/java -jar -Dconfig.file=/var/www/html/plugins/haBridge/ressources/data/habridge.config -Dserver.port=8088 /var/www/html/plugins/haBridge/ressources/ha-bridge-5.4.0.jar
Ouvrir les ports du firewall, et retester (parfois un port fermé peut tout bloquer) : UDP OUT : 50000, 5353 et 80. UPD IN 1900
S’il ne démarre toujours pas, démarrer en ligne de commande et faire un journalctl -f pour voir les ports bloqués par le firewall.
DEBUG : Quand HA est démarré, on peut aller dans log et en bas passer en DEBUG, puis en ssh journalctl -f | grep java
Tracer les requêtes UPNP : Dans ha bridge cocher Trace UPNP Call, et Trace State Changes, puis mettre le log sur TRACE.