[DzVents][Update] Récupération des données Withings par OAuth2 via les nouveaux nœuds

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

[DzVents][Update] Récupération des données Withings par OAuth2 via les nouveaux nœuds

Message par Chrominator »

** EDIT **
J'avais proposé une PR à l'auteur Jarek Hartman, il vient de la fusionner le 31/03/2022.
Donc inutile maintenant de passer par l'étape n°8 ci-dessous, les modifs sont déjà intégrées :D

Balances connectées Withings intégrées à Domoticz
Withings Body+.png
Withings Body+.png (62.82 Kio) Consulté 2970 fois
Le script python de référence ne fonctionne plus depuis le 8 février 2022, date à laquelle Withings a modifié les nœuds de l'API.

J'ai emprunté à Papoo ses widgets domoticz, à Jarek Hartman son utilitaire pour récupérer les données Withings en le modifiant légèrement, et écrit un script dzVents pour mettre à jour tout ça dans domoticz.

Python 3.x est nécessaire.

Si l'expérience vous tente, c'est par là :
  1. Aller sur la page Withings-sync de Github et suivre les instructions, à savoir :

    Code : Tout sélectionner

    pip install withings-sync
  2. Dans un terminal, lancer une première fois l'application sous root pour générer le fichier .withings_user.json qui contiendra le token.
    On le copiera plus tard dans le répertoire de domoticz :

    Code : Tout sélectionner

    $ sudo bash
    [sudo] password for pi:
    $ su - root
    $ withings-sync -f 2019-01-25 -v
    
    Can't read config file config/withings_user.json
    User interaction needed to get Authentification Code from Withings!
    
    Open the following URL in your web browser and copy back the token. You will have *30 seconds* before the token expires. HURRY UP!
    (This is one-time activity)
    
    https://account.withings.com/oauth2_user/authorize2?response_type=code&client_id=183e03e1f363110b3551f96765c98c10e8f1aa647a37067a1cb64bbbaf491626&state=OK&scope=user.metrics&redirect_uri=https://wieloryb.uk.to/withings/withings.html&
    
    Token :
  3. Avec un navigateur Internet, aller sur https://account.withings.com/oauth2_user/authorize2?response_type=code&client_id=183e03e1f363110b3551f96765c98c10e8f1aa647a37067a1cb64bbbaf491626&state=OK&scope=user.metrics&redirect_uri=https://wieloryb.uk.to/withings/withings.html&
  4. Choisir l'utilisateur qui convient sur la page qui s'affiche :

    Si la page demande une identification, il faut entrer le nom d'utilisateur et le mot de passe qui ont servi à enregistrer la balance.
    Screenshot 2022-02-19 at 17-00-50 Sélectionnez un utilisateur.png
    Screenshot 2022-02-19 at 17-00-50 Sélectionnez un utilisateur.png (3.61 Kio) Consulté 2995 fois
  5. On tombe ensuite sur la page de l'application, cliquer sur Autoriser donnera le token :

    Sans titre5.png
    Sans titre5.png (15.21 Kio) Consulté 2995 fois

    Attention, on a que 30 secondes pour le recopier dans le terminal.
    token.png
    token.png (9.87 Kio) Consulté 2995 fois
  6. Une fois collé dans le terminal, le fichier permettant l'accès est généré.

    Code : Tout sélectionner

    Token : 11354a073c8b93b8ada0d258ac022e6d3ff01f8f
    2022-02-19 18:21:16,511 - withings - INFO - Get Access Token
    2022-02-19 18:21:16,688 - withings - INFO - Refresh Access Token
    2022-02-19 18:21:16,944 - withings - INFO - Get Measurements
    2022-02-19 18:21:17,082 - root - INFO - This Withings metric contains no weight data.  Not syncing...
    2022-02-19 18:21:17,082 - root - INFO - No Trainerroad username or a new measurement - skipping sync
    2022-02-19 18:21:17,082 - root - INFO - No Garmin username - skipping sync
  7. Recopier le fichier qui contient le token de la home directory de root vers le répertoire de domoticz :

    Code : Tout sélectionner

    cp /root/.withings_user.json /home/pi/domoticz/
    Domoticz en aura besoin lors de l'appel de l'application.
  8. [OBSOLETE] Ensuite il faut modifier l'application pour qu'elle puisse sortir du json.
    Il suffit de remplacer le fichier /usr/local/lib/python3.8/dist-packages/withings_sync/sync.py par celui ci :

    Il faut normalement le faire sous root.
  9. Maintenant on peut tester et vérifier si l'application modifiée sort bien le json.
    A exécuter avec sudo si on est pas sous root pour que le fichier d'authentification soit utilisé.

    Code : Tout sélectionner

    sudo withings-sync -J
    Si rien ne sors, il faudra penser à se peser... :D
  10. Si le json est affiché, c'est tout bon.
    Il ne reste plus qu'à mettre le script dzVents dans son répertoire /home/pi/domoticz/scripts/dzVents/scripts et à le personnaliser.
    Les instructions sont à l'intérieur, il faut juste indiquer le nom des widgets à utiliser et mettre à nil ceux qu'on ne veut pas dans Domoticz.
    Attention de ne pas appeler le script trop souvent (15 mn a l'air de tenir).
    Si les appels sont trop fréquents, Withings désactive le token et il faut recommencer son obtention à partir du point 3 après avoir supprimé le fichier /root/.withings_user.json
Pièces jointes
synchro-withings.zip
(2 Kio) Téléchargé 133 fois
Dernière modification par Chrominator le 02 déc. 2022, 17:56, modifié 1 fois.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: [DzVents][Update] Récupération des données Withings par OAuth2 via les nouveaux nœuds

Message par Chrominator »

Si vous utilisez ce tuto, l'étape n° 8 est devenue inutile, les modifs ont été intégrées par l'auteur.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
isaaccs
Messages : 1
Inscription : 27 avr. 2022, 10:07

Re: [DzVents][Update] Récupération des données Withings par OAuth2 via les nouveaux nœuds

Message par isaaccs »

Bonjour, je viens de découvrir le code.
Peut-on utiliser le capteur de sommeil comme un capteur de présence avec le script ?
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: [DzVents][Update] Récupération des données Withings par OAuth2 via les nouveaux nœuds

Message par Chrominator »

Sans doute pour la partie authentification, pour le reste il va falloir adapter.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Claude
Messages : 19
Inscription : 03 juil. 2016, 20:28

synchro balance tithings

Message par Claude »

Bonjour, j'ai une balance withings qui était synchronisée avec domoticz depuis des années et cela fonctionnait très bien.
Depuis que withings a changé de protocole cela ne fonctionnait plus, mais je n'avais pas fait la mise a niveau sur le nouveau protocole.
C'est ce que j'essaye de faire maintenant mais j'ai des gros problèmes. Pour ce faire je suis le tutoriel suivant :
viewtopic.php?t=12130

premier delta avec le tutoriel sur la première étape (pip install withings-sync)
pour moi l'installation ne se fait pas sous /usr/local... mais sous /home/user/.local...

Deuxième problème le premier lancement pour créer le fichier du token qui devrait se faire sous root plante (il ne trouve pas withings-sync (j'ai pourtant mis le path a jour)
si j'exécute ce premier lancement avec mon utilisateur, la procédure d'authentification et la création du fichier token fonctionne bien.

troisième problème après avoir mis en place et adapter le script dzVents, le script s'exécute bien régulièrement, mais la chaine json que le script python est censé passer au script dzVents n'arrive pas.

Quand je regarde le script python (sync.py) je ne comprends pas comment ça marche (je ne maitrise absolument pas python)

Toute aide sera la bienvenue
Quelque'un a déjà mis en place avec le nouveau protocole?


pour l'environnement je suis sur un PI 3B+ sous debian bullseye 64 bits avec python 3.9
Dernière modification par Keros le 29 déc. 2023, 20:47, modifié 1 fois.
Raison : Merci d'éditer le poste précédent pour y rajouter l'information complémentaire
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Modération

Message par Keros »

Message déplacé dans le sujet correspondant
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: synchro balance tithings

Message par Chrominator »

Claude a écrit : 29 déc. 2023, 18:25 Bonjour, j'ai une balance withings qui était synchronisée avec domoticz depuis des années et cela fonctionnait très bien.
Depuis que withings a changé de protocole cela ne fonctionnait plus, mais je n'avais pas fait la mise a niveau sur le nouveau protocole.
C'est ce que j'essaye de faire maintenant mais j'ai des gros problèmes. Pour ce faire je suis le tutoriel suivant :
viewtopic.php?t=12130

premier delta avec le tutoriel sur la première étape (pip install withings-sync)
pour moi l'installation ne se fait pas sous /usr/local... mais sous /home/user/.local...
Admettons, pas trop grave certainement.
Claude a écrit : 29 déc. 2023, 18:25 Deuxième problème le premier lancement pour créer le fichier du token qui devrait se faire sous root plante (il ne trouve pas withings-sync (j'ai pourtant mis le path a jour)
C'est le path de ton user que tu as mis à jour peut-être.
Soit tu modifies celui du système, soit celui de root et ça devrait fonctionner.
Claude a écrit : 29 déc. 2023, 18:25 troisième problème après avoir mis en place et adapter le script dzVents, le script s'exécute bien régulièrement, mais la chaine json que le script python est censé passer au script dzVents n'arrive pas.
Possiblement à cause du script python qui n'est pas dans le path de root (dz fonctionne sous root).
Claude a écrit : 29 déc. 2023, 18:25 Quand je regarde le script python (sync.py) je ne comprends pas comment ça marche (je ne maitrise absolument pas python)
Ne perd pas de temps à ça, de mémoire il n'est plus utilisé.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Claude
Messages : 19
Inscription : 03 juil. 2016, 20:28

Re: [DzVents][Update] Récupération des données Withings par OAuth2 via les nouveaux nœuds

Message par Claude »

Merci pour ta réponse,
J'ai modifié le PATH ROOT, mais cela ne solutionne pas le problème. le script qui est sous/home/user/.local/bin est bien vu, mais il ne vois pas le script py qui est appelé par ce premier script et qui se trouve sous /home/user/.local/lib/python3.9/site-packages...

Mais comme tu le dis a la fin de ton post, j'ai arrêté de me prendre la tête.
En lançant le script depuis mon user et en utilisant l'option output, je génère un fichier json avec mes données a remonter. j'utilise donc cette partie de la procédure et j'ai écrit un nouveau script dzVents qui décode le fichier json et fait les remontées dans Domoticz.
ogulf
Messages : 445
Inscription : 15 juin 2017, 14:41

Re: [DzVents][Update] Récupération des données Withings par OAuth2 via les nouveaux nœuds

Message par ogulf »

J'envisage d'acheter une balance Withings Body Comp. Mais avant, j'ai deux questions :
- Ce script fonctionnera-t-il (même partiellement) au delta près des nouvelles fonctionnalités par rapport à la Body + ?
- Je comprends que, pour que le script fonctionne, il faille passer par un compte Withings.... j'aurais souhaité m'en affranchir et récupérer directement les données depuis la balance... Hors scope de cette discussion, mais est-ce seulement possible ?
Domoticz Stable sur RPi3 + RFPlayer + ZWave+ + RFLink R48 :
- 11 x RF660P
- 1 x FGSD-002
- 10 x F007TH
- 5 x Emcoluxr EV1527 + 4 x NAS-DS01Z
- 4 x NAS-PD02Z
- 1 x Shelly 1PM
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: [DzVents][Update] Récupération des données Withings par OAuth2 via les nouveaux nœuds

Message par Chrominator »

Ce script accède aux données personnelles enregistrées dans le cloud.
C'est pour cela qu'il faut un compte.

Accéder aux data de la balance elle-même est peut-être possible, mais via un autre protocole et un script qui reste à trouver/élaborer.

Quand à la compatibilité de la balance dont tu parles avec ce script, si le cloud est le même, certainement.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Répondre