Voici un petit didacticiel pour intégrer à votre eedomus les données Fitbit (bracelets, balance).
Il existe déjà un didacticiel sur le sujet à partir duquel je suis partit : viewtopic.php?f=16&t=1092
Le soucis est que j'ai un hébergement mutualité chez OVH qui, à ma connaissance, ne propose pas la librairie Oauth. Il a fallut faire sans Bref une méthode pour tout ceux qui ont un hébergement mais pas accès à la lib Oauth.
1- Récupérez les scripts :
http://www.phpclasses.org/package/7700- ... OAuth.html
et
http://www.phpclasses.org/package/3-PHP ... pages.html
2- Décompressez et installez les fichiers sur votre serveur (tout dans un même répertoire), par exemple : http://www.votreserveur.com/eedomus/
3- Créez une application sur https://dev.fitbit.com/apps, cela vous donne une <CONSUMER-KEY> et un <CONSUMER-SECRET>
4- Modifiez, sur votre serveur le fichier login_with_fitbit.php par le code ci-dessous, puis remplacez les variables <CONSUMER-KEY> et <CONSUMER-SECRET> par les valeurs obtenues au point 3
- Code : Tout sélectionner
<?php
/*
* login_with_fitbit.php
*
* @(#) $Id: login_with_fitbit.php,v 1.2 2013/07/31 11:48:04 mlemos Exp $
*
*/
/*
* Get the http.php file from http://www.phpclasses.org/httpclient
*/
require('http.php');
require('oauth_client.php');
$client = new oauth_client_class;
$client->debug = 1;
$client->debug_http = 1;
$client->server = 'Fitbit';
$client->redirect_uri = 'http://'.$_SERVER['HTTP_HOST'].
dirname(strtok($_SERVER['REQUEST_URI'],'?')).'/login_with_fitbit.php';
$client->client_id = '<CONSUMER-KEY>'; $application_line = __LINE__;
$client->client_secret = '<CONSUMER-SECRET>';
if(strlen($client->client_id) == 0
|| strlen($client->client_secret) == 0)
die('Please go to Fitbit application registration page https://dev.fitbit.com/apps/new , '.
'create an application, and in the line '.$application_line.
' set the client_id to Consumer key and client_secret with Consumer secret. '.
'The Callback URL must be '.$client->redirect_uri).' Make sure this URL is '.
'not in a private network and accessible to the Fitbit site.';
if(($success = $client->Initialize()))
{
if(($success = $client->Process()))
{
if(strlen($client->access_token))
{
$success = $client->CallAPI(
'https://api.fitbit.com/1/user/-/profile.json',
'GET', array(), array('FailOnAccessError'=>true), $user);
}
}
$success = $client->Finalize($success);
}
if($client->exit)
exit;
if($success)
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Fitbit OAuth client results</title>
</head>
<body>
<?php
echo '<h1>', HtmlSpecialChars($user->user->displayName),
' you have logged in successfully with Fitbit!</h1>';
//echo '<pre>', HtmlSpecialChars(print_r($user, 1)), '</pre>';
echo '<pre>', HtmlSpecialChars(print_r($client, 1)), '</pre>';
?>
</body>
</html>
<?php
}
else
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OAuth client error</title>
</head>
<body>
<h1>OAuth client error</h1>
<p>Error: <?php echo HtmlSpecialChars($client->error); ?></p>
</body>
</html>
<?php
}
?>
5- Lancer le fichier http://www.votreserveur.com/eedomus/log ... fitbit.php
identifiez-vous avec vos logins fitbit.
Une page de résultat va s'afficher
récupérez les valeurs de
- Code : Tout sélectionner
[access_token] => xxxxxxxxxxxxxxxxxxxxxxxx
[access_token_secret] => yyyyyyyyyyyyyyyyyyyyyyy
Normalement cette page ne sert qu'une seule fois pour récupérer les 2 identifiants token !
6- Créez un fichier fitbit.php avec le code suivant puis remplacez les variables <CONSUMER-KEY> et <CONSUMER-SECRET> par les valeurs obtenues au point 3, <ACCESS-TOKEN> et <ACCESS-TOKEN-SECRET> par les valeurs obtenues au point 5
- Code : Tout sélectionner
<?php
require 'http.php';
require 'oauth_client.php';
$client = new oauth_client_class;
$client->debug = 1;
$client->debug_http = 1;
$client->server = 'Fitbit';
$client->redirect_uri = 'http://'.$_SERVER['HTTP_HOST'].
dirname(strtok($_SERVER['REQUEST_URI'],'?')).'/fitbit.php';
$client->client_id = '<CONSUMER-KEY>'; $application_line = __LINE__;
$client->client_secret = '<CONSUMER-SECRET>';
if(strlen($client->client_id) == 0
|| strlen($client->client_secret) == 0)
die('Please go to Fitbit application registration page https://dev.fitbit.com/apps/new , '.
'create an application, and in the line '.$application_line.
' set the client_id to Consumer key and client_secret with Consumer secret. '.
'The Callback URL must be '.$client->redirect_uri).' Make sure this URL is '.
'not in a private network and accessible to the Fitbit site.';
$client->access_token = '<ACCESS-TOKEN>';
$client->access_token_secret = '<ACCESS-TOKEN-SECRET>';
if(($success = $client->Initialize()))
{
if(strlen($client->access_token))
{
$success = $client->CallAPI(
'https://api.fitbit.com/1/user/-/activities/date/'.date("Y-m-d").'.xml',
'GET', array(), array('FailOnAccessError'=>true), $user);
}
$success = $client->Finalize($success);
}
if($client->exit)
exit;
if($success)
{
?>
<?php
echo $user;
?>
<?php
}
else
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OAuth client error</title>
</head>
<body>
<h1>OAuth client error</h1>
<p>Error: <?php echo HtmlSpecialChars($client->error); ?></p>
</body>
</html>
<?php
}
?>
Dans cet exemple l'appel de l'API fitbit va permettre de récupérer le nombre de pas effectués pour la journée en cours. Si vous souhaitez d'autres données (poids, sommeil, etc...) reportez vous à la doc suivante : https://wiki.fitbit.com/display/API/Fit ... Access+API
Il suffira de changer la ligne
- Code : Tout sélectionner
'https://api.fitbit.com/1/user/-/activities/date/'.date("Y-m-d").'.xml'
7- Enfin le truc classique sur la eedomus :
configuration / ajouter un périphérique / Capteur http
Reste plus qu'a tester
PS: A noter que si vous relancer plusieurs fois l'étape 5 login_with_fitbit.php (alors qu'il n'y a aucune raison de le faire sauf si cela ne fonctionne plus) vous risquez d'avoir des identifiants TOKEN différents. Il faudra alors mettre à jour le fichier fitbit.php