忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

python-fitbitで奥さんの活動量を測る

うちの奥さんが歩数などが測れるfitbitをもっていたのでpythonでapiをたたいてみることにしました。



けっこう設定がめんどうです…

はじめにOAuth 2.0 Client IDとClient Secretを取得します。

https://dev.fitbit.com/login

続いてgithubで各ファイルをダウンロード

https://github.com/orcasgit/python-fitbit.gi

fitbitのライブラリをインストールします。(必要に応じてpip3にしてください)
pip install fitbit
pip install cherrypy

※ちなみにラズパイでライブラリをインストールしようとするとバージョンが違うと怒られます。
 sudo pip3 install cherrypy とするとエラーが出てしまいます。
jaraco.collections requires Python '>=3.6' but the running Python is 3.5.3
こちらの記事を参照にpythonのバージョンアップをしました。
https://intellectual-curiosity.tokyo/2019/12/07/raspberry-pi%E3%81%A7python%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/



githubでダウンロードしたgather_keys_oauth2.pyを実行するのですが、
このときOAuth 2.0 Client IDとClient Secreをコマンドの後に入力します。
python gather_keys_oauth2.py [client_id] [client_secret]
コンソールにrefresh_token とaccess_tokenが出てくるのでメモしておきます。
あとはOAuth 2.0 Client IDとClient Secret含めpythonコードに埋め込んでいきます。

歩数取得の例です。
import fitbit
CLIENT_ID =  "******************"
CLIENT_SECRET  = "***********************"
ACCESS_TOKEN =  "*********************"
REFRESH_TOKEN =  "*****************************"
authd_client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET
                             ,access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
authd_client.intraday_time_series('activities/steps', base_date="2020-05-03", detail_level='1min', start_time="12:00", end_time="14:00") 
すると、結果はこちら


{'activities-steps': [{'dateTime': '2020-05-03', 'value': '3806'}],
'activities-steps-intraday': {'dataset': [{'time': '12:00:00', 'value': 0},
{'time': '12:01:00', 'value': 20},
{'time': '12:02:00', 'value': 0},
{'time': '12:03:00', 'value': 0},
{'time': '12:04:00', 'value': 0},
{'time': '12:05:00', 'value': 0},
{'time': '12:06:00', 'value': 10},
{'time': '12:07:00', 'value': 15},
{'time': '12:08:00', 'value': 10},
{'time': '12:09:00', 'value': 16},
{'time': '12:10:00', 'value': 27},
{'time': '12:11:00', 'value': 10},
{'time': '12:12:00', 'value': 0},
{'time': '12:13:00', 'value': 0},
{'time': '12:14:00', 'value': 16},
{'time': '12:15:00', 'value': 0},
{'time': '12:16:00', 'value': 43},
{'time': '12:17:00', 'value': 34},
{'time': '12:18:00', 'value': 36},
{'time': '12:19:00', 'value': 1},
{'time': '12:20:00', 'value': 0},
{'time': '12:21:00', 'value': 7},
{'time': '12:22:00', 'value': 22},
{'time': '12:23:00', 'value': 0},
{'time': '12:24:00', 'value': 11},
{'time': '12:25:00', 'value': 11},
{'time': '12:26:00', 'value': 14},
{'time': '12:27:00', 'value': 15},
{'time': '12:28:00', 'value': 6},
{'time': '12:29:00', 'value': 14},
{'time': '12:30:00', 'value': 41},
{'time': '12:31:00', 'value': 19},
{'time': '12:32:00', 'value': 6},
{'time': '12:33:00', 'value': 14},
{'time': '12:34:00', 'value': 0},
{'time': '12:35:00', 'value': 98},
{'time': '12:36:00', 'value': 98},
{'time': '12:37:00', 'value': 107},
{'time': '12:38:00', 'value': 90},
{'time': '12:39:00', 'value': 87},
{'time': '12:40:00', 'value': 109},
{'time': '12:41:00', 'value': 99},
{'time': '12:42:00', 'value': 85},
{'time': '12:43:00', 'value': 28},
{'time': '12:44:00', 'value': 11},
{'time': '12:45:00', 'value': 15},
{'time': '12:46:00', 'value': 0},
{'time': '12:47:00', 'value': 0},
{'time': '12:48:00', 'value': 15},
{'time': '12:49:00', 'value': 81},
{'time': '12:50:00', 'value': 9},
{'time': '12:51:00', 'value': 87},
{'time': '12:52:00', 'value': 80},
{'time': '12:53:00', 'value': 65},
{'time': '12:54:00', 'value': 21},
{'time': '12:55:00', 'value': 28},
{'time': '12:56:00', 'value': 11},
{'time': '12:57:00', 'value': 25},
{'time': '12:58:00', 'value': 46},
{'time': '12:59:00', 'value': 42},
{'time': '13:00:00', 'value': 67},
{'time': '13:01:00', 'value': 40},
{'time': '13:02:00', 'value': 51},
{'time': '13:03:00', 'value': 45},
{'time': '13:04:00', 'value': 0},
{'time': '13:05:00', 'value': 71},
{'time': '13:06:00', 'value': 72},
{'time': '13:07:00', 'value': 34},
{'time': '13:08:00', 'value': 42},
{'time': '13:09:00', 'value': 26},
{'time': '13:10:00', 'value': 0},
{'time': '13:11:00', 'value': 0},
{'time': '13:12:00', 'value': 0},
{'time': '13:13:00', 'value': 55},
{'time': '13:14:00', 'value': 116},
{'time': '13:15:00', 'value': 104},
{'time': '13:16:00', 'value': 72},
{'time': '13:17:00', 'value': 0},
{'time': '13:18:00', 'value': 25},
{'time': '13:19:00', 'value': 51},
{'time': '13:20:00', 'value': 0},
{'time': '13:21:00', 'value': 0},
{'time': '13:22:00', 'value': 20},
{'time': '13:23:00', 'value': 52},
{'time': '13:24:00', 'value': 73},
{'time': '13:25:00', 'value': 85},
{'time': '13:26:00', 'value': 95},
{'time': '13:27:00', 'value': 69},
{'time': '13:28:00', 'value': 60},
{'time': '13:29:00', 'value': 24},
{'time': '13:30:00', 'value': 27},
{'time': '13:31:00', 'value': 9},
{'time': '13:32:00', 'value': 10},
{'time': '13:33:00', 'value': 0},
{'time': '13:34:00', 'value': 15},
{'time': '13:35:00', 'value': 8},
{'time': '13:36:00', 'value': 0},
{'time': '13:37:00', 'value': 0},
{'time': '13:38:00', 'value': 0},
{'time': '13:39:00', 'value': 19},
{'time': '13:40:00', 'value': 34},
{'time': '13:41:00', 'value': 18},
{'time': '13:42:00', 'value': 24},
{'time': '13:43:00', 'value': 18},
{'time': '13:44:00', 'value': 20},
{'time': '13:45:00', 'value': 25},
{'time': '13:46:00', 'value': 0},
{'time': '13:47:00', 'value': 34},
{'time': '13:48:00', 'value': 36},
{'time': '13:49:00', 'value': 92},
{'time': '13:50:00', 'value': 114},
{'time': '13:51:00', 'value': 107},
{'time': '13:52:00', 'value': 67},
{'time': '13:53:00', 'value': 0},
{'time': '13:54:00', 'value': 25},
{'time': '13:55:00', 'value': 0},
{'time': '13:56:00', 'value': 0},
{'time': '13:57:00', 'value': 0},
{'time': '13:58:00', 'value': 0},
{'time': '13:59:00', 'value': 0},
{'time': '14:00:00', 'value': 0}],
'datasetInterval': 1,
'datasetType': 'minute'}}










奥さんの歩数が1分ごとにわかりました!!




うーん、GPSも取れるcharge 4ほしいな…

→'21/3/27 ゲットしました!






拍手[0回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30