Intégration de la balance Withings grâce à Xpath

Capteurs et actionneurs HTTP

Re: Intégration de la balance Withings grâce à Xpath

Messagepar DomotiFred » 14 Déc 2017 20:59

:-)
2 Eedomus+ 96 Zwave 3 EnOcean 1 Edisio 2 Xee 14 cam IP 1 Connexoon 8 SONOS 1 Musaic 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 3 Nabaztag 1 Lametric Time 1 Nokia Cardio SARAH sur ComputeCard New !
DomotiFred
 
Messages : 1114
Inscription : 15 Mars 2013
Localisation : 78

Re: Intégration de la balance Withings grâce à Xpath

Messagepar DomotiFred » 26 Déc 2017 17:11

Bonjour,

J'ai donc bien reçu ma balance Nokia Body Cardio.
Effectivement, le script eedomus n'intègre que 3 relevés, ce qui est dommage par rapport à toutes les possibilités et remontées de la balance.
J'ai modifié le script PHP en remplaçant la ligne 92 :
$measure_type = array(1 => 'weight', 6 => 'fat_percent', 11 => 'heart_rate');

avec cette ligne :
$measure_type = array(1 => 'weight', 4 => 'height', 5 => 'fat_free_mass', 6 => 'fat_percent', 8 => 'fat_mass', 9 => 'DBP', 10 => 'SBP', 11 => 'heart_rate', 54 => 'SP02', 91 => 'pulse_wave_velocity');

Il faut que je teste avec plus d'infos, car visiblement la balance peut en remonter d'autres, mais je suis en aveugle sur comment les écrire pour respecter le format attendu.
Je suis en train de chercher un peu partout sur Internet.

J'ai trouvé ça, mais il faut déchiffrer et tester voir si c'est compatible, au moins pour certaines valeurs, avec la balance...
%measure_types = ( 1 => { name => "Weight (kg)", reading => "weight", },
4 => { name => "Height (meter)", reading => "height", },
5 => { name => "Lean Mass (kg)", reading => "fatFreeMass", },
6 => { name => "Fat Mass (%)", reading => "fatRatio", },
7 => { name => "Lean Mass (%)", reading => "fatFreeRatio", },
8 => { name => "Fat Mass (kg)", reading => "fatMassWeight", },
9 => { name => "Diastolic Blood Pressure (mmHg)", reading => "diastolicBloodPressure", },
10 => { name => "Systolic Blood Pressure (mmHg)", reading => "systolicBloodPressure", },
11 => { name => "Heart Rate (bpm)", reading => "heartPulse", },
12 => { name => "Temperature (°C)", reading => "temperature", },
13 => { name => "Humidity (%)", reading => "humidity", },
14 => { name => "unknown 14", reading => "unknown14", }, #device? event home - peak sound level?
15 => { name => "Noise (dB)", reading => "noise", },
18 => { name => "Weight Objective Speed", reading => "weightObjectiveSpeed", },
19 => { name => "Breastfeeding (s)", reading => "breastfeeding", }, #baby
20 => { name => "Bottle (ml)", reading => "bottle", }, #baby
22 => { name => "BMI", reading => "bmi", }, #user? goals
35 => { name => "CO2 (ppm)", reading => "co2", },
36 => { name => "Steps", reading => "steps", dailyreading => "dailySteps", }, #aggregate
37 => { name => "Elevation (m)", reading => "elevation", dailyreading => "dailyElevation", }, #aggregate
38 => { name => "Active Calories (kcal)", reading => "calories", dailyreading => "dailyCalories", }, #aggregate
39 => { name => "Intensity", reading => "intensity", }, #intraday only
40 => { name => "Distance (m)", reading => "distance", dailyreading => "dailyDistance", }, #aggregate #measure
41 => { name => "Descent (m)", reading => "descent", dailyreading => "dailyDescent", }, #descent #aggregate #measure ??sleepreading!
42 => { name => "Activity Type", reading => "activityType", }, #intraday only 1:walk 2:run
43 => { name => "Duration (s)", reading => "duration", }, #intraday only
44 => { name => "Sleep State", reading => "sleepstate", }, #intraday #aura mat
47 => { name => "MyFitnessPal Calories (kcal)", reading => "caloriesMFP", },
48 => { name => "Active Calories (kcal)", reading => "caloriesActive", dailyreading => "dailyCaloriesActive", }, #day summary
49 => { name => "Idle Calories (kcal)", reading => "caloriesPassive", dailyreading => "dailyCaloriesPassive", }, #aggregate
50 => { name => "unknown 50", reading => "unknown50", dailyreading => "dailyUnknown50", }, #day summary pulse 60k-80k #aggregate
51 => { name => "Light Activity (s)", reading => "durationLight", dailyreading => "dailyDurationLight", }, #aggregate
52 => { name => "Moderate Activity (s)", reading => "durationModerate", dailyreading => "dailyDurationModerate", }, #aggregate
53 => { name => "Intense Activity (s)", reading => "durationIntense", dailyreading => "dailyDurationIntense", }, #aggregate
54 => { name => "SpO2 (%)", reading => "spo2", },
56 => { name => "Ambient light (lux)", reading => "light", }, # aura device
57 => { name => "Respiratory rate", reading => "breathing", }, # aura mat #measure vasistas
58 => { name => "Air Quality (ppm)", reading => "voc", }, # Home Air Quality
59 => { name => "unknown 59", reading => "unknown59", }, #
60 => { name => "unknown 60", reading => "unknown60", }, # aura mat #measure vasistas 20-200 peak 800
61 => { name => "unknown 61", reading => "unknown61", }, # aura mat #measure vasistas 10-60 peak 600
62 => { name => "unknown 62", reading => "unknown62", }, # aura mat #measure vasistas 20-100
63 => { name => "unknown 63", reading => "unknown63", }, # aura mat #measure vasistas 0-100
64 => { name => "unknown 64", reading => "unknown64", }, # aura mat #measure vasistas 800-1300
65 => { name => "unknown 65", reading => "unknown65", }, # aura mat #measure vasistas 3000-4500 peak 5000
66 => { name => "unknown 66", reading => "unknown66", }, # aura mat #measure vasistas 4000-7000
67 => { name => "unknown 67", reading => "unknown67", }, # aura mat #measure vasistas 0-500 peak 1500
68 => { name => "unknown 68", reading => "unknown68", }, # aura mat #measure vasistas 0-1500
69 => { name => "unknown 69", reading => "unknown69", }, # aura mat #measure vasistas 0-6000 peak 10000
70 => { name => "unknown 70", reading => "unknown70", }, #?
71 => { name => "Body Temperature (°C)", reading => "bodyTemperature", }, #thermo
73 => { name => "Skin Temperature (°C)", reading => "skinTemperature", }, #thermo
76 => { name => "Muscle Mass (kg)", reading => "muscleMass", }, # cardio scale
77 => { name => "Water Mass (kg)", reading => "waterMass", }, # cardio scale
78 => { name => "unknown 78", reading => "unknown78", }, # cardio scale
79 => { name => "unknown 79", reading => "unknown79", }, # body scale
80 => { name => "unknown 80", reading => "unknown80", }, # body scale
86 => { name => "unknown 86", reading => "unknown86", }, # body scale
87 => { name => "Active Calories (kcal)", reading => "caloriesActive", dailyreading => "dailyCaloriesActive", }, # measures list sleepreading!
88 => { name => "Bone Mass (kg)", reading => "boneMassWeight", },
89 => { name => "unknown 89", reading => "unknown89", },
90 => { name => "unknown 90", reading => "unknown90", }, #pulse
91 => { name => "Pulse Wave Velocity (m/s)", reading => "pulseWave", }, # new weight
93 => { name => "Muscle Mass (%)", reading => "muscleRatio", }, # cardio scale
94 => { name => "Bone Mass (%)", reading => "boneRatio", }, # cardio scale
95 => { name => "Hydration (%)", reading => "hydration", }, # body water
#-10 => { name => "Speed", reading => "speed", },
#-11 => { name => "Pace", reading => "pace", },
#-12 => { name => "Altitude", reading => "altitude", }

Fred.
2 Eedomus+ 96 Zwave 3 EnOcean 1 Edisio 2 Xee 14 cam IP 1 Connexoon 8 SONOS 1 Musaic 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 3 Nabaztag 1 Lametric Time 1 Nokia Cardio SARAH sur ComputeCard New !
DomotiFred
 
Messages : 1114
Inscription : 15 Mars 2013
Localisation : 78

Re: Intégration de la balance Withings grâce à Xpath

Messagepar DomotiFred » 03 Jan 2018 15:54

Bonjour,

Bon, je n'arrive pas à trouver les bonnes valeurs dans le script pour faire remonter les valeurs suivantes :
Masse osseuse
Tension
IMC
Masse musculaire
Masse hydrique

Les seules valeurs qui remontent sont :
Poids
Masse grasse saine
Rythme cardiaque
Vitesse d'onde de pouls

Ca fait quand même peu vues les possibilités de la balance.
Quelqu'un connait t'il les lignes à rajouter dans le script pour remonter ces 5 valeurs ?

Merci.

Fred.
2 Eedomus+ 96 Zwave 3 EnOcean 1 Edisio 2 Xee 14 cam IP 1 Connexoon 8 SONOS 1 Musaic 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 3 Nabaztag 1 Lametric Time 1 Nokia Cardio SARAH sur ComputeCard New !
DomotiFred
 
Messages : 1114
Inscription : 15 Mars 2013
Localisation : 78

Re: Intégration de la balance Withings grâce à Xpath

Messagepar galaksy2001 » 06 Jan 2018 19:02

Quand tu fais un appel à l'API en utilisant la syntaxe suivante :

Code : Tout sélectionner
https://api.health.nokia.com/measure?action=getmeas&userid=xxxxxxx


tu n'as que les paramètres 1, 5, 6, 8 et 11 qui sont renseignés ( weight, fatFreeMass, fatRatio, fatMassWeight et heartPulse ).

En épluchant l'API dispo sur le site https://developer.health.nokia.com/api/doc, au chapitre "Measure - Get Body Measures" il y a pourtant beucoup plus de types dispos. J'en déduis que la limitation vient du modèle de la balance et/ou de l'user ID.
galaksy2001
 
Messages : 587
Inscription : 06 Jan 2014

Re: Intégration de la balance Withings grâce à Xpath

Messagepar DomotiFred » 06 Jan 2018 19:08

Bonjour,

Bizarre,

Quand je fais :
https://api.health.nokia.com/measure?action=getmeas&userid=xxxx

avec comme userid, l'id indiqué dans VAR 1 du périphérique créé par 'eedomus, ça me retourne :
{"status":2554}

et rien d'autre :-(
2 Eedomus+ 96 Zwave 3 EnOcean 1 Edisio 2 Xee 14 cam IP 1 Connexoon 8 SONOS 1 Musaic 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 3 Nabaztag 1 Lametric Time 1 Nokia Cardio SARAH sur ComputeCard New !
DomotiFred
 
Messages : 1114
Inscription : 15 Mars 2013
Localisation : 78

Re: Intégration de la balance Withings grâce à Xpath

Messagepar galaksy2001 » 06 Jan 2018 19:19

2554 : Wrong action or wrong webservice.

Tu as refait une inscription sur le site https://static.health.nokia.com/content/dashboard/fr/ ?
galaksy2001
 
Messages : 587
Inscription : 06 Jan 2014

Re: Intégration de la balance Withings grâce à Xpath

Messagepar DomotiFred » 06 Jan 2018 19:30

Je recommence et ça fonctionne maintenant ?!
La logique floue...
Bref, va falloir que j'étudie la page que j'ai en retour, car elle est pleine de valeurs..
2 Eedomus+ 96 Zwave 3 EnOcean 1 Edisio 2 Xee 14 cam IP 1 Connexoon 8 SONOS 1 Musaic 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 3 Nabaztag 1 Lametric Time 1 Nokia Cardio SARAH sur ComputeCard New !
DomotiFred
 
Messages : 1114
Inscription : 15 Mars 2013
Localisation : 78

Re: Intégration de la balance Withings grâce à Xpath

Messagepar DomotiFred » 06 Jan 2018 19:46

Bon, après étude de la page, j'ai pas mal de données qui remontent.
Ce sont les 12 valeurs suivantes :
1
5
6
8
11
76
77
88
91
93
94
95

Je ne sais pas pour toi si ces valeurs remontent de la même façon.

Ne sachant pas trop comment aller chercher et comment écrire les valeurs à chercher, j'avais modifié la ligne 92 du script withings_oauth.php hébergé sur l'eedomus comme ceci :
$measure_type = array(1 => 'weight', 4 => 'height', 5 => 'fat_free_mass', 6 => 'fat_percent', 8 => 'fat_mass', 7 => 'lean_mass', 7 => 'fat_free_ratio', 7 => 'fat_free_percent', 9 => 'diastolic_blood_pressure', 9 => 'dbp', 9 => 'DBP', 10 => 'systolic_blood_pressure', 10 => 'sbp', 10 => 'SBP', 11 => 'heart_rate', 22 => 'bmi', 54 => 'spo2', 76 => 'muscle_mass', 77 => 'water_mass', 88 => 'bone_mass', 88 => 'bone_mass_weight', 91 => 'pulse_wave_velocity', 93 => 'muscle_ratio', 93 => 'muscle_percent', 93 => 'muscle_mass', 95 => 'hydration');

J'ai donc 12 valeurs qui remontent sur 17 que je tente d'aller chercher, c'est déjà pas mal.
Par contre, je n'en ai que 6 qui remontent dans l'eedomus après pourtant avoir créé les périphériques avec l'Xpath qui va bien.

Par exemple, pour obtenir le résultat du 95 (hydratation), mon Xpath est :
/root/measure[1]/hydration
Mais je n'ai absolument rien en retour sur le xml généré par le script eedomus.

Ce xml contient juste les infos suivantes :
<root><measure><date>2018-01-05 20:38:32</date><pulse_wave_velocity>6.821</pulse_wave_velocity><heart_rate>82</heart_rate><weight>72.511</weight><fat_mass>12.39</fat_mass><fat_free_mass>60.121</fat_free_mass><fat_percent>17.087</fat_percent></measure></root>

A force de "gratter", on va bien trouver...
2 Eedomus+ 96 Zwave 3 EnOcean 1 Edisio 2 Xee 14 cam IP 1 Connexoon 8 SONOS 1 Musaic 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 3 Nabaztag 1 Lametric Time 1 Nokia Cardio SARAH sur ComputeCard New !
DomotiFred
 
Messages : 1114
Inscription : 15 Mars 2013
Localisation : 78

Re: Intégration de la balance Withings grâce à Xpath

Messagepar galaksy2001 » 06 Jan 2018 20:05

Ma balance est une Withings WS 50 : les seules données qui remontent via l'API sont celles que j'ai communiquées ( type 1, 5, 6, 8 et 11 ).
J'ai pourtant le taux de CO2 et la température qui apparaissent sur ma balance mais pas communiqués par L'API via cette syntaxe.
Quelles sont tes 6 valeurs qui remontent ?
galaksy2001
 
Messages : 587
Inscription : 06 Jan 2014

Re: Intégration de la balance Withings grâce à Xpath

Messagepar DomotiFred » 06 Jan 2018 20:13

Ma balance est un Nokia Cardio C8

Les valeurs qui remontent dans l'eedomus après avoir mofifié la ligne 92 du script sont les suivantes :

Le poids en Kg => 1
La Fat Free Mass en Kg => 5
La masse grasse saine en % => 6
La Fat Mass Weight en Kg => 8
Le rythme cardiaque en bps => 11
La vitesse d'onde de pouls => 91
2 Eedomus+ 96 Zwave 3 EnOcean 1 Edisio 2 Xee 14 cam IP 1 Connexoon 8 SONOS 1 Musaic 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 3 Nabaztag 1 Lametric Time 1 Nokia Cardio SARAH sur ComputeCard New !
DomotiFred
 
Messages : 1114
Inscription : 15 Mars 2013
Localisation : 78

Re: Intégration de la balance Withings grâce à Xpath

Messagepar galaksy2001 » 06 Jan 2018 20:26

C'est quand même déjà pas mal !

Pour les autres types (76, 77, 88, 93, 94, 95), je comprends pas pourquoi ça ne fonctionne pas car à priori c'est toi qui fixe, à la ligne 92 du script, le nom des types par rapport à leur numéro , il ne peut donc pas y avoir d'erreurs de syntaxes par rapport à ton chemin Xpath :?

Edith : pour le poids, la valeur "1", c'est de la coquetterie ou c'est un bug ?
galaksy2001
 
Messages : 587
Inscription : 06 Jan 2014

Re: Intégration de la balance Withings grâce à Xpath

Messagepar DomotiFred » 07 Jan 2018 11:06

galaksy2001 a écrit:C'est quand même déjà pas mal !

Pour les autres types (76, 77, 88, 93, 94, 95), je comprends pas pourquoi ça ne fonctionne pas car à priori c'est toi qui fixe, à la ligne 92 du script, le nom des types par rapport à leur numéro , il ne peut donc pas y avoir d'erreurs de syntaxes par rapport à ton chemin Xpath :?

Edith : pour le poids, la valeur "1", c'est de la coquetterie ou c'est un bug ?


C'est bien là le problème.
C'est à se demander s'il n'y a pas une restriction dans le script eedomus :-(

Concernant la valeur "1" pour le poids, c'est le codage imposé par Nokia ;-)

Fred.
2 Eedomus+ 96 Zwave 3 EnOcean 1 Edisio 2 Xee 14 cam IP 1 Connexoon 8 SONOS 1 Musaic 8 Google Home 7 ChromeCast 1 Synology 1513+ 1 Smartcoffee 1 robot tondeuse 3 Nabaztag 1 Lametric Time 1 Nokia Cardio SARAH sur ComputeCard New !
DomotiFred
 
Messages : 1114
Inscription : 15 Mars 2013
Localisation : 78

Précédent

Retour vers Requêtes HTTP

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)