本ドキュメントは、IoT向けデータ基盤 ELmote® CLOUDに関するマニュアルである。
ELmote® CLOUDは、IoTデバイスのデータを保存・検索するサービスである。基本サービスとして、
データ保存サービス: 特定のURLにHTTPリクエスト(POST)を発行することで、クラウドにデータを保存するサービス
データ検索サービス: クラウドに保存したデータについて、期間やタグで検索した結果を取得するサービス
を提供する。また、これらの上位機能として、ダッシュボードや警報のサービスを提供する。
ELmote® CLOUDを利用するにあたり、
が必要となる。アカウントID・ユーザ名は、サービス提供元から提供される。初期パスワードは、連絡先メールアドレス宛に以下のようなメールで通知される。
件名: 【重要】 ELmote® CLOUDからのお知らせ: パスワード初期化通知
ELmote® CLOUDをご利用いただき、ありがとうございます。
このEメールはシステムから送信しています。
ELmote® CLOUDのパスワードを初期化しました。
新しいパスワードは以下です
xxxxxxxxxxxxxxxxx
ログイン後、パスワードを更新してください。
このEメールが間違って送信されたと思われる場合、サポートに連絡してください。
今後ともどうぞよろしくお願いいたします。
はじめに、パスワードを変更する。
サービス提供サイトのトップ画面で、アカウントID、ユーザ名、初期パスワードを入力する。
正しく入力できていれば、「Login」を押した後、パスワード変更画面に遷移する。
古いパスワード、新しいパスワードを入力し、「Change Password」を押下する。
パスワードは以下の条件を満たす必要がある。
「パスワード変更に成功しました。トップ画面から、再度ログインしてください。」というメッセージが表示されれば、パスワード変更に成功している。
トップ画面から、パスワード変更画面に遷移する。
アカウント名、ユーザ名および連絡先メールアドレスを入力し、「Send Email」を押す。
入力が適切であれば、連絡先メールアドレスに仮パスワードが送信される。仮パスワードでログインすると、パスワード変更画面に遷移するので、新しいパスワードに変更する。
サービス提供元(elmote-cloud[at]elspina.tech)に連絡いただきたい。
LoggerCore Serviceは、IoTデータの保存・検索を提供する、 ELmote® CLOUDの基本サービスである。
APIKEYは、データ保存・検索する際に、リクエストヘッダに含める認証用キーである。初期状態では何も表示されていないが、画面内のリロードボタンをクリックするとキーを新たに発行する。
APIKEYは2つまで利用できる。注意として、APIKEYを更新すると、古いAPIKEYでの通信は利用できなくなるので、注意いただきたい。
データを保存する際はPOSTリクエストを発行する。サンプルは画面内に表示されている通りである。以下、画面内の説明と重複するが、サンプルと注意点を説明する。
$ curl -X POST \
-H "authorization: < Your APIKEY >" \
-H "data_identifier: < Your Data Identifier >" \
-H "data_tag_1: < Your Data Tag >" \
-d '{"key": "value"}' \
https://api.elmotecloud.elspina.space/v1/api/lv3/core/endpoint
The Things Stackから、webhookでデータを送信する場合のイメージは以下である(Alert設定あり)。
データ識別子(data_identifier)は、データの一意的な識別子を想定する。データタグ(data_tag_1など)は、補足的な識別情報を想定する。これらは、データを検索する際の検索条件として利用する。
例えば、LoRaWANデバイスのデータを保存する場合、以下のような指定が考えられる。
データを保存する際、data_identifierが過去に保存した際のものと重複していても、特に問題にせずそのまま保存する。後述するデータ検索の際にdata_identifer指定で検索すると、期待しない挙動となる可能性があるので、data_identifierは一意的とすることを強く推奨する。
Note: 一度保存したデータは基本的に削除されないが、検索の際に時間指定することで、過去のデータを検索対象外とすることは可能である。
データを検索する際はGETリクエストを発行する。データの検索は以下2ステップで実行する。
サンプルは画面内に表示されている通りである。以下、画面内の説明と重複するが、サンプルと注意点を説明する。
$ curl -H "authorization: < Your APIKEY >" \
-H "accountid: < Your Account ID >" \
-H "username: < Your Username >" \
https://api.elmotecloud.elspina.space/v1/api/lv3/core/endpoint/history/tokens?data_identifier=IDENTIFIER
$ curl -H "authorization: < Your APIKEY >" \
-H "accountid: < Your Account ID >" \
-H "username: < Your Username >" \
https://api.elmotecloud.elspina.space/v1/api/lv3/core/endpoint/history/tokens?data_tags=TAG1,TAG2
なお、data_identifierとdata_tagsは、いずれか一方のみを指定しなければならない。
また、トークンには有効期限(1時間)が存在するので、必要に応じて適宜再ダウンロードすること。
$ curl -H "authorization: < Your APIKEY >" \
-H "accountid: < Your Account ID >" \
-H "username: < Your Username >" \
https://api.elmotecloud.elspina.space/v1/api/lv3/core/endpoint/history/data?token=TOKEN&include_from=0&include_to=100&exclude_from=10&exclude_to=90
token (必須) : APIからダウンロードしたトークン。
include_from(任意): データを検索する開始時刻(unixtime)。
include_to(任意): データを検索する終了時刻(unixtime)。
include_fromのみを指定した場合、include_fromからinclude_from + 3600秒を検索対象とする。
include_toのみを指定した場合、include_to - 3600秒からinclude_toまでを検索対象とする。
include_fromとinclude_toを両方省略した場合、直近の1時間を検索対象とする。
exclude_from(任意): データ検索対象から除外する開始時刻(unixtime)。
exclude_to(任意): データ検索対象から除外する開始時刻(unixtime)。
exclude_fromのみを指定した場合、exclude_from以降の時点全てが検索対象外となる。
exclude_toのみを指定した場合、exclude_toまで時点全てが検索対象外となる。
exclude_fromとexclude_toを両方指定した場合、exclude_fromとexclude_toに囲まれた時点が検索対象外となる。
また、以下の制約が存在する。
Dashboardは、 ELmote® CLOUDが保存するデータをグラフなどで可視化するサービスである。
コンテンツを追加する場合、画面右上部の「Locked」と表示されているアイコンをクリックしてから、左上の点線で囲まれたボタンをクリックする。
追加できるコンテンツは、
の3種類である。
Latest Value Monitorでは、
を指定する。
History Value Monitorでは、
を指定する。
Parser Editorでは、
を指定する。また、データに対するParserを定義する。
【重要】 Parserは、以下の制約を満たす必要がある。
function(event) {
//
// write your parser ...
//
const device_id = event.end_device_ids.device_id;
const decoded_payload = event.uplink_message.decoded_payload;
const latitude = decoded_payload.latitude;
//
// Parser must return key-value object.
//
const ret = {'latitude': latitude};
return ret;
}
Note: Latest Value MonitorやHistory Value Monitorが期待したように表示されない場合、Parserの定義が適切でない可能性がある。Parserは上述の制約があるので、ELmote® CLOUDに保存したデータ構造を確認し、適宜修正いただきたい。
一度保存したコンテンツの設定は、後から編集することができる。また、表示位置の変更、背景色の変更が可能である。これらは、Lockを解除した状態であれば、各コンテンツの右上に表示されるアイコンから設定できる。
Alertは、設定した条件に併せて外部サービスに警報を出すサービスである。
まず、webインタフェースで警報の条件、発報先を設定する。設定後にIDが払い出されるので、これを記録する。
外部からデータを送信する際、ヘッダーに「alert_setting」という項目を追加し、値にIDを入れる。例えばThe Things Stackなら以下のようになる。
届いたデータが、警報条件(JavaScript)を満たすかどうかをチェックする。この時、
オブジェクトをreturnした場合、警報条件を満たしたと判断し、発報先にオブジェクトをJSON文字列として送信する。
falseをreturnした場合、警報条件を満たさなかったと判断する。
例えば、以下は単に受け取ったデータを警報として発報する例である(Slack)。
以下はデータの一部で条件付けする例である。
発報先は、webインタフェースの「URL」で指定する。
発報の際に、追加で必要なheaderが存在する場合は、webインタフェースの「header」に指定する。
以上の仕組みにより、次の制約が発生する:
発報の条件は、 ELmote® CLOUDに届いた1件のデータに対してのみが条件付け可能である。例えば、1時間の間に届いたすべてのデータに対する何らかの条件付け(合計が閾値以下である、など)といった発報条件は、サポートされていない。
発報のタイミングは、ELmote® CLOUDに届いた時点である。例えば、3時間データが届いていないことに対する条件付けといった発報条件は、サポートされていない。