💡 dialogflow smart-home agent

🚧 Introduction

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).

1. 🔌 Openhab

Openhab expose les différents devices via une interface de contrôle web ou via l'application mobile
openhab-iOS openhab-android openhab-web
Pour brancher l'application sur l'instance openhab ⚫ Settings
➡️ Remote URL 👉 http://62.35.68.9:8080
➡️ Ignore SSL Certificates 👉 ✅

2. Openhab Proxy API 🔶

run in-postman

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 😈)

3. Setup 💻

1. Créer un agent dialogflow from scratch, (skip to next step si vous avez déjà créer votre agent)

🚩 : 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
    import-agent

  • Importer le zip dans l'agent import-agent

  • Récupérer la configuration des Entities via le proxy au format csv et les ajouter dans dialogflow generate-and-import-entity-demo

  • 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

    create-entity-demo

2. Dev/Test dalogflow fulfillment webhook
  • 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

    import-agent

  • Remplacer <ngrok-auth-token> dans package.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

    vscode-npm-scripts

  • Ajouter l'url générée par ngrok + /webhook dans la config fulfillment de l'agent sur dialogflow

    vscode-npm-scripts

☕ 🍺 😀 🔥 🚀 ✈️ 🌔 ☀️ 🌠 ⭐