Automatiser la récupération des tokens Google Home (pour récupérer les alarmes par exemple) sur le plugin GoogleCast

Tags: #<Tag:0x00007fa7a58c06f0>

Hello, voici une petite procedure de comment je fais :

Information importante avant de commencer :

Il faut absolument créer un mot de passe d’application pour que cela fonctionne.
Pour créer ce mot de passe, suivi ce tutoriel : https://support.google.com/accounts/answer/185833?hl=fr


Installation des dépendances :

  • Créer un repertoire dans votre serveur Jeedom (pour ma part j’ai créer le repertoire /var/www/Gcast)
  • Installer les dépendances
# pip3 install gpsoauth
# apt install jq

Installation des fichiers et attributions des droits :

  • Télécharger les fichiers préparés : https://we.tl/t-9YUFjvUvj4
  • Mettre le contenu dans le repertoire que vous voulez (l’archive inclus deja le dossier parent Gcast)
  • Attribuer les droits a l’utilisateur apache sur le dossier complet

Le grpcurl inclus dans le package est un grpcurl pour Linux x64. Si vous êtes en 32 bits, il vous faut remplacer le grpcurl par celui inclus dans cette archive : https://github.com/fullstorydev/grpcurl/releases/download/v1.7.0/grpcurl_1.7.0_linux_x86_32.tar.gz

A l’heure actuelle aucune version ARM compilé n’existe (et donc ne fonctionne pas sous RPI) mais vous pouvez une compiler une vous même en suivant l’installation par source expliqué ici : https://github.com/fullstorydev/grpcurl/blob/master/README.md
Si vous le compilez, partagez le moi que je puisse l’ajouter dans l’archive, il devrait pouvoir servir directement aux autres


# chown -R www-data: /var/www/Gcast
  • Modifier le fichier get_tokens.py pour y saisir votre email Google (USERNAME) et votre mot de passe (PASSWORD)

  • Verifiez que get_token.py et grpcurl sont executable, dans le cas contraire ou en cas de doute, lancer la commande :

# chmod +x /var/www/Gcast/get_tokens.py /var/www/Gcast/grpcurl

Tests manuels TOKEN de compte:

  • Lancer un test manuel de recuperation de token
# /var/www/Gcast/get_tokens.py

Astuce :

A partir de ce moment là vous devez avoir un MasterToken et un AccessToken qui vont sous fournit. Si vous ne souhaitez pas garder votre mot de passe dans le code, vous pouvez aussi retirer votre mot de passe (laisser PASSWORD = ‹  ›) et mettre le MasterTolen que vous avez reçu dans la variable master_token)

image

Voici le type de résultat que vous devez avoir :
image

  • Garder l’access_token que vous avez car on va l’utiliser dans la commande suivante (a la place du INSERTHEREYOURACCESSTOKEN)

Tests manuels TOKEN de Google Home:

  • Lancer la commande suivante :
# /var/www/Gcast/grpcurl -H 'authorization: Bearer INSERTHEREYOURACCESSTOKEN' -import-path /var/www/Gcast -proto /var/www/Gcast/google/internal/home/foyer/v1.proto googlehomefoyer-pa.googleapis.com:443 google.internal.home.foyer.v1.StructuresService/GetHomeGraph | jq '[.home.devices[] | {deviceName, localAuthToken}]' 

Attention a bien adapter les chemins dans la commande (pour rappel moi j’utilise /var/www/Gcast mais si ce n’est pas le cas pour vous, adaptez le).

image

Il faut donc saisir après le mot Bearer votre accesstoken récupéré précédemment et au besoin changer le chemin si vous n’utilisez pas le même que moi


Import du scénario :

Ensuite pour automatiser cela dans le plugin GoogleCast (en attendant que le développeur fasse la modification comme je lui ai demandé dans l’Issue https://github.com/guirem/plugin-googlecast/issues/73), j’ai fait un scenario qui s’execute toutes les heures (comme on sait pas vraiment comme le token expire), qui lance un bloc code pour mettre a jour les token dans les équipements.
Ca marche bien chez moi mais jamais testé ailleurs donc je vous conseil de maitriser un peu le sujet avant de vous lancer ou bien d’attendre que d’autres testent et confirme.
Je vous joint le template du scénario (renommer l’extension en .json au lieu de .txt)
GH_token.txt (4,5 Ko)

Pour importer le scénario, aller dans les scénario et en créer un nouveau. Puis cliquer sur le logo Template en haut de votre scénario

image

Puis importer et appliquez votre scénario

image


Edition du scénario :

Maintenant éditer votre scénario pour changer le $PATH pour mettre le repertoire que vous utilisez.

Il suffit de changer le $PATH pour mettre le repertoire que vous utilisez.
image

J’espère que cela vous aide

Tu peux m’aider avec une petite vidéo ?

Merci dés que j’ai 5 minutes, je teste.

Est ce que cela fonctionne avec les nest hub et reveil lenovo ?

Si tu suis à la lette aucun besoin de video.

Je pense que oui mais j’en ai pas donc pas possible de tester

lorsque je tape sous ssh: apt install jq

ca me met:
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

T’es sur d’être en root ?

non, comment le savoir et comment le devenir?

Dois y avoir au moins 1 million de tuto qui explique comment faire.
Mais bon pour une fois : « su - »

je bloque là; j’ai modifié en mettant mon chemin /var/www/html/Gcast
et quand je fais ca:

  • Verifiez que get_token.py et grpcurl sont executable, dans le cas contraire ou en cas de doute, lancer la commande :
# chmod +x get_token.py grpcurl

j’ai :
chmod: cannot access ‹ get_token.py ›: No such file or directory

J’ai ajuster les commandes dans le tuto.

perso, toujours la meme reponse

Comment ça ?
Met un screenshot

image

Tu as bien le fichier dans l’endroit indiqué ?
Donne moi le résultat de « ls -l var/www/html/Gcast »

meme reponse
pourtant le fichier est bien là
ou alors la commande pour donner les droits à apache n’a pas fonctionné?

Fait moi un screen des résultats des commandes suivantes :

ls -l /var/www/html
ls -l /var/www/html/Gcast

Bonsoir,

Merci beaucoup pour ton tuto
J’ai tout installé avec succès, bien renseigné l’email de mon compte google et le mot de passe, mais lors du test manuel je ne récupère aucun token
image
image

Aurais tu une idée du pourquoi?

Non.
Idéalement faudrait aller demander sur le GitHub de développeur du script : https://github.com/rithvikvibhu/GHLocalApi/issues

Pour info, l’auteur du script recommande d’utiliser un mot de passe lesssecureapp : https://myaccount.google.com/lesssecureapps