投稿日 2018-02-28

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

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

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

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

  • SORACOM Harvest iconIoTシステムの初期段階で困るのが、デバイスから出力されたデータの可視化ではありませんか?データの可視化をおこなうクラウドサービスは数多くありますが、サインアップや設定の他にも 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” 松下