LoginSignup
5
6

More than 5 years have passed since last update.

JINSMEMEで取得したパーソナルデータをダウンロードする

Posted at

目的

ウェアラブルデバイスって近未来間あってかっこよくない?
なんかおもちゃ買って遊びたいよね

利用サービス・言語

  • JINS MEME
    3点式眼電位センサー、3軸加速度センサー、3軸ジャイロ(角速度)センサーのついたメガネです。
    BLEでスマホに接続し、データを収集します。

  • JINS MEME SDK
    Android,iOS,MONACA,Node.js,WebAPIが用意されています。
    今回は容易に用意できる(爆笑)WebAPIを使います

  • Advanced REST client
    Chrome拡張のRESTクライアントになります。
    これしか知らないので他に良いものがあれば教えてください。

準備

1.アカウント作成、スマホへのインストール。
2.JINS MEME DEVELOPERSへの登録(https://jins-meme.github.io/sdkdoc/api/register.html)
 プライバシーポリシーURLとOAuthリダイレクトURLはhttp://google.comにしました。
 アクセス権はOFFICE,RUN,DRIVEすべてチェック入れましょう。
 作成後、アプリIDとアプリSecretは控えておいてください。
3.元データを取得するため、メガネ掛けて外走ってきてください。

注意
JINSから出ているアプリは

  • MEME
  • MEME OFFICE
  • MEME RUN
  • MEME RUNNext
  • MEME DRIVE(現・DRIVE2)
  • MEME TAIKAN
  • MEME ZEN

の7種です。
WebAPIで取得することが可能なデータはこの中のOFFICE,RUNNext,DRIVEのみとなります。

また、GoogleStoreにはOFFICE,RUNNextがリリースされていないのでAndroidユーザは一生懸命ランニングしても無駄になります。
一週間走った結果が無駄になった人が当記事を書いています。

アプリ データ取得 AppStore GoogleStore
MEME ×
OFFICE ×
RUN Next ×
DRIVE
RUN ×
TAIKAN ×
ZEN × ×
  • OFFICE
    JINS MEME OFFICEは、あなたのポテンシャルを最大限に引き出す、初めての「集中力計測アプリ」です。JINS MEMEメガネのセンサーで、アタマ・ココロ・カラダのデータを計測。集中力を可視化。計測データを振り返ることで、集中を使いこなすための勝ちパターンやルーティンが見つかります。さらに、カレンダーを連携すると、自分が何をしている時に集中できていたかがわかり、より詳細な振り返りを可能にします。

  • RUN Next
    6軸センサーで、ランニング中の体の動きを正確に測定。メガネで測定したデータを解析し、ランニングの無駄や弱点発見をサポート。効率的で、疲れにくく故障しづらい、理想の走りへとあなたを導きます。

  • DRIVE2
    JINS MEME メガネの眼電位センサーと6軸センサーが、疲労や眠気に伴うまばたき・視線の変化と頭の動きも捕捉。ドライバーの覚醒度の変化を検知し、アプリを通じて眠気の可能性を画面と音声でお知らせ。毎日の通勤から週末のファミリードライブまで、あなたの安全運転をアシストします。

解説

認可コードの取得

Getリクエストでトークン取得用の認可コードを取得します。
下記のコードをchromeのアドレスバーに張り付けてください。
https://accounts.jins.com/jp/ja/oauth/authorize?response_type=code&client_id=XXXXXXXXXXXX&redirect_uri=http://google.com&state=hoge&scope=office%20run%20drive&service_id=meme

client_idとredirect_uriは適宜書き換えてください。
redirect_uriはJINS MEME DEVELOPERS登録時に記入したURIを記載。(今回はhttp://google.com)

成功するとリダイレクト先に飛ばされ、クエリパラメータに認可コードとstateが入っています。
image.png

アクセストークンの取得

認可コードを使ってアクセストークンを取得します。
次はPOSTリクエストのため、RESTクライアントを使用します。
・MethodにPOST
・ReqestURLにhttps://apis.jins.com/meme/v1/oauth/token
・HeaderNameにContent-Type
・Headervalueにapplication/x-www-form-urlencoded
を指定
image.png

Bodyタブに移動し
・grant_typeにauthorization_code
・codeに先ほど取得した認可コード
・redirect_uriにhttp://google.com
・client_idにDEVELOPERS登録時のアプリID
・client_secretにDEVELOPERS登録時のアプリSecret
image.png

SENDボタンを押して正しく入力されていれば
アクセストークンが返ってきます。

{
    "access_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "token_type": "bearer",
    "expires_in": 2592000,
    "refresh_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "scope": "office run drive"
}
パーソナルデータの取得

アクセストークンまで取得出来たら最後にデータをGetでとってきます。
https://apis.jins.com/meme/v1/users/me/drive2/computed_data?type=computed_data2&date_from=2018-06-17T00%3A00%3A00%2B00%3A00&date_to=2018-06-17T23%3A59%3A59%2B00%3A00

クエリパラメータはdate_fromとdate_toが必須、項目数が多いのでオプションでfieldsを指定することで絞ることもできます。
date_**はYYYY-MM-DDThh:mm:ssTZDの書式で指定します。コロンとプラス記号はエンコードし%3A,%2Bになります。
例)2019年1月2日3時4分5秒(日本時間)→2019-01-02T03:04:05+09:00→2019-01-02T03%3A04%3A05%2B09%3A00

ヘッダには
・acceptにapplication/json
・authorizationにBearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX(アクセストークン)
を指定し、SENDボタンを押します
image.png

結果

うまくいくとこんな感じでデータが取れます。

{
  "computed_data": {
    "12": [
      {
        "date": "2018-06-17T12:20:15Z",
        "cat": 11,
        "r_bk": 58,
        "r_eu": 24,
        "r_ed": 36,
        "r_er": 26,
        "r_el": 38,
        "nd": 4,
        "stp": 2,
        "nptm_b": 0.0154,
        "npts_b": 0.0147,
        "nptm_a": 0.0154,
        "npts_a": 0.0147,
        "vpwm_a": 0,
        "bkil": 0,
        "bkir": 0,
        "p_vld": 1,
        "m_npt": 0.0395,
        "m_npt_c": 0.0395,
        "m_npt_cl": 0.0182,
        "m_bki": 0,
        "m_vpw": 0.1099,
        "bk": 2,
        "d_ivd": 0,
        "npt_t": 65.1,
        "npt_ts": 65.1,
        "npt_tl": 52,
        "ss_t": 0,
        "bts_t": 0,
        "lb_t": 0,
        "npt": 38.5,
        "npt_d": 29.6,
        "spn": 29.6,
        "lng": 135.69193,
        "lat": 34.88692,
        "spd": 0.7,
        "hmc": 20,
        "til": 0.6,
        "wtr": "100",
        "in_mes": 0,
        "dist": 0,
        "isl": false
      },
      {
        "date": "2018-06-17T12:18:45Z",
        "cat": 10,
        "r_bk": 14,
        "r_eu": 6,
        "r_ed": 4,
        "r_er": 3,
        "r_el": 4,
        "nd": 0,
        "stp": 1,
        "nptm_b": 0.0085,
        "npts_b": 0.0052,
        "nptm_a": 0.0085,
        "npts_a": 0.0052,
        "vpwm_a": 0,
        "bkil": 0,
        "bkir": 0,
        "p_vld": 0,
        "m_npt": 0,
        "m_npt_c": 0,
        "m_npt_cl": 0,
        "m_bki": 0,
        "m_vpw": 0,
        "bk": 0,
        "d_ivd": 1,
        "npt_t": 0,
        "npt_ts": 0,
        "npt_tl": 0,
        "ss_t": 0,
        "bts_t": 0,
        "lb_t": 0,
        "npt": 0,
        "npt_d": 29.6,
        "spn": 29.2,
        "lng": 135.69193,
        "lat": 34.88692,
        "spd": 1.7,
        "hmc": 2,
        "til": -6.9,
        "wtr": "100",
        "in_mes": 0,
        "dist": 0,
        "isl": false
      }
    ]
  },
  "cursor": null
}

ちなみにアプリからみるとこんな感じです。

つぎ

Androidアプリを作る予定だったんですがコケまくりで記事にもならないのでWebAPIを使ってみました。
サポートへメールを投げたので返事待ちです。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6