投稿日

新機能: SORACOM Harvest に「複数デバイスの同時表示」「CSVダウンロード」が追加

2月は今日が最終日、ソラコム 松下(max)です。

2016年の冬にリリースし、すでに多くの皆さんにお使いいただいている SORACOM Harvest に、また新たな機能が追加されました!

今回、追加されたのはこの二つです。SORACOM Harvest icon

IoTシステムの初期段階で困るのが、デバイスから出力されたデータの可視化ではありませんか?データの可視化をおこなうクラウドサービスは数多くありますが、サインアップや設定の他にも SDK (Software Development Kit) のセットアップが必要になったりと、いろいろ準備が大変です。

SORACOM Harvest は 別途クラウドシステムやストレージを準備することなく、データの収集、保存、可視化までの一連の流れを手軽に実現することができます。アプリケーションの準備が整わずともIoTデバイスのデータの可視化を実現するサービスです。

設定も極めて容易で、下記の通り SORACOM Harvest を ON にする だけです。これで harvest.soracom.io というアドレスが IoT デバイス向けに開かれますので、そこに HTTP だけでなく TCP や UDP で送信するだけで蓄積、可視化されるというお手軽さです。

たとえば Linux OS 等から curlnc といったコマンドを使うだけでデータの送信と蓄積、可視化が可能です。

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” 松下