Aller au contenu principal

Intégration domotique Nest Protect, gratuite et open source

Intégration Nest Protect pour Gladys Assistant

Détecteurs Nest Protect (fumée, CO) en lecture seule, API non officielle. Pas une alarme certifiée.

Affiche dans Gladys, en lecture seule, les détecteurs de fumée et de monoxyde de carbone Google Nest Protect de votre compte Google : fumée, CO, batterie, état en ligne, auto-test, veilleuse, et deux déclencheurs de scène, « Fumée détectée » et « CO détecté ».

Ce n'est pas un système d'alarme certifié. Ne comptez jamais sur cette intégration pour la sécurité des personnes : une alerte peut arriver en retard, ou jamais (Google, Internet, Gladys ou l'intégration en panne). Gardez l'application Nest et ses notifications, et les sirènes des détecteurs eux-mêmes. Utilisez Gladys en plus, jamais à la place.

API non officielle, jamais testée avec un vrai compte. Google ne propose aucune API pour les Nest Protect (l'API officielle « SDM », celle de l'intégration Google Nest, ne les couvre pas). L'intégration utilise l'API de l'application web Nest (home.nest.com), que Google ne documente pas et peut changer ou couper à tout moment. Elle a été écrite à partir de l'intégration Home Assistant ha-nest-protect et testée seulement avec des réponses inventées. Sans lien avec Google ni Nest.

Ce que vous obtenez​

Un appareil Gladys par Nest Protect, nommé d'après sa pièce (ex. « Nest Protect (Cuisine) »). Toutes les fonctionnalités sont en lecture seule : l'intégration n'envoie aucune commande aux détecteurs (pas de test, pas de mise en sourdine, pas de réglage de la veilleuse).

FonctionnalitéValeurs
Fumée1 = fumée signalée (alerte, urgence ou test), 0 = rien
Monoxyde de carbone (CO)1 = CO signalé (alerte, urgence ou test), 0 = rien
Alarme en sourdine1 = l'alarme a été mise en sourdine sur le détecteur
Batterie% estimé d'après la tension des piles (courbe de ha-nest-protect)
Pile à remplacer1 = le détecteur demande de changer les piles
En ligne (1 = oui)quand Nest le donne
Auto-test réussi (1 = oui)0 dès qu'un composant a échoué à son dernier test (fumée, CO, Wi-Fi, LED, etc.)
Jours depuis le dernier test manuelnombre de jours
Veilleuse activée (1 = oui)réglage de la veilleuse, en lecture

Une fonctionnalité n'apparaît que si le détecteur donne la valeur correspondante (fumée et CO toujours).

Mise en place​

  1. Dans Gladys, installez l'intégration Nest Protect depuis le store.
  2. Récupérez l'issue_token et les cookies de votre compte Google (ci-dessous) et collez-les dans la configuration, puis enregistrez.
  3. Ouvrez l'onglet Découverte et ajoutez les détecteurs.

Récupérer l'issue_token et les cookies​

Cette méthode est fragile : elle reprend la connexion de votre navigateur au site Nest. Si vous vous déconnectez de home.nest.com, changez votre mot de passe Google ou si Google invalide la session, il faudra recommencer. Google peut aussi la casser à tout moment.

Dans Chrome ou Edge, fenêtre normale (pas de navigation privée, qui bloque les cookies tiers) :

  1. Autorisez les cookies tiers pour home.nest.com (sinon le site tourne en boucle) : Chrome, Paramètres → Confidentialité et sécurité → Cookies tiers ; Edge, Paramètres → Cookies et autorisations de site.
  2. Ouvrez les outils de développement (F12), onglet Réseau (Network), cochez Conserver le journal (Preserve log).
  3. Dans le filtre, tapez issueToken.
  4. Allez sur home.nest.com et cliquez sur Sign in with Google ; connectez-vous.
  5. Un appel qui commence par iframerpc apparaît : cliquez dessus. Dans En-têtes (Headers), copiez toute la Request URL (elle commence par https://accounts.google.com/o/oauth2/iframerpc?action=issueToken) : c'est l'issue_token.
  6. Dans le filtre, tapez oauth2/iframe. Cliquez sur le dernier appel iframe. Dans En-têtes de requête (Request Headers), copiez toute la valeur de cookie (la longue suite NOM=valeur; …, sans le mot cookie:) : ce sont les cookies.
  7. Ne vous déconnectez pas de home.nest.com : fermez simplement l'onglet.

(Méthode de ha-nest-protect, elle-même reprise de homebridge-nest. L'extension Chrome de ha-nest-protect donne un « code » combiné que cette intégration n'accepte pas : collez les deux valeurs séparément.)

Les deux champs sont des champs secret : Gladys les garde dans sa base (en clair, comme toute valeur de configuration, et dans ses sauvegardes), ne les réaffiche jamais, et l'intégration ne les envoie qu'à accounts.google.com. Avant tout envoi, l'intégration vérifie que l'issue_token est bien une adresse https://accounts.google.com/o/oauth2/iframerpc : sinon rien n'est envoyé. Quand Google renouvelle certains cookies, l'intégration met à jour le champ « Cookies Google » de la configuration (comme ha-nest-protect), pour qu'un redémarrage reprenne les bons.

Ces valeurs donnent accès à votre compte Google : ne les partagez jamais, pas même dans un message d'aide ou un ticket.

Déclencheurs de scène​

  • Fumée détectée (Nest Protect) et CO détecté (Nest Protect) : une fois à chaque montée du niveau (test < alerte < urgence) : un test, puis une alerte, puis une urgence donnent trois événements. Jamais à la descente, rien tant que le niveau reste le même, rien au retour à 0. Au démarrage de l'intégration, une alarme déjà en cours déclenche une fois.
  • Filtres (facultatifs) : le détecteur, et le niveau (testing, warning, emergency). Variables : level (testing, warning, emergency, ou unknown pour un code inconnu, d'après ha-nest-protect), room (la pièce) et delayed.
  • Un événement peut arriver en retard : si Gladys ne l'a pas pris (Gladys redémarre, par exemple), l'intégration le renvoie à la lecture suivante ou à la reconnexion, tant que l'alarme dure et au plus 15 minutes après ; il porte alors delayed = vrai.
  • Rappel : pas un système d'alarme certifié. Une scène peut prévenir, allumer des lumières ou couper une ventilation, mais ne remplace ni l'alarme du détecteur ni l'appel aux secours.

Rafraîchissement​

Comme l'application web Nest, l'intégration fait une lecture complète au démarrage puis garde une requête ouverte (« long polling ») à laquelle Nest répond dès qu'un détecteur change, au plus tard après une dizaine de minutes ; elle en relance alors une autre (au plus une toutes les 2 secondes ; une minute de pause si Nest répond vide trois fois de suite tout de suite). Une lecture complète est refaite toutes les heures.

En cas de problème​

  • Google a refusé les cookies (déconnexion du navigateur, mot de passe changé, expiration) : l'intégration s'arrête et attend, même après un redémarrage, sans jamais redemander à Google. Récupérez un nouvel issue_token et de nouveaux cookies, enregistrez (ou cliquez sur Tester la connexion).
  • Nest a refusé la session : la session Nest est refaite une fois ; refusée à nouveau tout de suite, l'intégration se met en pause et réessaie après 1 heure, 6 heures, puis toutes les 24 heures (gardé après un redémarrage). Tester la connexion réessaie tout de suite.
  • Trop de requêtes (429) : une pause de 1 minute à 6 heures (le Retry-After de Nest, 10 minutes sans lui), gardée après un redémarrage.
  • Nest injoignable (réseau, 5xx) : nouvel essai après 15 secondes, puis 1, 2, 5, 10 et 15 minutes ; les cartes des détecteurs passent en « injoignable » dès le deuxième échec de suite. Un 502/504 de la requête ouverte : 2 minutes de pause (comme ha-nest-protect).
  • Un détecteur hors ligne pour Nest est marqué « injoignable » sur sa carte.
  • Pendant une panne, les valeurs affichées peuvent être anciennes : une fumée apparue pendant la panne n'est vue qu'au retour de la connexion, et une alarme qui monte puis redescend pendant la panne n'est jamais vue (ni état, ni événement de scène).
  • Plusieurs 502/504 de suite de la requête ouverte : l'intégration passe en « Nest injoignable » et les cartes en « injoignable » dès le deuxième.
  • Une pause après une erreur est gardée dans /data : un redémarrage ne relit pas plus tôt.

Limites​

  • API non officielle, méthode de connexion fragile : Google peut la changer ou la bloquer à tout moment.
  • Lecture seule : ni test, ni sourdine, ni réglage depuis Gladys (ha-nest-protect sait régler la veilleuse, non repris ici).
  • Pas la chaleur (heat_status), ni la date de remplacement, ni les capteurs de température Nest, ni les serrures Nest x Yale.
  • Seulement les comptes Google (pas les anciens comptes Nest).
  • Jamais testée avec un vrai compte : merci de signaler ce que vous voyez sur le dépôt GitHub (sans jamais coller l'issue_token ni les cookies).

Vie privée​

L'intégration garde dans /data/nest-protect-state.json (lisible par son seul conteneur) : la session Nest (son jeton d'accès, l'identifiant utilisateur Nest, sa fin et l'adresse du serveur de mises à jour), le seul jeton nécessaire pour ne pas redemander à Google à chaque redémarrage. Ce jeton donne accès à tout votre compte Nest (pas seulement aux détecteurs) tant qu'il est valide : protégez les sauvegardes du dossier /data de Gladys comme un mot de passe. Aussi : une empreinte salée de l'issue_token (le compte de cette session) ; un arrêt (cookies refusés, session refusée et son prochain essai) lié à une empreinte salée de l'issue_token et des cookies ; la fin d'une pause (429 ou erreur). Jamais l'issue_token, les cookies, ni votre e-mail. Les journaux n'en contiennent aucun. Rien n'est envoyé ailleurs qu'à Google (accounts.google.com, nestauthproxyservice-pa.googleapis.com) et Nest (home.nest.com et ses serveurs *.nest.com).

Paramètres de configuration​

Voici les paramètres demandés par Nest Protect dans son écran de configuration dans Gladys.

ParamètreTypeObligatoireDescription
Votre compte Google (Nest)sectionNonAffiche vos Google Nest Protect dans Gladys, en lecture seule : fumée, monoxyde de carbone (CO), batterie, état en ligne, auto-test, veilleuse, et les déclencheurs de scène « Fumée détectée » et « CO détecté ». CE N'EST PAS UN SYSTÈME D'ALARME CERTIFIÉ : ne comptez jamais dessus pour la sécurité des personnes, gardez l'application Nest et les sirènes des détecteurs. Google ne donne pas d'API pour les Protect : l'intégration utilise l'API non officielle de l'application web Nest, connectée avec l'issue_token et les cookies d'un navigateur connecté à home.nest.com (voir le guide). Cette méthode est fragile : Google peut la casser à tout moment. Jamais testée avec un vrai compte. Sans lien avec Google ni Nest.
issue_token (adresse Google)secretOuiToute la Request URL de l'appel iframerpc, qui commence par https://accounts.google.com/o/oauth2/iframerpc?action=issueToken (voir le guide). Gardé par Gladys dans sa base, jamais réaffiché, envoyé seulement à accounts.google.com.
Cookies GooglesecretOuiToute la valeur de l'en-tête de requête « cookie » de l'appel oauth2/iframe (voir le guide). Gardés par Gladys dans sa base, jamais réaffichés, envoyés seulement à accounts.google.com. Mis à jour par l'intégration quand Google en renouvelle.
Langue des noms des fonctionnalitésselectNonSert aux noms des fonctionnalités des détecteurs ajoutés désormais.

Comment installer Nest Protect dans Gladys​

  1. Dans Gladys, ouvrez Intégrations : Nest Protect apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
  2. Cliquez sur Installer. Gladys télécharge l'image Docker (ghcr.io/lm1lc3n7/gladys-nest-protect:0.1.1), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration).
  3. Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
  4. Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/LM1LC3N7/gladys-nest-protect.

Nest Protect nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.

Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.

À propos des intégrations externes​

Nest Protect est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par LM1LC3N7, et non par l'équipe cœur de Gladys.

Inscrivez-vous à la newsletter Gladys Assistant

Quelques emails par mois sur les nouveautés et l'actualité du projet. Envoyés par Pierre-Gilles Leymarie, le fondateur du projet. Désinscription possible à tout moment 🙂