Petit tuto pour installer et configurer ha-bridge. (ça avait déjà été évoqué à l'époque pour echo dans la video youtube suivante : https://www.youtube.com/watch?v=_9Uq0abToFM)
Ceci permet d'avoir une réponse instantanée quand on passe une commande à google home. Ca marche avec les commandes et scénario de la jeedom et on peut allumer, éteindre et mettre à une valuur (par exemple 50%). (ça ne permet pas de faire d'interaction mais le but c'est de remplacer les interaction par des devices ha-bridge).
Exemple de commande :
- *Ok Google Allume la télévision
*Ok Google Allume la lampe du salon
*Ok Google Allume la lampe de la cuisine
*Ok Google Eteint toute les lumières
*Ok Google Eteint l'alarme
1) Installation de HA-Bridge (un peu plus détaillé sur le github ou dans les commentaires de la vidéos youtube du haut)
ATTENTION : je recommande d'installer ça sur un raspberry différent du Jeedom pour pas tout casser.
L'installation est très simple et est décrite en anglais sur le github : https://github.com/bwssytems/ha-bridge
En gros les commandes sont:
Code : Tout sélectionner
mkdir habridge
cd habridge
wget https://github.com/bwssytems/ha-bridge/releases/download/v4.5.6/ha-bridge-4.5.6.jar
Code : Tout sélectionner
wget http://bwssystems.com/files/ha-bridge-5.0.0rc1.jar
Code : Tout sélectionner
java -jar ha-bridge-4.5.6.jar
Une fois démarré, il faut connecter l'application google pour se connecter a ha-bridge qui sera vu comme un bridge. On peut voir les équipements configurés sur ha-bridge et aussi gérer les pièces. (par exemple allumer toutes les lumières d'une pièce).
2) Configuration d'un device pour tester que tout marche bien
Il suffit de mettre un nom, de mettre "custom" dans le type de device, et de configurer la partie "on" et la partie "off".
Pour le on et le off il faut choisir "http device" comme type ensuite dans le target item on met l'url de la commande. Par exemple :
Code : Tout sélectionner
http://192.168.1.xyz/core/api/jeeApi.php?apikey=cle-api-jeedom&type=cmd&id=436
Code : Tout sélectionner
http://192.168.1.xyz/core/api/jeeApi.php?apikey=cle-api-jeedom&type=cmd&id=435
Si vous avez un vrai Hue alors vous pouvez le configurer dans la page bridge control. Ensuite il faut faire la synchro avec le vrai Hue (en appuyant sur le bouton) et si ça a marché, un nouvel onglet "Hue Device" apparait en haut et permettra de retrouver les vrai équipements du vrai Hue. Ceux-ci pourrons être importés en masse pour fonctionner en "pass-thru" -> Les commandes reçues pasr ha-bridge sont envoyées tel quel vers le vrai Hue.
3) Récupération des commandes intéressantes depuis jeedom (nom de l'équipement, nom de la commande, numéro de la commande)
Une manière smart de ne pas s'embéter à aller dans chaque page d'équipement pour aller cherche l'ID ou l'url de la commande est d'aller prendre l'information directement dans la base de données.
Pour celà, il faut aller dans la partie configuration de jeedom et ensuite dans la partie base de donnée.
Dans le champe vous pouvez par exemple taper la commande SQL suivante pour obtenir la liste de toutes les commandes types "lumière" :
Code : Tout sélectionner
select cmd.id, cmd.name, eqLogic.name as device from eqLogic left join cmd on cmd.eqLogic_id = eqLogic.id where cmd.display like "%LIGHT%" order by id;
Code : Tout sélectionner
select cmd.id, cmd.name, cmd.eqtype, cmd.logicalid, eqLogic.name as device from eqLogic left join cmd on cmd.eqLogic_id = eqLogic.id where cmd.display like "%LIGHT%" order by id;
Code : Tout sélectionner
select id,name from scenario;
3) Création du template pour ha-bridge (vous pouvez prendre celui qui est plus bas et raccourcir cette étape)
Je recommande l'utilitaire jq si vous voulez avoir un truc lisible. jq met en forme les fichier json (et fait plein d'autres choses si besoin)
Code : Tout sélectionner
sudo apt-get install jq
Code : Tout sélectionner
jq . /home/pi/habridge/data/device.db
Code : Tout sélectionner
[
{
"id": "5",
"uniqueid": "00:17:88:5E:D3:05-05",
"name": "Machin Salon",
"deviceType": "custom",
"offUrl": "[{\"item\":\"http://192.168.1.xyz/core/api/jeeApi.php?apikey=2ycNijbasghPaK8&type=cmd&id=437\",\"type\":\"httpDevice\"}]",
"onUrl": "[{\"item\":\"http://192.168.1.xyz/core/api/jeeApi.php?apikey=2ycNijbasghPaK8&type=cmd&id=436\",\"type\":\"httpDevice\"}]",
"inactive": false,
"noState": false,
"offState": false
}
]
Depuis ça, on va créer un fichier template que sera rempli avec les valeurs des commandes jeedom :
Code : Tout sélectionner
{
"id": "repid",
"uniqueid": "00:17:88:5E:D3:05-repuniqid",
"name": "repname",
"deviceType": "custom",
"offUrl": "[{\"item\":\"http://192.168.1.xyz/core/api/jeeApi.php?apikey=2ycNijbasghPaK8&type=cmd&id=repoff\",\"type\":\"httpDevice\"}]",
"onUrl": "[{\"item\":\"http://192.168.1.yxz/core/api/jeeApi.php?apikey=2ycNijbasghPaK8&type=cmd&id=repon\",\"type\":\"httpDevice\"}]",
"inactive": false,
"noState": false,
"offState": false
},
Il faut remplacer xyz par l'adresse de votre jeedom et 2ycN5asfijbasghPaK8 par la valeur de votre clé api jeedom. On retire les crochet et on laisse une virgule. Ensuite on recopie autant de fois à la suite pour le nombre de commande à créer.
4) Création d'un fichier csv avec les valeurs qu'on a récupérées au point 2 (autant de ligne que vous avez besoin)
Le fichier doit ressembler à ça :
Code : Tout sélectionner
repid,repuniqid,repname,repoff,repon
10,10,Lampe salon,437,436
11,11,Lampe fille,581,580
12,12,Lampe garcon,625,626
Code : Tout sélectionner
repid -> Numéro unique qu'on retrouvera dans ha-bridge
repuniqid -> Même numéro que le précédent sur 2 digits
repname -> Le nom de l'équipement. C'est ce que vous direz pour lancer la commande
repoff -> L'id de la commande oof de l'équipement
repon -> L'id de la commande on de l'équipement
Voila comment on va remplacer les valeurs dans le template avec une commande magique. Le template est dans le fichier qui s'apelle "template" et les valeurs dans le fichier qui s'apelle "csv".
On tape ceci :
Code : Tout sélectionner
n=0; echo -n "sed '" ;cat values | while read line; do if [ $n -eq 0 ]; then IFS=',' VARIABLES=($line) ; else IFS=',' F=($line) ; k=0; while [ $k -lt ${#VARIABLES[@]} ] ; do echo -n " 0,/"${VARIABLES[$k]}"/s/"${VARIABLES[$k]}"/"${F[$k]}"/;"; k=$(($k+1)) ;done; fi; n=$(($n+1)); done ; echo "' template"
Code : Tout sélectionner
sed ' 0,/repid/s/repid/10/; 0,/repuniqid/s/repuniqid/10/; 0,/repname/s/repname/Lampe salon/; 0,/repoff/s/repoff/437/; 0,/repon/s/repon/436/; 0,/repid/s/repid/11/; 0,/repuniqid/s/repuniqid/11/; 0,/repname/s/repname/Lampe fille/; 0,/repoff/s/repoff/581/; 0,/repon/s/repon/580/; 0,/repid/s/repid/12/; 0,/repuniqid/s/repuniqid/12/; 0,/repname/s/repname/Lampe garcon/; 0,/repoff/s/repoff/625/; 0,/repon/s/repon/626/;' template
Code : Tout sélectionner
{
"id": "10",
"uniqueid": "00:17:88:5E:D3:05-10",
"name": "Lampe salon",
"deviceType": "custom",
"offUrl": "[{\"item\":\"http://192.168.1.yxz/core/api/jeeApi.php?apikey=2ycN5asfijbasghPaK8&type=cmd&id=437\",\"type\":\"httpDevice\"}]",
"onUrl": "[{\"item\":\"http://192.168.1.yxz/core/api/jeeApi.php?apikey=2ycN5asfijbasghPaK8&type=cmd&id=436\",\"type\":\"httpDevice\"}]",
"inactive": false,
"noState": false,
"offState": false
},
{
"id": "11",
"uniqueid": "00:17:88:5E:D3:05-11",
"name": "Lampe fille",
"deviceType": "custom",
"offUrl": "[{\"item\":\"http://192.168.1.yxz/core/api/jeeApi.php?apikey=2ycN5asfijbasghPaK8&type=cmd&id=437\",\"type\":\"httpDevice\"}]",
"onUrl": "[{\"item\":\"http://192.168.1.yxz/core/api/jeeApi.php?apikey=2ycN5asfijbasghPaK8&type=cmd&id=436\",\"type\":\"httpDevice\"}]",
"inactive": false,
"noState": false,
"offState": false
},
......
Autant de fois que de lignes de csv
......
6) On ajoute ce qu'on vient de faire au fichier json de ha-bridge.
Le plus facile c'est encore une fois d'utiliser jq pour que ce soit joli, ajouter les nouvelles valeurs et sauver le résultat.
Ensuite on redémarre ha-bridge et toutes les commandes seront disponibles.
7) Petite variation pour les scénarios.
Pour les scénarios, y'a pas vraiment besoin de la partie off et l'url à appelé est un peu différente mais le concept est le même.
Et voila. C'es pas simple. Y'a plus simple. Mais c'était interessant de pouvoir commander tout jeedom sans délai et sans IFTTT.
Je pense que ce sera remplacer par des choses plus sympa dans un futur proche. Par exemple, certaines autres box on un module dans ha-bridge qui fait toute cette configuration tout seul ou alors google va ouvrir ses Api et tout sera encore plus magique.
A+
Systemic