はじめに
IoT 機器のデータの集約を行うサーバサイドの開発は、機器が生み出す膨大なデータを扱う必要がある為、スケールするものを開発するのは大変です。 ただ、数台の機器からのデータを集約するだけならば、そこまで大変ではありません。 Actcast は IoT 機器上で動くアプリのインストールや設定や状態の確認が出来る機能に加えて、ウェブサーバとの連携を簡単にするための機能も備えています。 これと既存のツールを組み合わせる事で簡単なサーバサイドの開発はほとんどコーディングもする事なく完結させる事が出来ます。 この記事では 時系列データを扱う事に長けたデータベースである InfluxDB を用いて Actcast の時系列データの可視化を行う場合の具体的な手順を紹介したいと思います。
使用ツール
InfluxDB のセットアップ
ローカルでの実行
公式を参考に InfluxDB をローカル環境で動かします。 例えば docker 環境で動かす場合は下記のコマンドで動かします。
docker run -p 9999:9999 quay.io/influxdb/influxdb:2.0.0-beta --reporting-disabled
ローカルで初期セットアップ
InfluxDB が実行できたならば、
手元のウェブブラウザで https://localhost:9999/
にアクセスし、
ユーザ名、パスワード、Organization、Bucket をそれぞれ設定し、
初期セットアップを完了してください
ngrok を使って WWW への公開
ngrok.comでのサインアップをすますとダッシュボードに セットアップの方法が示されてるのでそれに沿ってセットアップを行います。 セットアップが終了した後に以下のコマンドで InfluxDB のエンドポイントを www に公開出来ます。
ngrok http 9999
画面に URL が表示されるので、ブラウザでアクセスして 先ほどと同様に InfluxDB のダッシュボードが表示される事を確認してください。URL は以下のような形式です。
https://xxxxxxxxx.ngrok.io/
Actcast の設定
ここでは Actcast の crowd counting アプリを例に設定方法を示します。
Webhook to InfluxDB API
InfluxDB は InfluxDB API
という名のウェブベースの API を備えています。
これと Actcast の webhook を組み合わせる事で Act が生み出したデータを
そのまま流し込むことができます。
詳しくは公式の解説をご覧ください。
API の url
今回 ngrok で公開する API は以下のような形になります。
http://xxxxxxxxx.ngrok.io/api/v2/write?org=YOUR_ORG&bucket=YOUR_BUCKET&precision=ms
InfluxDB のセットアップ時に設定した organization 名と bucket 名が URL のクエリパラメータ内に登場します。
また、Actcast で扱うタイムスタンプはミリ秒単位なので precsion
はms
としておいてください。
Authorization Token の設定
Authorization Token の発行は InfluxDB の Dashboard から行えます。
今回は先ほど設定した bucket への Write 権限があれば事足ります。
Cast 画面で設定する際に
Authorization
ヘッダとしてトークンを設定します。
この時の値に設定する際はコピーされたトークンを
そのままペーストするのではなく、 Token YOUR_TOKEN
の形式にする必要があるので注意してください。
line protocol での POST
POST される body の内容は以下のようになります。
cloud_counting count={{ data.prob }} {{ detected_at }}
これは InfluxDB の line prtocol 形式に則っています。
さらに詳しい解説は公式の解説をご覧ください。
Content-type
ヘッダは text/plain
形式となります
InfluxDB 上でデータの可視化を行う
InfluxDB に投入されたデータは、InfluxDB のダッシュボードから簡単に可視化できます。 Explore タブから例えば以下のようなグラフを簡単に作成できます。
まとめ
Actcast でのデータを可視化する方法を紹介しました。 コーディングはほとんど必要なく、手軽に試せると思います。 本格的に運用する際にはさらにもう少し設定が必要かと思いますが、 個人用途や小さなチームで PoC をやりたい時は手軽に試せる今回の ような方法が選択肢に上がると思います。 ぜひ Actcast による現実世界の時系列データの可視化を試してみてください。