• 投稿日
  • 新機能: 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” 松下