Actcast開発ブログ

Actcastを用いたアプリケーション開発に関する情報を発信します。

Actcast の結果を可視化する

はじめに

​ 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 をそれぞれ設定し、 初期セットアップを完了してください ​f:id:actcast-sa-1:20211029144247p:plain

ngrok を使って WWW への公開

ngrok.comでのサインアップをすますとダッシュボードに セットアップの方法が示されてるのでそれに沿ってセットアップを行います。 ​ セットアップが終了した後に以下のコマンドで InfluxDB のエンドポイントを www に公開出来ます。 ​

ngrok http 9999

f:id:actcast-sa-1:20211029144302p:plain 画面に URL が表示されるので、ブラウザでアクセスして 先ほどと同様に InfluxDB のダッシュボードが表示される事を確認してください。URL は以下のような形式です。 ​

https://xxxxxxxxx.ngrok.io/

Actcast の設定

​ ここでは Actcast の crowd counting アプリを例に設定方法を示します。 ​f:id:actcast-sa-1:20211029144243p:plain

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 で扱うタイムスタンプはミリ秒単位なので precsionmsとしておいてください。 ​

Authorization Token の設定

​ Authorization Token の発行は InfluxDB の Dashboard から行えます。 今回は先ほど設定した bucket への Write 権限があれば事足ります。 ​f:id:actcast-sa-1:20211029144252p:plain 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 タブから例えば以下のようなグラフを簡単に作成できます。 ​f:id:actcast-sa-1:20211029144308p:plain

まとめ

​ Actcast でのデータを可視化する方法を紹介しました。 コーディングはほとんど必要なく、手軽に試せると思います。 ​ 本格的に運用する際にはさらにもう少し設定が必要かと思いますが、 個人用途や小さなチームで PoC をやりたい時は手軽に試せる今回の ような方法が選択肢に上がると思います。 ​ ぜひ Actcast による現実世界の時系列データの可視化を試してみてください。