Page 1 sur 7

[Python] [Obsolète] Récupération des données API Withings

Publié : 20 juil. 2017, 21:46
par papoo
Bonjour
j'ai enfin réussi à récupérer les données de ma balance connectée withings via l'api et un script python.
voila déjà un aperçu des logs
2017-07-20 21_36_11-Domoticz - withings.png
2017-07-20 21_36_11-Domoticz - withings.png (10.73 Kio) Consulté 12245 fois
la suite viewtopic.php?f=17&t=4440&p=38809#p38809

edit : Script obsolète ne fonctionnera plus le 1/12/18 suite à une modification de l'API
nouvelle version
https://easydomoticz.com/forum/viewtopi ... =17&t=7428

Re: PYTHON : recupération des données API Withings

Publié : 21 juil. 2017, 11:54
par deennoo
Je n'ai pas ce type de balance...mais cela peut etre utile pour declancher un scenario "salle de bain, bonjour papoo" si l'api est régulierement mise a jour et interroger ?

Re: PYTHON : recupération des données API Withings

Publié : 21 juil. 2017, 12:49
par frenchyyii
Yop, clairement si tu y arrives via l'api ca m'interesse. Perso je passe par IFTTT mais c'est galère et en plus je n'arrive pas à gérer pour différents utilisateurs. Y arrives tu d'ailleurs avec ton script ?
Merci

Re: PYTHON : recupération des données API Withings

Publié : 21 juil. 2017, 13:10
par papoo
Le déclenchement du script se fait classiquement via crontab donc oui on peut le déclencher aussi souvent qu'on le veut et les données sont accessible dès qu'elles sont synchronisées avec le site

Pour le multi utilisateurs il suffira de creer autant de script que d'utilisateurs

Re: PYTHON : recupération des données API Withings

Publié : 23 juil. 2017, 08:38
par jackslayter
Moi aussi j'en ai une mais avec mon script actuel il y a qu'une seule info qui ressort donc si tu arrives à lui faire cracher toutes ses infos c'est cool

Re: PYTHON : recupération des données API Withings

Publié : 23 juil. 2017, 14:47
par papoo
avant toutes choses il vous faut :
Créez une application de développeur à partir de l'application partenaire Withings (https://developer.health.nokia.com/partner/dashboard),
vous obtiendrez une clé API (CONSUMER_KEY) et un secret API(CONSUMER_SECRET) à renseigner dans ce script
Ce site Web api de Withings vous aidera à obtenir des informations supplémentaires concernant votre compte (étape 1 à l'étape 3).
Pensez à noter :
• Oauth_signature
• oauth_token
• À l'étape 1, vous pouvez laisser le champ «Callback URL» vierge

ensuite installez si ce n'est pas déjà fait python3 et python3-dev comme décrit ici https://www.domoticz.com/forum/viewtopi ... 6&p=119747

Code : Tout sélectionner

sudo apt-get install -y python3
sudo apt-get install -y python3-dev
sudo apt-get install -y python3-pip
sudo apt-get install -y python-urllib2
sudo pip3 install request
décompressez le zip joint
withings.zip
(4.89 Kio) Téléchargé 519 fois
et copiez son contenu dans

Code : Tout sélectionner

/home/pi/domoticz/scripts/python/
editez le fichier withing.py pour personnaliser vos identifiants pour l'API (CONSUMER_KEY et CONSUMER_SECRET)

lancez ensuite le script

Code : Tout sélectionner

python /home/pi/domoticz/scripts/python/withings/withings.py
vous obtenez une réponse de type

Code : Tout sélectionner

Go to https://oauth.withings.com/account/authorize?oauth_token=6d9db66940cc95428c972775557488373f618c2d494111111111 allow the app and copy your oauth_verifier
Please enter your oauth_verifier: 
copiez collez l'url complète et collez la dans votre navigateur
vous arrivez sur une page de ce type
2017-07-23 14_27_41-Withings.png
2017-07-23 14_27_41-Withings.png (48.84 Kio) Consulté 12250 fois
sélectionnez l'utilisateur de la balance dont vous souhaitez récupérer les données puis validez.
vous obtenez une chaine de ce type

Code : Tout sélectionner

oauth_token=8661f25f44946904d238d990999184de949ee2c7ec6358be6d11111c&oauth_verifier=es6Et6xxxxxxk8OBSb
seule la partie apres

Code : Tout sélectionner

oauth_verifier= 
nous interresse
copiez la puis collez la dans votre console en l'entourant de '

Code : Tout sélectionner

'es6Et6xxxxxxk8OBSb'
un fichier pickled_creds est créé dans /home/pi/ contenant vos identifiants cryptés
si vous souhaitez récupérer les infos de plusieurs utilisateurs il faudra dupliquer et renommer le script withings.py , et personnaliser le nom de ce fichier.(pickled_creds1,pickled_creds2, etc)

il ne vous reste plus qu'a creer les devices dans domoticz et personnaliser leurs idx dans le script withings.py et ajouter une ligne dans votre crontab

Code : Tout sélectionner

crontab -e

Code : Tout sélectionner

*/2 * * * * sudo python /home/pi/domoticz/scripts/python/withings/withings.py
pour un lancement automatique toutes les deux minutes

Re: PYTHON : recupération des données API Withings

Publié : 03 août 2017, 12:26
par kouf
Déjà merci pour les scripts ça va permettre de me débarrasser d'IFTT.
Je viens de faire un premier test en suivant les consignes mais je tombe sur une erreur.
Pour information sur suis sur une debian Jessie.

Code : Tout sélectionner

root@dockerbox:/home/xxx/domoticz-script/script/withings# python3 withings.py
Traceback (most recent call last):
  File "withings.py", line 14, in <module>
    import urllib, urllib2#, hashlib,subprocess
ImportError: No module named 'urllib2'
N'y connaissant pas grand chose à python. Avez vous un avis ?

Re: PYTHON : recupération des données API Withings

Publié : 03 août 2017, 12:31
par vil1driver
Salut,

A mon avis il te faut installer urllib2 ou modifier le script pour qu'il charge urllib3

Re: PYTHON : recupération des données API Withings

Publié : 03 août 2017, 18:55
par papoo
Effectivement il faut urlib2
j'avais oublié qu'il était installé sur mon pi désolé

Re: PYTHON : recupération des données API Withings

Publié : 04 août 2017, 00:40
par frenchyyii
Merci bien pour ce script, ça fonctionne à 70% pour l'instant pour moi.
Explications:
- mon cron ne fonctionne pas .. je devrais réussir à resoudre ce souci
- plus bizarre, les taux d'hydrations ne correspondent pas du tout à ce qui s'affiche sur la balance ni sur l'appli. Pour moi par ex l'appli affiche 56% et DZ lui 42%, pour ma nénette l'appli 52% et DZ 26%. Pourriez vous vérifier ces valeurs chez vous ?
- le taux d'hydratation ne remonte pas lorsque je lance le python et que je n'ai pas fait au préalable de mesure de rythme cardiaque.

J'ai aussi ces erreurs sur chacun des profils, que je peux supprimer en effaçant les lignes de code correspondant à la mesure du front d'onde cardiaque:

Code : Tout sélectionner

Traceback (most recent call last):
  File "./withingssteph.py", line 291, in <module>
    log("vitesse onde de pouls : %s" % pulse_wave_velocity)
NameError: name 'pulse_wave_velocity' is not defined
Merci pour vos retours
Eric