モジュールの概要
Receiverは、IoTデバイス(HTTP POST、MQTTサーバー、Websocketsサーバー)からデータを受信し、最終的に3rdパーティが発行したデータをサブスクライブします(MQTTサブスクライブ、Websocketsサブスクライブ)。認証とメッセージ検証のメカニズムを提供して、データのセキュリティと整合性を確保します。
Receiverが動作可能ないくつかのモードがあります(エンドポイントタイプ):
- MQTTサーバー - モジュールはMQTTブローカーとして実行されているため、デバイスはメッセージをサブスクライブまたは発行できます
- MQTT consumer - モジュールは既存のMQTTブローカーをサブスクライブし、そこからメッセージを受信します
- HTTP POST consumer - モジュールは、デバイスからのデータを含むHTTP POSTリクエストを受け入れます
- UDPサーバー - モジュールは、デバイスからのデータを含むUDPデータグラムを受け入れます
- Telnetサーバー/クライアント - モジュールはtelnetサーバーまたはtelnetクライアントとして実行されています
- Websocketsサーバー/クライアント - モジュールはWebsocketsサーバーまたはクライアントとして実行されています
- カスタム - モジュールはカスタム実装を使用しています
モジュールのライフサイクル
モジュールがデータを受信する方法に関係なく、メッセージがReceiver側に到着すると、次のプロセスが適用されます:
- メッセージはReceiverによって受信されます
- 認証フローが実行されます
- メッセージ形式が決定されます(XML、JSON、bytesなど)
- メッセージは正規化された内部形式に変換されます
- メッセージルールがチェックされます
- メッセージルールチェックを通過すると、メッセージは内部メモリに格納され、値はAudit(監査)モジュールに伝播されます(最後に受信したメッセージとして)
- 渡されない場合、メッセージは拒否/無視されます
認証
クライアントは、次の方法を使用して認証できます:
- basic/digest - ユーザー名/パスワードベースの認証
- client SSL certificate - クライアントは自身を認証するためにSSL証明書を提供します
- source IP - 特定のIPアドレスからのリクエストのみが許可されます
メッセージルール
Receiverによって収集された各メッセージは、構成で定義されたメッセージコンテンツルールを評価するReceiverのメッセージプロセッサによって処理されます(receivers[].messageRules を参照)。メッセージルールには次の3つのタイプがあります:
- Content constraint - module checks, whether the message contains specific contentモジュールは、メッセージに特定のコンテンツが含まれているかどうかをチェックします
- Structure constraint - module checks, whether the message contains specific structureモジュールは、メッセージに特定の構造が含まれているかどうかをチェックします
- Device ID filter - module checks, whether the device ID is on whitelist or notモジュールは、device IDがホワイトリストにあるかどうかをチェックします
メッセージルールを通過しない場合、メッセージは拒否されます。それ以外の場合、Receiverはそれらを内部ストレージに格納します。Messages are rejected, if they don't pass message rules. Otherwise Receiver stores them in it's internal storage.
ロール
このモジュールは次の役割をサポートします:
Module | Role | 許可された操作 |
---|
Receiver | SENSOR | Allows to send data to collector コレクターにデータを送信できます (HTTP POST, MQTT_PUBLISH, ...) |
Receiver | VIEWER | GET /status, GET /data |
Receiver | EDITOR | GET /data, GET/status, DELETE /data |
モジュールのステータス
このモジュールは、次のいずれかのステータスになります:
Verticle | Status | 説明 |
---|
Receiver | UP | Module is up and running. It operates without any specific limitations.モジュールは稼働しています。特定の制限なしで動作します。 |
PAUSED | Module is paused and not receiving any data. Request to モジュールは一時停止しており、データを受信していません。"GET /" ends with response code 405.へのリクエストは、レスポンスコード405で終了します。 |
APIエンドポイント
このモジュールは、次のHTTPエンドポイントを提供します:
Path | Method | 説明 | URLパラメーター | 例 |
---|
/ | GETReturns | plain text with ECHO message (should be used in load balancer to detect UP/DOWN status) ECHOメッセージ付きのプレーンテキストを返します(UP/DOWNステータスを検出するためにロードバランサーで使用する必要があります) |
| https://localhost:8001/ |
/status | GET | Returns JSON object that contains internal state of audit verticle (e.g. total count of sensors) |
| https://localhost:8001/status |
/config | POST | Sets the configuration to the module. ADMIN role is required. | - POST body content = config in JSON format
| https://localhost:8001/config |
/reload | POST | Forces reloading configuration of module. ADMIN role is required. | | https://localhost:8001/reload |
/data | GET | Returns JSON array that contains data stored in receiver's internal memory | - order = "ASC" / "DESC" (default: "ASC")
- start = from timestamp (default: 0)
- stop = to timestamp
- receiver_id = receiver identification
- sensor_id = sensor identification
- limit = page size (default: 100)
| https://localhost:8001/data |
/data | DELETE | Deletes specified data from receiver's internal memory. Receiverの内部メモリから指定されたデータを削除します | - order = "ASC" / "DESC" (default: "ASC")
- start = from timestamp (default: 0)
- stop = to timestamp
- receiver_id = receiver identification
- sensor_id = sensor identification
- limit = page size (default: 100)
| https://localhost:8001/data |
/pause | GET | Sets status PAUSED for receiver verticle immediately. Returns response from Receiverバーティクルのステータスを直ちにPAUSEDに設定します。"GET /status" endpoint エンドポイントから応答を返します(see above上記を参照) |
| https://localhost:8001/pause |
/resume | GET | Sets status UP for receiver verticle immediately. Returns response from Receiverバーティクルのステータスを直ちにUPに設定します。"GET /status" endpoint エンドポイントから応答を返します(see above上記を参照) |
| https://localhost:8001/resume |
/logout | GET | Executes logout of currently logged in user 現在ログインしているユーザーのログアウトを実行します |
| https://localhost:8001/logout |