Intégrer Gladys dans GoogleHome

Pouvoir dire “Ok Google, allume la lampe”, ce qui enverrai un message à Gladys pour allumer cette lampe.

Bloqué par manque de spec / de réflexion.

@pierre-gilles parlons en ici.
Les services Google Home et Smartthings permettront de synchroniser Gladys avec les applis connues, plus particulièrement l’assistant vocal de Google qui a comprend plutôt bien quand on lui parle. Aujourd’hui sur la v3, je contrôle déjà mes devices avec Google Home mais je suis obligé de scanner manuellement les nouveaux devices.
Avec la v4, et l’OAuth, il serait judicieux que ce soit Gladys qui gère les devices disponibles dans Google Home.
Une fois la connexion OAuth établie, Gladys convertira les devices qu’elle connaît en devices Google (un mapping sur les features) afin de pouvoir prendre le contrôle avec l’assistant vocal ou l’application mobile.
On peut même aller jusqu’à diffuser la vidéo de la caméra.
Et en version Gladys plus, proposer une configuration intégrée, avec un module dans Google pour Gladys (car pour un compte perso, il faut créer son propre compte dev Google afin d’y entrer les paramètres d’OAuth).

Aujourd’hui je suis déjà capable de capter les update sur les devices, il me manque simplement la création et suppression des devices pour rester le plus a jour possible.

2 Likes

Ok je vois ! Merci pour l’explication :slight_smile:

Effectivement, dans ce cas là un event “device created” global fait sens

Hello @AlexTrovato ! J’ai vu que tu avais avancé sur la PR, on peut en parler ici sur ce que ta PR fait ?

J’ai vu que sur la documentation tu incites l’utilisateur à mettre son instance Gladys en public sur internet… Jusqu’à là, « mettre en public son instance », c’est une notion qu’on a pas du tout dans Gladys v4, et je ne sais même pas si c’est une notion qu’on veut ajouter.

En terme d’UX c’est vraiment terrible et ça veut dire qu’on repartirait sur tous les travers de la v3 (le https auto-signé, l’ouverture des ports de la box, les instances piratées, etc…). C’est des notions qui même pour un tech demande de l’investissement en temps initial, de la maintenance, et des compétences techniques.

Je pense qu’il y a une vrai réflexion à avoir sur tout ça.

Est-ce que tu pourrais commencer par me décrire le flow général de ce service ? Et voir si on pourrait faire sans :slight_smile:

Salut @pierre-gilles,
en effet, pour ce sujet, je pense qu’il y aura vraiment 2 cas d’usage : le mode expert avec les travers de la v3, et le mode Gladys Plus, clé en main.

J’ai tenté de faire un petit document (pas parfait) pour tenter de décrire ce qui se passe, ce qui est conçu avec la PR en cours, et une potentielle solution avec Gladys Plus.

https://docs.google.com/document/d/1iB2_4OHlNwnAlCpsEL-mSjARCxx_tVnJYbeXxfSPGY0/edit?usp=sharing

Si tu as un souci pour accéder au document, préviens moi.

Mais je pense qu’il sera rapidement « indispensable » de proposer une intégration avec Google Home / Alexa / Siri / SmartThings.

4 Likes

Bah justement, est-ce que le mode expert avec les travers de la v3 est nécessaire ? Peut-on s’en passer ? c’est ça ma question

En fait pour moi les utilisateurs Gladys Plus à terme vont représenter 20-30% des utilisateurs Gladys en général.

Donc ça voudrait dire que la majorité n’utilisera pas Gladys Plus (c’est normal, c’est comme ça dans tout produit freemium/premium).

Je trouve ça dommage que ces utilisateurs aient une expérience affreuse/bugguées/très compliquée, alors qu’on se positionne comme étant un produit « accessible à tous/pas de ligne de commande/pas de compétence en programmation/etc… »

Franchement, le HTTPS en auto-signé + l’ouverture de port, c’est un cauchemar ^^

J’ai peur que du coup, le forum/les plaintes redeviennent comme la v3 si on prend les mêmes choix technologique que la v3.

Edit: Et pour moi on ne peut pas parler de « mode expert ». L’utilisateur lambda Gladys (la majorité) voudra du Google Home, et ne paiera pas Gladys Plus.

Je donne mon avis

C’est un peu général comme question. Et le mode expert ça veut rien dire.

Oui avec Gladys Plus

C’est le choix de l’utilisateur de prendre le chemin compliqué ou simple. Trop de contraintes c’est pas bon non plus. A nous de dire, voilà tu prends le chemin compliqué, tu risque ça etc… On peut faire compliqué pour les barbus mais qualité aussi. L’utilisateur final n’est pas non plus un enfant de 3 ans.

Ca va être un débat sans fin, moi je penses que ça ouvre des portes et plus d’utilisateurs/developpers.

Et je pose ça là pour l’exemple
=> Amazon Alexa - Home Assistant
=> Google Assistant - Home Assistant

1 Like

Bien-sûr ! Après je veux aussi inciter les bonnes pratiques pour la majorité des installations.

Pour l’instant toutes nos intégrations fonctionnent sans ouvrir les ports de sa box, je trouve ça dommage de devoir mettre tout ce process en place avec son lot de contrainte juste pour ces intégrations.

Je sais que home assistant fait comme ça, et justement c’est pas forcément un exemple.

Ils ont eu beaucoup d’instances hackées car les instances home assistant sont répertoriées sur Shodan… j’essaie de penser à l’utilisateur final et de voir le mieux et le plus sécurisé :slight_smile:

C’est plutôt un débat ouvert sur les alternatives possibles pour faire le meilleur choix

Le truc c’est que la plupart des systèmes tiers ont besoin d’avoir un point d’entrée sur l’instance Gladys.
Pour l’histoire du certificat, docker pourrait s’en charger, pour l’ouverture du port, la plupart des box permettent l’ouverture depuis le réseau local avec un peu de magie, mais ça reste une faille évidente.
Je vais voir si Google propose des modes alternatifs, mais je suis plutot pessimiste sur ce point.

2 Likes

Et sinon les alternatives genre passer par IFTTT c’est bien ou c’est pas convaincant ?

Sinon, on fera comme tu l’as proposé @AlexTrovato, mais effectivement:

  • on mettra des warnings partout, en mode « réservé à un public qui sait ce qu’il fait »
  • Il faut penser de bout en bout le use case (mise en place du HTTPS, ouverture des ports, etc…) , et proposer des tutoriels adaptés
  • il faut l’alternative via Gladys Plus dès le début :slight_smile:

Passer par IFTTT ne change pas le problème, il faut bien que le service externe quel qu’il soit envoie un message à Gladys pour allumer la lumière. Donc on reste sur la problématique d’exposer Gladys sur le grand Internet.

Effectivement !

Bon bah on a pas trop le choix je pense… :slight_smile:

En revanche, on peut dockeriser le cron de génération du certificat, proposer du dynDNS, ouvrir un port dynamiquement sur la box internet… faire un truc « complet » et forcer la demande d’ouverture du réseau depuis Gladys, histoire que ce soit de manière volontaire par l’utilisateur.

1 Like

@AlexTrovato effectivement, à mon avis il y a du dev avant de pouvoir proposer d’ouvrir l’instance sur internet

Quand tu parles de certificat, on est d’accord on parle de domain + un vrai certificat avec du Let’s Encrypt par exemple ? (pas du auto-signé)

Je suis complètement d’accord qu’il faut un truc complet avant de proposer ça :slight_smile:

Niveau Let’s Encrypt, j’utilise sur Gladys Plus et pas mal d’autres projets: nginx-proxy + nginx-proxy-lets-encrypt-companion

Deux containers Docker qui gèrent le HTTPS pour toi et forward le traffic vers ton instance

Hello,

Sur pas mal de projet j’utilise traefik c’est plutôt sympa quand on veut gérer ce genre de chose (conteneur docker, certificat).

Effectivement Traefik, ou sinon encore plus simple: Caddy

Pour reprendre sur le sujet, il y a donc plusieurs étapes :

  • mettre un serveur oauth2 dans gladys (sujet initial de la PR)
  • ajouter la possibilité d’installer un conteneur pour la gestion HTTPS
  • mais pour le nom de domaine, a part proposer du dynDNS (que j’utilise pour mon nom de domaine chez OVH), je ne suis pas sûr de voir comment faire

Hello à tous !

J’ai travaillé aujourd’hui sur cette intégration via Gladys Plus :slight_smile:

J’ai fini toute la partie Oauth 2.0, en gros ce qui se passe:

Etape 1: Dans l’application Google Home, et cliquez sur "+"

Etape 2: Cliquez sur "Setup up device"

Etape 3: Cliquez sur "Works with Google"

Ici il y aura une application officielle “Gladys Assistant” (là c’est l’application [test] Gladys en haut)

En cliquant sur l’application, Google vous redirigera vers Gladys Plus:

Une fois que vous acceptez, Google Home recevra un access_token/refresh_token pour accéder à Gladys Plus, et vous retrouvez vos périphériques dans Google Home:

Vous pouvez contrôler vos périphériques via l’application Google Home, où via Google Assistant que ce soit sur votre téléphone, Google Home, etc… :slight_smile:

@AlexTrovato j’ai utilisé le travail que tu as fais pour la partie locale:

  • onSync
  • onExecute
  • onQuery

La seule différence c’est que les requêtes sont proxifiée via le Gateway.

4 Likes

Tous les périphériques? Même les ‘Home made’, Tasmota etc.?

Absolument tout :slight_smile: Même du 100% home-made.

Ce qui se passe c’est que Google Home demande à Gladys les périphériques que Gladys gère localement, et Gladys renvoie une liste de tous les devices et de leurs fonctionnalités.

Ensuite, quand tu contrôle dans Google Home un device, Google envoie à Gladys une requête avec l’id Gladys du device à contrôler, et Gladys fait le reste !

1 Like