Aller au contenu

Balance Nokia Body+


Sakkhho

Messages recommandés

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
Lien vers le commentaire
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)

 

Lien vers le commentaire
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
Lien vers le commentaire
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)

 

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

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

Lien vers le commentaire
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.

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...
  • 2 mois après...
×
×
  • Créer...