2月は今日が最終日、ソラコム 松下(max)です。
2016年の冬にリリースし、すでに多くの皆さんにお使いいただいている SORACOM Harvest に、また新たな機能が追加されました!
今回、追加されたのはこの二つです。
IoTシステムの初期段階で困るのが、デバイスから出力されたデータの可視化ではありませんか?データの可視化をおこなうクラウドサービスは数多くありますが、サインアップや設定の他にも SDK (Software Development Kit) のセットアップが必要になったりと、いろいろ準備が大変です。
SORACOM Harvest は 別途クラウドシステムやストレージを準備することなく、データの収集、保存、可視化までの一連の流れを手軽に実現することができます。アプリケーションの準備が整わずともIoTデバイスのデータの可視化を実現するサービスです。
設定も極めて容易で、下記の通り SORACOM Harvest を ON にする だけです。これで harvest.soracom.io
というアドレスが IoT デバイス向けに開かれますので、そこに HTTP だけでなく TCP や UDP で送信するだけで蓄積、可視化されるというお手軽さです。
たとえば Linux OS 等から curl
や nc
といったコマンドを使うだけでデータの送信と蓄積、可視化が可能です。
curl コマンドを利用した送信例
$ curl -v --data '{"value1":110}' harvest.soracom.io * Rebuilt URL to: harvest.soracom.io/ * Trying x.x.x.x... * Connected to harvest.soracom.io (x.x.x.x) port 80 (#0) > POST / HTTP/1.1 > Host: harvest.soracom.io > User-Agent: curl/7.47.0 > Accept: */* > Content-Length: 14 > Content-Type: application/x-www-form-urlencoded > * upload completely sent off: 14 out of 14 bytes < HTTP/1.1 201 Created < Date: Sun, 25 Feb 2018 07:46:11 GMT < Server: x.x.x.x < Content-Length: 0 < Connection: Close < * Closing connection 0
nc コマンドを利用した送信例
$ echo -en 10 | nc -q 1 -u harvest.soracom.io 8514 201
Linux OS だけでなく TCP/IP ネットワークスタックを持っていれば、同様に使っていただくことができます。
新機能 1: 複数デバイスのデータを同時表示
複数の SIM (LoRa や Sigfox も同様) のデータを、一つの画面で同時に表示できるようになりました!
複数のデバイスから出力されたデータを一括してチェックしたり、比較、相関を見たりすることがこれで可能になります。
グラフだけでなく、データテーブルも複数表示に対応しています。
使い方は、表示したい SIM のチェックボックスをつけてから [操作] > [データを確認] とします。この操作は今までの SORACOM Harvest と変わりありませんので、簡単にお使いいただくことができます。
※同時に表示可能なデバイス数は5、自動更新の間隔が1台の時は5秒だったものが60秒へ延ばされます。
新機能 2: データダウンロード機能
SORACOM Harvest に蓄積されたデータを取り出すために今まで API をご利用いただいておりましたが、データを Web のコンソール画面上から直接ダウンロードできるようになりました!
使い方は、データテーブルに新たに加わった [ダウンロード] から形式を指定するだけです。
グラフ用データを CSV でダウンロードすると、内容はこのような形になります。 (Visual Studio Code と Rainbow CSV というプラグインを利用しています)
※ダウンロードデータの内容や期間範囲は、 Web コンソール上で表示しているデータになります。
API (コマンドライン) からのデータ取得方法
従来からご利用いただける方法として API を通じたデータ取得も、引き続きご利用いただけます。
API は soracom-cli という Go 言語製のコマンドラインツールをご利用いただくのが簡単です。セットアップの詳細な手順は GitHub soracom/soracom-cli をご覧いただくとして、ここでは soracom-cli
を用いたデータ取得についてご紹介します。
soracom data get --imsi IMSIの番号
でデータが取得できます。オプションで取得範囲や件数を指定することも可能です。
~$ soracom data get --imsi $IMSI [ { "content": "{\"value1\":12}", "contentType": "application/json", "time": 1519782341888 }, { "content": "{\"value1\":3}", "contentType": "application/json", "time": 1519782340704 } ]
jq コマンド と組み合わせる事で CSV 化も可能になります。
$ soracom data get --imsi $IMSI | jq -r '.[] | [(.time/1000|todate), ((.content|fromjson).value1)] | @csv' "2018-02-28T01:45:41Z",12 "2018-02-28T01:45:40Z",3
jq における書式については jq のマニュアル をご覧ください。利用のポイントですが SORACOM Harvest が出力する time
の精度がミリ秒に対し、 jq では秒までがサポートになるため 1000 で割ってから todate
すると、日付文字列として復元できます。また content
内には JSON として解釈できる文字列が入っています。そのため jq の fromjson
を利用することで JSON 化できます。
※ API 経由での CSV 形式のダウンロードには対応しておりません(2018年2月現在)ので、本ブログで紹介している jq を用いた方法をご活用ください!
おわりに
SORACOM Harvest は、IoTのシステムの開発初期段階やトラブルシュートにご利用いただいているケースが多くありますが、表現力が増えたことでモニタリングのツールとしてもご活用いただけると思います。
クラウドなどのサービスのセットアップが不要というメリットを最大限に活かして、みなさまのIoTシステム開発の速度向上にお役立てください!
ソラコム “MAX” 松下