Aller au contenu
Sakkhho

Balance Nokia Body+

Recommended Posts

Bonjour à tous.

 

En cette période de pré-fete, rien de tel que de savoir si on aura droit à reprendre du fois gras :-)

 

nokia.png.ae2e6862465a7f68d598c3025159fbba.png

 

Si vous avez  une balance NokiaBody ou Withings (je pense que cela fonctionne aussi) je vous propose d'intégrer les données dans la HC2.

Pas d'utilité domotique à 1ere vue mais c'est simplement pour tout avoir sous le meme dashboard...

Nokia mettant à disposition un api; il faut simplement récupérer les clés et token.

 

Etape 1 : 

- créer son compte sur developper  https://account.health.nokia.com/connectionuser/account_login?r=https%3A%2F%2Fdeveloper.health.nokia.com%2Fpartner%2Fadd

- créer son application (à la manière de netatmo) et récupérer les API KEY et API SECRET

- ensuite suivez les étapes 1 à 4 ici ; https://developer.health.nokia.com/api#first_steps

 

A la fin de l'etape 4 vous aurez donc l'URL qui permet d'attaquer l'API

 

Etape 2 :

 - importer le VD ci dessous : Nokia_Body+.vfib

 - renseignez votre taille en mètre sur la 1ere ligne

 - copier coller à partir de l'url que vous avez récupérer à l'étape 1 après  "/measure?action=getmeas&oauth_consumer_key="

-  changer l'icone

bodycardio-white-EU.png.973ade335d249a48fa8e560a061a0400.png

et voilà normalement vous avez tout ...

c'est très basique, c'est une V1.0 - si vous avez des idées on peut faire différemment...

 

A+

Modifié par Sakkhho
  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Bravo! beau boulot ! Ça va aider à tenir le cap!

 

Chez moi j'ai plusieurs "users" enregistrés sur la meme balance. Cela fonctionne impec pour le 1er mais pour le second, alors que j'obtiens une url qui est apparemment bonne j'ai le retour suivant ds le VD: [ERROR] 21:55:23: line 17: attempt to index field '?' (a nil value)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Félicitations :-)
Well done

Envoyé de mon Nexus 5X en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu as importé une seconde fois le VD pour ce 2nd user ?
Rappele moi la ligne 17? (Je suis pas devant mon Mac la.)

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui. c'est FatMass = round((jsonTable.body.measuregrps[1].measures[2].value)/100)

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu peux me partager en MP le résultat de l url pour ce user ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon ben je dois dire , que cela j'adore, je vais regarder le prix.

 

bon boulot

 

Pourrais tu me préciser la référence car vu qu'il y en a plusieurs modele.

 

nokia body+ a 69,90 ? car ton icône est celui du Cardio ?

Modifié par q.philippe

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui j ai pris la body+ pas la cardio moi. ( j ai l Apple Watch pour cela )

Partager ce message


Lien à poster
Partager sur d’autres sites

OK! En fait, c'est une cardio que j'ai, d'où le bug...

 

La balance remonte plus d'infos dans l'API. Du coup j'ai mis un "filtre" dans ton VD qui trie les mesures qui ne sont pas du poids:

 

local taille = 1.75 -- votre taille en metre
local nokiaURL ="XXXXX" -- copier ici l'url obtenu sur le site de nokia après le "consumer_key="
-------------------------------------------------------------
local Nokia = Net.FHttp("api.health.nokia.com",80)
local selfId = fibaro:getSelfId()
local response ,status, err = Nokia:GET("/measure?action=getmeas&oauth_consumer_key="..nokiaURL.."")
local jsonTable = json.decode(response)


function round(num, dec)
  local mult = 10^(dec or 1)
  return math.floor(num * mult + 0.5) / mult
end

local i = 1; while jsonTable.body.measuregrps[i].measures[1].type ~= 1 do i = i + 1 end
local Poids = round((jsonTable.body.measuregrps[i].measures[1].value)/1000)
fibaro:debug(" Poids actuel " .. Poids .. "Kg")

local j = i + 1; while jsonTable.body.measuregrps[j].measures[1].type ~= 1 do j = j + 1 end
local OldPoids= round((jsonTable.body.measuregrps[j].measures[1].value)/1000)
fibaro:debug(" Poids avant " .. OldPoids .. "Kg")

local Variation = round((Poids - OldPoids))

local FatMass = round((jsonTable.body.measuregrps[i].measures[2].value)/100)
fibaro:debug(" Masse Grasse " .. FatMass .."Kg")

local MasseMuscle = round((jsonTable.body.measuregrps[i].measures[3].value)/100)
fibaro:debug(" Masse Musculaire " .. MasseMuscle .."Kg")

local MasseEau = round((jsonTable.body.measuregrps[i].measures[4].value)/100)
fibaro:debug(" Masse Hydrique " .. MasseEau .."Kg")

local MasseOs = round((jsonTable.body.measuregrps[i].measures[5].value)/100)
fibaro:debug(" Masse Osseuse " .. MasseOs .."Kg")

local FreeFatMass = round((jsonTable.body.measuregrps[i].measures[6].value)/1000)
fibaro:debug(" Masse Maigre " .. FreeFatMass .."Kg")

local FatRatio = round((jsonTable.body.measuregrps[i].measures[7].value)/1000)
fibaro:debug(" Indice Masse Grasse " .. FatRatio .."%")

local Lastmeasure = jsonTable.body.measuregrps[i].date
local Oldmeasure = jsonTable.body.measuregrps[j].date
local delta = round((os.difftime(Lastmeasure,Oldmeasure))/(3600*24))
local delai = math.floor((os.time() - Lastmeasure)/60)
local lblEcart = (" Variation " .. Variation .. "Kg" .. " sur " .. delta .. " jours" )
local lblPoids = ("" .. Poids .. " Kg" )
local IMC = round(Poids/(taille*taille))

local lblMasseMuscle =("" .. MasseMuscle .." Kg")
local lblFatMass =("" .. FatMass .." Kg")
local lblFreeFatMass =("" .. FreeFatMass .." Kg")
local lblMasseEau =("" .. MasseEau .." Kg")
local lblMasseOs =("" .. MasseOs .." Kg")

fibaro:debug("Délai depuis dernière mesure: " .. delai)
fibaro:debug(lblEcart)
fibaro:debug("IMC: "  .. IMC)

fibaro:call(selfId, "setProperty", "ui.lblEcart.value", lblEcart)
fibaro:call(selfId, "setProperty", "ui.LblPoids.value", lblPoids)
fibaro:call(selfId, "setProperty", "ui.LblIMC.value", IMC)
fibaro:call(selfId, "setProperty", "ui.lblMasseGras.value", lblFatMass)
fibaro:call(selfId, "setProperty", "ui.lblMasseMaigre.value", lblFreeFatMass)
fibaro:call(selfId, "setProperty", "ui.lblMasseMuscle.value", lblMasseMuscle)
fibaro:call(selfId, "setProperty", "ui.lblMasseOs.value", lblMasseEau)
fibaro:call(selfId, "setProperty", "ui.lblMasseHydrique.value", lblMasseOs)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

désolé mais je ne comprends pas les 4 étapes

a l’étape que doit t'on mettre dans

Consumer key :

Consumer secret :

Callback URL (called by withings on step 2):

 

idem pour les autres etapes.

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

coucou

 

l'ayant acheter, j'ai un bug 

[ERROR] 11:01:10: line 14: attempt to index field 'body' (a nil value)

 

j'ai créer l'api, j'ai les keys client et id.j'ai l'url callback!!

 

après ....?

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello

 

Je sais pas trop quoi dire la comme ca.

l'api a changer et elle est passée en V2, mais chez moi la V1 tourne toujours (pour combien de temps je sais pas) - je viens de faire une pesée et j'ai bien la remontée sans erreur.

 

donc peut être que tu as les données pour l'api V2

tu peux décrire ce que tu as fait de façon détaillé pour comprendre et remettre à jour en v2

Partager ce message


Lien à poster
Partager sur d’autres sites

cc

ben j'ai suivi ton tuto, et je bug au niveau de leur site dev api.

je me suis créer un compte, et fait mon appli, j'ai donc l'id et le secret.

 

après c'est tout. pas réussi a aller plus loin. me manque url

Partager ce message


Lien à poster
Partager sur d’autres sites

How to migrate from OAuth 1.0 to OAuth 2.0

 

In case your app still uses the OAuth 1.0 protocol, we have created a custom method to migrate to OAuth 2.0. You will be able to get an Access Token and a Refresh Token.

You firstly have to create a OAuth 2.0 developer application (see Getting Startedsection), then you only need to make a POST request for each user with a custom Refresh Token and the following parameters.

To generate this Refresh Token you just need to concatenate with a colon the user's OAuth 1.0 OAuth Token (also called Access Token Key) and the OAuth 1.0 OAuth Secret (also called Access Token Secret).

Example (your tokens should be longer than the ones in this example):

  • oauth_token: 9b649
  • oauth_secret: e3d8cc
  • generated refresh_token: 9b649:e3d8cc


Important 1: Parameters must be set in the body request and not in the url.

Important 2: API notification subscriptions created with OAuth1.0 credentials will be linked to OAuth2.0 partner application. This action is definitive but does not change notification behavior. However notification revoke or update will have to be done with OAuth2.0 Access Token.

Important 3: This migration does not revoke OAuth1.0 tokens. However OAuth1.0 tokens will not work anymore to revoke or update notification subscriptions.

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

hello

 

j'ai regardé mais je comprends pas comment migrer. désolé

il nous faut des expert comme @Steven ou @Lazer ....

Partager ce message


Lien à poster
Partager sur d’autres sites
Salut, j'essaye d'installer ce VD.
J'ai suivi toutes les instructions mais le site nokia ne renvoie pas consumer_key, mais un id_client et un consumer_secret.
Où est-ce que je me trompe?

Partager ce message


Lien à poster
Partager sur d’autres sites

Le VD ne fonctionne plus avec la nouvelle méthode d authentification.
C est possible à mon avis mais je suis pas assez calé pour le faire.


Envoyé de mon iPhone en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

×