Intégration domotique Nest Protect, gratuite et open source

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ée | 1 = 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 sourdine | 1 = 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 à remplacer | 1 = 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 manuel | nombre 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
- Dans Gladys, installez l'intégration Nest Protect depuis le store.
- Récupérez l'issue_token et les cookies de votre compte Google (ci-dessous) et collez-les dans la configuration, puis enregistrez.
- 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) :
- 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. - Ouvrez les outils de développement (F12), onglet Réseau (Network), cochez Conserver le journal (Preserve log).
- Dans le filtre, tapez
issueToken. - Allez sur home.nest.com et cliquez sur Sign in with Google ; connectez-vous.
- Un appel qui commence par
iframerpcapparaît : cliquez dessus. Dans En-têtes (Headers), copiez toute la Request URL (elle commence parhttps://accounts.google.com/o/oauth2/iframerpc?action=issueToken) : c'est l'issue_token. - Dans le filtre, tapez
oauth2/iframe. Cliquez sur le dernier appeliframe. Dans En-têtes de requête (Request Headers), copiez toute la valeur de cookie (la longue suiteNOM=valeur; …, sans le motcookie:) : ce sont les cookies. - 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, ouunknownpour un code inconnu, d'après ha-nest-protect),room(la pièce) etdelayed. - 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-Afterde 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ètre | Type | Obligatoire | Description |
|---|---|---|---|
| Votre compte Google (Nest) | section | Non | Affiche 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) | secret | Oui | Toute 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 Google | secret | Oui | Toute 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és | select | Non | Sert aux noms des fonctionnalités des détecteurs ajoutés désormais. |
Comment installer Nest Protect dans Gladys
- Dans Gladys, ouvrez Intégrations : Nest Protect apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
- 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). - Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
- 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.
- Parcourir toutes les intégrations, natives et communautaires
- Créer et publier votre propre intégration externe
- Code source sur GitHub — source de cette documentation