Le but de ce projet est de construire un agent avec dialogflow qui a le super pouvoir de contrôler votre maison
:house_with_garden: ... intelligente :wink:
Une maison virtuelle est mise en place pour chaque groupe via openhab, un framework open source de domotique (home automation).
Openhab expose les différents devices via une interface de contrôle web ou via l'application mobile
Pour brancher l'application sur l'instance openhab ⚫ Settings
➡️ Remote URL 👉 http://62.35.68.9:8080
➡️ Ignore SSL Certificates 👉 ✅
Pour vous faciliter le développement, un proxy à été dévelopé afin de gérer une configuration (maison) par groupe et exposer un seul point d'accés pour tout le monde
👉 @ documentation
👉 @ API base url
Le proxy vous permettra de :
- Générer a été dévelopé la volée vos entités dialogflow
- Récupérer votre configuration (maison, zones, chambres, devices)
- Récupérer ou mettre à jour l'état d'un device
- Un passe-plat (gateway) vers l'api ITEM de openhab (pour les plus fous 😈)
🚩 : Vous pouvez aussi importer le built-in agent smart-home et l'éditer en ajoutant les entitées générés via le proxy (en modifiant aussi les intent + training phrases)
- Télécharger le quickstart-agent, celui-ci contient les entités de base + un intent de demo
- Importer le zip dans l'agent
- Récupérer la configuration des Entities via le proxy au format csv et les ajouter dans dialogflow
- Créer les intents
On peut par exemple imaginer deux intents différents:
👉 récupérer l'état d'un device (ex: smarthome.device.state.check )
👉 commander un device (ex: smarthome.device.command )
🚀 voici un exemple complet smart-home-demo
-
Cloner le project 👻
-
Installer les packages NPM
~ > cd src/dialogflow-fulfillment/ ~\dialogflow-project\src\dialogflow-fulfillment > npm install
-
Remplacer
<access-token>
dans/src/index.ts
const openhabClient = new OpenhabClient('https://openhabproxyapi-dev-as.azurewebsites.net', '<key>');
-
créer un compte ngrok et récupérer le
Tunnel AuthToken
👉 depuis le dashboard ngrok
-
Remplacer
<ngrok-auth-token>
danspackage.json
"tunnel": "ngrok http -authtoken <ngrok-auth-token> -host-header=localhost 8080"
-
Depuis le terminal visual studio, lancer les commandes suivantes
~/dialogflow-project/src/dialogflow-fulfillment > npm run dev
~/dialogflow-project/src/dialogflow-fulfillment > npm run tunnel
-
Ajouter l'url générée par ngrok + /webhook dans la config fulfillment de l'agent sur dialogflow
☕ 🍺 😀 🔥 🚀