1. Через программу Moves зайти в раздел Connected Apps и там активировать приложение Moves raw JSON Export. По итогу из этого приложения надо взять ключ (token) и где-то записать.
2. В классе пользователей (Users) добавить следующие свойства:
moves_token -- сюда для пользователя сохраняем полученный token (если нужны данные для нескольких пользователей, то проходим пункт 1 на каждом из телефонов и для каждого пользователя)
moves_steps -- здесь будет храниться количество пройденных шагов за вчерашний день (ставим галочку хранить истрию, если вдруг захотим графики строить)
moves_walk_distance -- пройденный пешком путь
moves_transport_distance -- расстояние, которое проехали на транспорте/машине
moves_ok -- дата последнего сохранения данных (служебное поле, историю хранить не нужно)
3. Создаём в сценариях скрипт с названием getMovesData со следующим кодом:
Код: Выделить всё
$date=date('Ymd',time()-24*60*60); // yesterday
$users=getObjectsByClass('Users');
foreach($users as $user) {
$object=$user['TITLE'];
$token=getGlobal($object.'.moves_token');
if ($token && getGlobal($object.'.moves_ok')!=$date) {
echo "User: $object<br>";
$res=getMovesData($token,$date);
if (isset($res['wlk']) ) {
$steps_total=$res['wlk']['steps'];
$steps_distance=round($res['wlk']['distance']/1000,2);
$transport_distance=round($res['trp']['distance']/1000,2);
setGlobal($object.'.moves_ok',$date);
setGlobal($object.'.moves_steps',$steps_total);
setGlobal($object.'.moves_walk_distance',$steps_distance);
setGlobal($object.'.moves_transport_distance',$transport_distance);
echo "Steps: $steps_total<br/>";
echo "Walk distance: $steps_distance<br/>";
echo "Transport distance: $transport_distance<br/>";
} else {
echo "Error getting data";
}
echo "<hr>";
}
}
//------------------------------------------------------
function getMovesData($token,$date) {
$data=array(
'date'=>$date,
'access_token'=>$token
);
$url ="http://moves-export.herokuapp.com/data";
$post = 'date='.$data['date'].'&access_token='.$data['access_token'];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
$data=(array)json_decode($result);
$data = $data["data"][0];
$res=array();
foreach($data->segments as $segment) {
foreach($segment->activities as $activity) {
$res[$activity->activity]['distance']+=(float)$activity->distance;
$res[$activity->activity]['steps']+=(int)$activity->steps;
}
}
return $res;
}
Собственно всё, скрипт проходится по всем пользователям, у которых установлено свойство moves_token и записывает статистику в соответствующие свойства. Можно строить графики и устраивать соревнования -- кто больше прошёл или проехал за день