こんにちは!
開発部の武内です。
本エントリではFASTIO APIの紹介をさせていただきます。
FASTIO APIとは
FASTIOで管理しているデータや制御信号を外部から利用するためのAPIで、
Web API(HTTPを用いたインターフェース)として提供しています。
通常はFASTIOサイト上で確認・操作いただいていることを
外部から可能にする仕組み、ということになります。
どのようなAPI構成となっているかは
以下のサイトをご覧ください。
計測データ取得APIで会議室のどんより具合を可視化
会議室にこもり議論を交わしていると、だんだん空気中のCO2濃度が高まってきます。
CO2濃度はppmという単位で表しますが、
2500ppmを超えると急激に思考力や集中力が低下するという研究データもあるようです。
長い会議で眠くなるのもこれが原因かもしれませんね。
ただ議論中に「換気しよう」「休憩しよう」と言い出しにくいこともあると思います。
ということで、会議に参加している人それぞれがCO2濃度を意識できるように、
計測データ取得APIを使ってCO2濃度表示システムを実装してみました。
※今回はPHPで実装していますが、Web APIなのでどの言語からでも利用可能です。
システム構成
会議室には WMC-600 を配置し、接続したCO2センサがCO2濃度を計測します。
計測データはFASTIOに蓄積されるので、外部のWebサーバはFASTIO APIを使いデータを取得します。
WebサーバにCO2濃度表示アプリケーションを配置し、それをタブレットのブラウザで見る、という流れになります。
アクセストークンの取得
各APIにアクセスするためのアクセストークンを取得します。
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 |
// JSONをPOSTする関数 function postJson($url, $data) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return $result; } // アクセストークンの取得 $data = array( 'username' => 'FastioUser', // FASTIOアカウントのユーザ名を設定します 'password' => 'FastioPassword', // FASTIOアカウントのパスワードを設定します 'grant_type' => 'password', 'scope' => 'api', 'client_id' => 'FastioClientID' // FASTIOアカウントのクライアントIDを設定します ); $data = json_encode($data); // POSTデータをJSONエンコード $result = postJson('https://hogepiyo.fastio.jp/oauth2/token', $data); // POSTしてレスポンスを取得 $result = json_decode($result, true); // レスポンスをJSONデコード $token = $result['access_token']; // トークンを取り出す // hogepiyo.fastio.jp は弊社提供のAPI仕様書に正式なURLが記載されています。 |
データの取得
計測データを取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// 計測データの取得 $data = array( 'access_token' => $token, 'term_id' => 'TermID', // CO2センサの端末IDを設定します 'no' => 'TermNo', // CO2センサの端末NOを設定します 'from' => date('YmdHis', strtotime("- 1 hour")), // ここでは1時間前から 'to' => date('YmdHis') // 現在までのデータを取得するように設定しました ); $data = json_encode($data); // POSTデータをJSONエンコード $result = postJson('https://hogepiyo.fastio.jp/logger/data/regular', $data); // POSTしてレスポンスを取得 $result = json_decode($result, true); // レスポンスをJSONデコード // hogepiyo.fastio.jp は弊社提供のAPI仕様書に正式なURLが記載されています。 |
取得されたデータ
以下のようなデータが取得できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "attributes": [{ ← 計測データ項目の情報 "no": 0, "name": "CO2センサ", "unit": "ppm" }], "data" :{ ← 計測データ "0": [[ 1438268460, ← 計測時刻(UNIX TIME) 1500 ← 計測値 ], [ 1438268400, 1000 ]] } } |
Web画面に表示する
取得したデータを表示します。
1 2 |
echo $result[data][0][0][1]; // 最新値を出力する |
表示できました。
ここまでを行うと、Web画面上にCO2濃度が表示できます。
画面のデザインを行う
このままではただ数値を表示しただけですので、
数値が大きくても深刻さが伝わらない可能性があります。
というか伝わりませんね。
ということで、
コードしか書けない私は社内のデザインができる方に泣きついて画面デザインを作ってもらい、
こういった感じになりました。
閾値を超えると表示が変わるようにもしてみました。
こうなると誰でも「やばい!換気しよう!」となりそうですね。
おわりに
いかがでしたでしょうか?
FASTIOと外部サービスを連携できると活用の幅もグンと広がります。
ぜひ、 FASTIO API をご利用いただければと思います。