Intégrer Gladys dans GoogleHome

Pour ceux qui veulent voir une démo de la fonctionnalité, j’ai mis une vidéo sur Twitter qui montre de la configuration à l’utilisation de Google Home en moins d’une minute!

Je suis content de moi :smiley:

Franchement au top cette fonctionnalité. Les assistants domotique (google / alexa) sont présents partout. Pour le coup j’ai du alexa un peu moins cher et ca serait une super features à developper. Ca rajoute clairement de l’intérêt à Gladys car on peut mixer Gladys et les assistant Google etc !

2 « J'aime »

C’est super !! Pour être franc, j’ai une image custom de gladys avec google home depuis quelques mois, il ne manque que le local network a mettre en place, sinon ça marche pas mal :slight_smile:
En revanche il faudra maintenir la convertion des devices Gladys vs devices Google pour les nouveaux types et nouvelles features.

2 « J'aime »

Hello ! En vrais c’est une superbe feature @pierre-gilles chapeau !
Je serais intéressée en revanche par la partie local de @AlexTrovato :slight_smile: !

1 « J'aime »

Je rebondis sur un détail de ton implémentation @AlexTrovato, actuellement tu appelle le reportState à chaque changement d’état d’un périphérique.

Le problème c’est que l’API de Google a des limites (le Pi/network sur lequel la plupart des gens font tourner Gladys aussi), et certains sur le forum ont des installations assez costaud qui rafraichissent très fréquemment leurs états.

Sur la doc de Google, c’est précisé:

De mon côté j’ai codé un “debounce” par device, pour limiter l’envoie de nouveaux états et n’appeler leur API qu’au pire toutes les X secondes.

Pour l’instant, j’ai mis 5 secondes (un device ne peut mettre à jour son état qu’une fois toutes les 5 secondes).

Le code est le suivant:

const SEND_STATE_TIMEOUT = 5 * 1000;

if (this.forwardStateToGoogleHomeTimeouts.has(event.device_feature)) {
  clearTimeout(this.forwardStateToGoogleHomeTimeouts.get(event.device_feature));
}
const newTimeout = setTimeout(() => {
  sendCurrentState(event.device_feature);
}, SEND_STATE_TIMEOUT);
this.forwardStateToGoogleHomeTimeouts.set(event.device_feature, newTimeout);

L’inconvénient en revanche, c’est que ça delay de 5 secondes l’envoie de tout évènements, mais c’est requis pour que cette technique fonctionne: si on faisait un throttle au lieu d’un debounce, on se retrouverait avec un état “faux” côté Google (car ce ne serait que l’ancien état)

T’en pense quoi ?

Salut à tous!

Pour vous tenir au courant, l’intégration continue et avance bien.

J’en suis aux finitions, mais la dernière ligne droite est plus compliqué que je ne pensais :smiley:

Avant de release, c’est plutôt bien fait côté Google, il y a des tests automatisés qui sont mis en place pour vérifier que l’intégration fonctionne bien, et ensuite il faut que l’app soit validée côté Google. Cela prend 1-2 semaines environ de ce que j’ai lu.

Actuellement j’en suis aux tests d’intégrations:

En parallèle, je m’occupe de la partie “légale” pour que l’application soit acceptée par Google (vérification de la marque, du site, politique de confidentialité, cgv, etc.)

Une fois tout ça prêt, j’ai un formulaire de certification à remplir pour que Google accepte l’application et ensuite il faudra attendre leur retour.

Je vous tiens au courant!

5 « J'aime »

Pour vous tenir au courant, je bosse toujours là dessus, mais je piétine complètement.

L’intégration fonctionne, mais impossible de faire fonctionner les tests côté Google, tests d’intégrations qui sont nécessaires pour être validé.

C’est très “boite noire” de leur côté, c’est très dur de savoir ce qu’ils attendent. La documentation est très pauvre, et même fausse à des endroits (les attributs ne sont pas les mêmes suivant si c’est le body de la requête ou la réponse, l’API Google est vraiment pas consistente…) .

Je ne suis pas le seul sur les forums à avoir ce genre de souci, et donc je passe mes journées (littéralement :sweat_smile:) à arpenter internet pour trouver le détail qui manque à l’intégration actuelle.

Je lis le code d’autre système domotique pour trouver la différence mais c’est vraiment l’aiguille dans la bote de foin, surtout que ça fonctionne fonctionnellement, c’est vraiment les tests qui ne fonctionnent pas côté Google!

En gros, les tests fonctionnent bien quand j’ai une ampoule sans gestion de la température, mais dès que j’ajoute la gestion de la température ça coince:

J’ai l’impression que dès que j’ajoute l’attribute “temperatureK” dans le reportState, Google ne le voit pas alors que je l’envoie bien!

ça me rend fou :smiley:

Quelques heures plus tard, j’ai trouvé une piste, je ne suis pas sûr que ce soit la solution mais au point où j’en suis… :smiley:

En gros, j’ai l’impression que l’API de Google n’accepte que des lampes qui ont la fonctionnalité couleur RGB OU température, mais pas les deux, c’est soit l’un soit l’autre.

J’ai réussi à faire passer les tests en configurant une instance Gladys qui a 2 ampoules:

  • Une On/Off + Couleur + Brightness
  • Une On/Off + température

Couleur et température ne fonctionne pas ensemble

En tout cas les tests d’intégration passent avec cette solution:

Après, ce qui me parait bizarre, c’est que les tests ont l’air d’être fait pour fonctionner tous sur une ampoule qui aurait toutes les fonctionnalités ensemble, donc ça me parait étrange.

Après, dur de savoir: aucuns exemples côté Google, c’est le flou complet

Edit: du coup effectivement c’est bien ce que je pensais, les tests sont donc en “skip” et on n’a que 89% de couverture avec ce scénario:

Après, dur de savoir si ça passera la review ou pas

Bon, j’ai créé une issue StackOverflow pour demander de l’aide, je suis clairement bloqué.

Première fois depuis des années que je vais sur StackOverflow pour poser une question ^^

Si quelqu’un ici a la réponse ou même juste une piste pour arriver à faire fonctionner ces tests, je suis preneur !

Salut à tous!

Des nouvelles de cette intégration, j’ai finalement reçu une réponse sur Stackoverflow (c’est assez technique, vous pouvez voir la réponse sur Stackoverflow si ça vous intéresse: In reportState of the Google SmartHome API, temperatureK & spectrumRgb doesn't seem to work together - Stack Overflow)

J’ai fais en sorte de faire passer les tests avec cette réponse, et j’ai rempli leur formulaire de 12 pages pour demander à être certifié, ce qui ensuite me permettra de demander une review de l’application Gladys Assistant.

Normalement la certification va prendre 2 semaines (en espérant que ça passe), ensuite il faut ajouter probablement le même temps pour la review (en espérant que ça passe). Vu que c’est la première review, ça serait pas étonnant qu’il y ait des retours suivi d’une nouvelle période de 2 semaines pour faire re-valider…

Je ne vous cache pas que ce n’est pas très agréable de travailler avec eux sur cette intégration, Google est une grosse boite et il n’y aucun moyen de les contacter, c’est très boite noire de A à Z ^^ La partie “code” n’aura finalement représenté que 5% du temps de cette intégration.

J’ai lancé ma bouteille à la mer, je croise les doigts pour qu’on puisse avoir ça au plus vite dans Gladys :crossed_fingers:

4 « J'aime »

Je reviens vers vous, au final j’avais pas vu mais il est possible de faire une release “alpha” sans validation par Google, et donc je peux vous donner l’accès à cette fonctionnalité en amont pendant que ça valide l’intégration !! :smiley:

Je pense que ça serait cool d’avoir des alpha-testeurs avant même de release ça, donc c’est même plutôt une bonne chose qu’on passe par ce chemin avant la release.

Je pars bientôt en vacances d’été donc je ne suis pas sûr d’avoir le temps de vous donner des accès maintenant, mais si certains sont intéressés par faire parti de cette alpha à la rentrée (que vous soyez utilisateur Gladys Plus ou non), vous pouvez répondre que vous êtes intéressé à ce message et on verra les détails en privée :slight_smile: (car j’aurais besoin de votre email Google Home)

Bonjour! Moi je suis intéressé :wink:

1 « J'aime »

Idem si tu veux que je test, je pars en vacances dimanche

1 « J'aime »

Intéressé aussi pour tester :wave:

1 « J'aime »

je suis intéresser pour tester

Salut à tous!

Pour information, Google vient de répondre à ma demande de certification: ça avance! :partying_face:

Du côté de Gladys, il me reste à fixer quelques tests sur l’intégration, à merger ça sur master, puis à faire une release Gladys.

Ensuite, côté Google, je vais lancer le process pour l’alpha, et je vous demanderais à ce moment là votre email Google pour pouvoir vous ajouter à l’alpha.

Je vous tiens au courant de tout ça!

1 « J'aime »

Update: J’ai fixé les tests et mergé sur master. ça partira en alpha dans la prochain version de Gladys :slight_smile:

En attendant, je continue d’avancer avec Google pour la certification et l’intégration officielle !

Pour vous tenir au courant, maintenant que je suis en contact avec Google, ça va beaucoup plus vite! (Ils étaient sûrement en vacances cet été)

Ils répondent assez vite aux emails, et on est entrain de lancer une procédure de test :slight_smile: On croise les doigts! :crossed_fingers:

4 « J'aime »

Salut à tous !

Des nouvelles de l’intégration Google Home.

Après une semaine d’échange quasi quotidien avec mon contact chez Google, j’ai enfin réussi à donner un accès à l’intégration Google Home via Gladys Plus à @VonOx, notre premier testeur :smiley:

Pour vous donner les détails, en gros la fonctionnalités de “release alpha/beta” que propose la console Google est cassée côté Google, et d’après mon contact, c’est pas demain que ça sera fixé ^^

Je ne vous raconte pas la tête de nos échanges emails, je pensais que chez Google c’était des pro: pas du tout, c’est du bricolage complet :joy: Surtout qu’en interne l’information doit pas bien circuler donc le mec apprenait l’état du service via mes observations.

Bref, pour donner l’accès à @VonOx à cette version alpha, mon contact chez Google m’a conseillé de donner tout simplement l’accès complet (en lecture seule) à ma console d’administration Google. C’est pas fou mais ça fait le boulot pour l’alpha.

Compte tenu de ces conditions, je ne pense pas que je pourrais faire une alpha “étendu” comme je comptais faire (partager l’intégration à des dizaines de testeurs), car encore @VonOx je lui fais confiance, mais je ne peux pas donner un accès libre à mon console Google sur internet ^^

Du coup le plan ça va plutôt être de faire une release production assez vite, et avant de parler publiquement de la release, je partagerais en privée les informations pour tester à ceux qui le souhaitent :slight_smile:

Pour l’instant, avec @VonOx le test se passe bien: tout à l’air de fonctionner. J’ai juste remarqué un petit détail à corriger pour que tout soit bon.

Une fois ce point corrigé, je pense je pourrais lancer le process de déploiement en production :rocket:

Merci encore pour votre patience :slight_smile:

2 « J'aime »

Correction du problème rencontré avec @VonOx :

1 « J'aime »