こんにちは、サポートエンジニアの三國です。
ソラコムでは多くのお客様からお問い合わせを頂いておりますが、多くのお客様のナレッジとできるようなお問い合わせ・回答を不定期に紹介しております。SORACOM サービスのご利用にあたって気付きになれば幸いです。
なお内容についてはお客様より許可を頂いて掲載しております。また、FAQ サイトも随時更新していますのでご参照ください。
それでは第三回、早速まいりましょう!
質問 1.
デバイスに蓄積されている過去のデータを SORACOM Lagoon で可視化できますか?
デバイスへは CSV 形式でセンサーデータと測定日時が蓄積されています。
回答 1.
過去のデータを個別に SORACOM Harvest Data へ HTTP で POST することで可視化できます。
Lagoon は Harvest Data をデータソースとしているので、表示したいデータを Harvest Data へ格納します。Harvest Data へ HTTP でデータを送信する際、何も指定しない場合は受信時のタイムスタンプが使用されますが、HTTP リクエストヘッダ x-soracom-timestamp
を利用すると Harvest Data に格納する日時を任意に制御できます。
現在まとめて過去のデータをアップロードする機能はないため、CSV ファイルから測定日時およびセンサーデータを 1 レコードずつ読み出し送信する形になります。
以下に curl
コマンドの例を挙げます。 x-soracom-timestamp
にエポックミリ秒を指定し、-d
オプションで格納したいデータを JSON 形式で記載しています。
$ curl -v -X POST \
-H 'content-type:application/json' \
-H 'x-soracom-timestamp:1545652714887' \
-d '{"temperature":20}' \
質問 2.
複数のデバイスから同じ名前のメトリックを SORACOM Harvest Data へ送信していますが、Lagoon の Graph パネルで見分けが付きません。何かいい方法はないでしょうか?
たとえば以下のようなデータを送信しています。temp
という凡例が Graph パネルに 2 つ表示されてデバイスを見分けられません。
- デバイス A:
{"deviceId": "A", "temp": 20.0, "timestamp": "2020-01-20 14:50:20"}
- デバイス B:
{"deviceId": "B", "temp": 19.2, "timestamp": "2020-01-20 14:51:23"}
回答 2.
送信する JSON 形式のデータの変更が必要になりますがネストすることで区別がつけられるようになります。具体的には以下のように変更します。
- デバイス A:
{"A": {"temp": 20.0, "timestamp": "2020-01-20 14:50:20"}}
- デバイス B:
{"B": {"temp": 19.2, "timestamp": "2020-01-20 14:51:23"}}
Lagoon は、ネストされた JSON 形式のデータをプレフィックスを付与した形で(階層をなくした状態で)取り扱います。よって上記のデータでそれぞれのデバイスの temp
を以下のように参照できます。
- デバイス A:
A.temp
- デバイス B:
B.temp
これでデバイスごとのデータが見分けられるようになりました。
以下のサイトも参考にしてください。
- (参考) SORACOM Harvest Data に保存したデータを確認 / 削除する (「グラフ用データ」の箇所)
- (参考) SORACOM Lagoon でネストされた JSON を指定しやすくなりました。
バックナンバーは asksoracom カテゴリで確認できます!
それでは、次回もお楽しみに!