Intégration Google Family Link

Bonjour @arno44,

J’ai identifié et corrigé le problème, qui n’affectait que les familles avec plusieurs enfants supervisés.

Cause de l’erreur : L’erreur INVALID_ARGUMENT 400 se produit parce que le code essayait de verrouiller l’appareil en utilisant l’ID du premier enfant de la famille, même quand l’appareil appartenait à un autre enfant.

Je viens de pousser une nouvelle pre-release v0.6.2, qui devrait fonctionner correctement pour tous les enfants de la famille. Pouvez-vous tester et me faire un retour ?

Merci d’avance :wink:

Bonjour @noiwid ,

oui ça fonctionne parfaitement bien maintenant.

Merci beaucoup !!!

Bonjour,

Je suis intéressé pour tester mais c’est marqué comme non-compatible pour moi :

Not compatible with Home Assistant Container or Core (without Supervisor)

On devrait bien pouvoir demarrer (manuellement) le docker a la place de Step 1: Install Add-on , non ?

Bonne journée

Re @noiwid

Bon ce soir le verrouillage ne fonctionne plus. Lorsque je tente de verrouiller le tel de mon fils, les logs m’indiquent que le tel de ma fille a bien été verrouillé alors qu’elle existe mais n’a pas d’Android. Voici le logs :

Applied time limits response: [[None, '1763072829931']]e[0m
e[36m2025-11-13 23:27:09.957 DEBUG (MainThread) [custom_components.familylink] Fetched lock states for 0 devices for Azélie XXXXXXe[0m
e[36m2025-11-13 23:27:09.957 DEBUG (MainThread) [custom_components.familylink] Requesting: GET https://kidsmanagement-pa.clients6.google.com/kidsmanagement/v1/people/103117615415900151922/appsandusagee[0m
e[36m2025-11-13 23:27:10.304 DEBUG (MainThread) [custom_components.familylink] Response status: 200e[

bonjour, je m’excuse mais je n’ai pas bien compris votre problème entre les deux téléphones, pourriez-vous me réexpliquer ça? :nerd_face:

Bonjour,

J’édite mon message. En fait, je vois mes deux enfants dans HA mais un seul dispose d’un Androïd. Lorsque j’ai mis la v0.6.2, tout a bien fonctionné au départ puis j’ai rencontré ce pb le soir même : Lorsque je tente de verrouiller le tel depuis HA ça ne fonctionne plus et je vois dans les logs (enfin j’interprète) qu’il essaye de verrouiller celui de ma fille (qui n’a pas d’Android) alors qu’il devrait verrouiller celui de mon fils. Lorsque que verrouillé le tel de mon fils depuis Family Link le statut HA ne se modifie pas non plus.

J’ai tout désinstallé et réinstallé et là ça fonctionne bien donc je vais attendre un peu pour voir si je rencontre à nouveau ce pb.

Bonjour arno44,

Le problème que tu as identifié (le verrouillage du téléphone de ta fille au lieu de celui de ton fils) était causé par un bug dans la gestion du cache des appareils.

Cause du problème:

Le coordinateur maintenait deux caches de devices différents:

  1. Un cache « legacy » pour le premier enfant (sans child_id)

  2. Un cache moderne pour tous les enfants (avec child_id)

Quand tu essayais de verrouiller un appareil, le code cherchait aléatoirement dans le cache et pouvait tomber sur l’entrée « legacy » sans child_id, ce qui causait soit:

L’utilisation du mauvais child_id (ton cas: celui de ta fille) generait l’erreur INVALID_ARGUMENT 400

J’ai poussé un correctif sur le version 0.6.4
Tiens-moi au courant si ça fonctionne!

1 « J'aime »

Bonjour @noiwid ,

Merci beaucoup, j’ai fait pas mal de tests et pense que c’est bon.

Désolé de t‘embêter à nouveau mais je pense avoir remarqué un autre problème : quand la programmation/temps de déconnexion est configurée sur l’App Family Link le statut du device ne se met plus à jour sur HA (au moment ou cette heure de déconnexion devient effective) et ensuite il n’est plus possible de déverrouiller ou verrouiller le device.

Bonjour Roumano,

Excellente question !

Tu as raison, techniquement c’est possible de lancer le conteneur d’authentification manuellement pour Home Assistant Container ou Core.

Le problème: L’add-on familylink-auth est utilisé pour l’authentification Google (il lance un navigateur Chrome headless pour gérer l’OAuth). Sans Supervisor, pas d’add-ons automatiques.

Bonne nouvelle : l’add-on est maintenant disponible en image Docker standalone ! :spouting_whale:

Installation rapide

Docker Run :

docker run -d \
  --name familylink-auth \
  -p 8099:8099 -p 5900:5900 \
  -v $(pwd)/familylink-data:/share/familylink \
  --restart unless-stopped \
  ghcr.io/noiwid/familylink-auth:latest

Docker Compose :

version: '3.8'
services:
  familylink-auth:
    image: ghcr.io/noiwid/familylink-auth:latest
    ports:
      - "8099:8099"
      - "5900:5900"
    volumes:
      - ./familylink-data:/share/familylink
    restart: unless-stopped

Utilisation
Lance le conteneur
Accède à http://localhost:8099 (ou VNC sur port 5900, mot de passe : familylink)
Authentifie-toi avec Google
Configure l’intégration dans HA (cookies chargés automatiquement depuis /share/familylink/cookies.json)

*Documentation
Guide Docker Standalone

Architectures supportées : amd64 + arm64 (Raspberry Pi)

N’hésite pas si tu as des questions !

1 « J'aime »

Hello, Effectivement j’ai remarqué comme toi hier soir, le switch contrôle uniquement le verrouillage/deverouillage de l’appareil (équivalent du bouton dans l’App), mais ne tiens pas compte:

  • de la limite du soir (si c’est trop tard, le deverrouillage ne fait rien)
  • la limite du temps quotidien (si c’est dépassé, déverrouiller ne fait rien)
  • d’un éventuel bonus de temps rajouté (si le tel a un extra time, ça passe au dessus du verrouillage.. qui n’a pas d’effet), ce dernier point me pose souci car chez moi, c’est comme ça que mon fils arrive à bypasser les limites.

Je suis en train d’intégrer les services nécessaires pour contrôler tout ces params (Ajout/Suppression de bonus de temps, Activation/désactivation du temps de déconnexion (soir), Activation/désactivation des horaires d’école, Actication/désactivation de la limite quotidienne de temps), afin qu’on puisse monter une solution pleinement fonctionnelle, avec un « master switch »

1 « J'aime »

Hello,
j’ai bien fait évoluer l’intégration ce weekend end pour gérer une bonne partie des features:

  • gestion du bonus de temps
  • récupération de la limite de temps quotidienne par téléphone, et calcul du temps restant
  • activation/desactivation de la limite de temps
  • activation/desactivation des limites horaires
  • activation/desactivation des horaires d’école

Le bouton verrouillage est désormais « intelligent » et tiens compte du statut réel de l’appareil en combinant ces sensors pour déterminer si l’appareil est actif ou non.

J’ai également rajouté un système de notification pour être prévenu si les cookies Google fournis par l’addon sont périmés (aucune idée de la fréquence…).

Merci,

J’ai pu crée/demarrrer sans souci le docker;

étant pas chez moi, j’ai configurer un nginx pour acceder a la page sur le port 8099 :

Apres le click, j’obtiens ça mais jamais d’autres fenetres :

Puis au bout d’un moment :

:stopwatch: Délai d’attente dépassé. Veuillez réessayer.

docker logs donne :

2025-11-17 08:51:26,736 - app.auth.browser - INFO - Navigating to Google Family Link...
2025-11-17 08:51:29,282 - app.main - INFO - Started auth session: 71ae8e09-87d9-4d48-8560-0c2330fb7774
2025-11-17 08:51:29,283 - app.auth.browser - INFO - Monitoring authentication for session 71ae8e09-87d9-4d48-8560-0c2330fb7774
2025-11-17 08:51:34,286 - app.auth.browser - INFO - Checking authentication - Current URL: https://families.google/families/
2025-11-17 08:51:36,287 - app.auth.browser - INFO - Checking authentication - Current URL: https://families.google/families/
2025-11-17 08:51:38,287 - app.auth.browser - INFO - Checking authentication - Current URL: https://families.google/families/
...
meme ligne 100 ou 200 fois (voir plus)
...

2025-11-17 08:56:33,891 - app.auth.browser - INFO - Checking authentication - Current URL: https://families.google/families/
2025-11-17 08:56:34,377 - app.auth.browser - ERROR - Authentication timeout for session 71ae8e09-87d9-4d48-8560-0c2330fb7774
2025-11-17 08:56:34,595 - app.auth.browser - INFO - Cleaned up session 71ae8e09-87d9-4d48-8560-0c2330fb7774

Ce soit, je testerais en local pour voir si c’est mon nginx le souci , …

Hello,
Une fois cliqué sur le bouton pour t’authentifier, il faut que tu te connectes via VNC sur l’IP de l’addon et le port 5900 (que tu dois aussi pouvoir rediriger à distance..:wink:

Step 3: Connect via VNC

Open your VNC client (TightVNC, RealVNC, VNC Viewer, etc.)
Address: [YOUR_HA_IP]:5900 (or just [YOUR_HA_IP] and port 5900)
Password: familylink
Click Connect

Tu devrais voir d’emblée une page Google, avec un bouton au milieu te permettant de te loguer.
Une fois logué, la page avec le bouton s’identifier indique en vert que l’identification a été réalisée, et la fenêtre de chromium se referme toute seule dans ton VNC. Tu peux alors fermer VNC, et éteindre l’add on, et passer à l’installation de l’intégration.

Hello @noiwid ,

Merci pour les MAJ, ça évolue vite :slight_smile: .

Petit pb chez moi, le binary_sensor.TEL_bedtime_active était bien on à 22h (comme prévu) mais s’est remis à l’arrêt à minuit et le switch.TEL est resté sur on (peut-être normal ce comportement).

1 « J'aime »

Bonjour,
Pour comprendre ce qu’il s’est passé, il faudrait regarder le logbook sur l’entité concernée, voir screenshot.

Merci, j’ai bien avancé :

Puis j’ai installer l’integration mais je bloque a la configuration car j’ai pas le “cookie file” : familylink_cookies.json

dans le volume du docker, j’ai un fichier cookies.enc mais il est pas au format json, …

Il doit me manqué une étape, non ? ou bien, peut être que j’ai pas compris un truc


Bonjour @Roumano,

En analysant votre question de plus près, j’ai identifié un problème : le champ « Cookie File » est affiché dans le formulaire de configuration mais n’était jamais utilisé. C’était du code obsolète qui créé de la confusion.

Le code actuel utilise uniquement AddonCookieClient qui lit automatiquement depuis /share/familylink/cookies.enc et /share/familylink/.key, donc ce champ était inutile et trompeur. Je vais le supprimer du formulaire de configuration.

Votre processus semble correct

Vous avez tout fait comme il faut :

  1. :white_check_mark: Add-on Docker installé et démarré
  2. :white_check_mark: Authentification Google effectuée via l’add-on
  3. :white_check_mark: Fichier cookies.enc présent dans le volume Docker
  4. :white_check_mark: Tentative d’installation de l’intégration

Le fichier cookies.enc que vous voyez dans votre volume est exactement ce qui est attendu. Il n’y a jamais eu de fichier familylink_cookies.json :sweat_smile:

Vérifications à effectuer

1. Vérifier que les deux fichiers nécessaires existent :

ls -la /path/to/votre/volume/familylink-data/
# Vous devez voir :
# - cookies.enc  (fichier chiffré des cookies)
# - .key         (clé de chiffrement)

2. Vérifier les permissions :

chmod 644 /path/to/votre/volume/familylink-data/cookies.enc
chmod 644 /path/to/votre/volume/familylink-data/.key

3. Vérifier dans les logs de Home Assistant :
Pourriez-vous vérifier dans les logs d’Home Assistant si vous voyez des messages liés à l’intégration ?

  1. Allez dans ParamètresSystèmeJournaux
  2. Recherchez : familylink
  3. Partagez-moi les messages que vous voyez, en particulier :
  • Messages au moment de l’ajout de l’intégration
  • Messages d’erreur éventuels (ex: « Failed to load cookies », « No cookies found », « AuthenticationError », etc.)

4. Si vous voyez une erreur pendant l’installation de l’intégration :
Quelle est l’erreur exacte affichée dans l’interface utilisateur quand vous essayez d’ajouter l’intégration ?

  • « No cookies found » ?
  • « Failed to authenticate » ?
  • « Cannot connect » ?
  • Autre chose ?

Merci pour ce retour,

Cela m’a permis de comprendre et de tout faire fonctionner ( j’avais mis le répertoire familylink pas dans /share mais dans /opt (chez moi, j’avais pas de /share , … )

J’ai crée le répertoire /share/familylink/ et mis les 2 fichiers dedans et tout fonctionne bien.

PS: j’ai ce message qui revient tout les minutes : WARNING (MainThread) [custom_components.familylink] No app usage data found for 2025-11-19

Mais c’est sûrement lié a que mon 2eme fil a perdu son téléphone et donc il ne peut pas l’utiliser, …

Roumano,

C’est top que ca fonctionne, je vais apporter quelques précisions dans la doc pour cette question de path :wink:

Concernant le warning, il apparait effectivement car il n’y a pas de données ce jour là. J’ai apporté une correction dispo à partir de la v0.9.1 encore en prerelease pour que ce message de warning ne passe plus qu’en mode debug…

Je n’ai pas trouvé le temps de bien tester cette release qui comprend également l’ajout d’une notification dans H.A quand l’authentification Google expire, n’hésite pas à la tester et faire un retour :crossed_fingers:t2:

1 « J'aime »

Je confirme qu’avec la v0.9.1 ce warning disparais.

Je suis en train de chercher, maintenant, comme on peut afficher ces infos de manière relativement simples, concises mais complète, n’hésiter pas a poster ce que vous avez fait.

1er chose que je voulais faire: afficher le temps des applications utilisées ( sensor.prenom_top_app_X ) ,

je pense que le mieux est de voir ces données en graphiques mais j’arrive pas a afficher le nom de l’application, j’ai tester avec custom:history-explorer-card, mais cela semble impossible, peut etre avec apexcharts ou autres ? ( le nom de l’application est dispo comme ca : {{ state_attr("sensor.prenom_top_app_X’,‹ app_name ›) }}

Bonne journée

1 « J'aime »