- 印刷する
- PDF
ルールの作成および管理
- 印刷する
- PDF
Classic/VPC環境で利用できます。
IoT機器と Cloud IoT Coreを接続する準備ができたら、IoT機器から受信したデータの処理方法を定義するルールを作成する必要があります。ルール作成時に IoT機器から Cloud IoT Coreに送信されたメッセージの内容のうち、事前に設定された条件に一致するかを検査する「ルールクエリ」と、条件に合致すれば事前に定義された動作を実行する「アクション」を指定する必要があります。例えば、「メッセージに温度値が80度以上の場合(条件)、ユーザーに Push通知を送信(アクション)」のようなルールの作成ができます。ルール作成時にルールクエリとアクションを必ず指定する必要があります。
Rulesの画面
項目 | 説明 |
---|---|
① ルールの作成 | ルールを作成できるボタン |
② Rule Engine Status | ルールを処理するエンジンの動作状態 |
③ 機能ボタン | |
④ ルールリスト | 作成したルールリスト |
⑤ 検索 | ルール名、ルール説明、ルールクエリで検索可 |
ルールの作成
ルールを作成する方法は次の通りです。
- NAVERクラウドプラットフォームコンソールで Services > Internet of Things > Cloud IoT Core > Rulesをクリックします。
- [ルールの作成] ボタンをクリックします。
- Rule作成画面が表示されたら、ルール名とルール説明を入力します。
- ルールクエリを入力します。
- ルールクエリは、メッセージを検査できる条件のことです。
- ルールクエリの作成方法は、ルールクエリの作成をご参照ください。
- ルールクエリの文法チェックを実行するために、 [クエリの検証] ボタンをクリックします。
- クエリの検証が完了すると、画面下部にアクションの作成画面が表示されます。
- アクションの種類を選択し、 [追加] ボタンをクリックします。
- アクションの説明については、アクションの作成をご参照ください。
- エラーアクションを作成します。
- エラーアクションを作成する方法は、エラーアクションの作成をご参照ください。
- [作成] ボタンをクリックします。
- ルール名は英文字、数字、-(ハイフン), _(下線)が使用でき、128文字まで入力できます。
- ルール説明は、255文字まで入力できます。
- ルール名は重複して登録できません。
- ルールクエリは10,000文字まで入力できます。
- ルールに引き込まれるメッセージは、5Kbyte(UTF-8エンコーディング)を超えることはできず、必ず JSONオブジェクトである必要があります。JSON Listはサポートしていません。
- ルール処理で含まれるメッセージは、毎秒10,000個を超えることができません。大量のメッセージがインポートされると、処理が遅れる可能性があります。
- メッセージのルール処理、アクションの実行手順は1秒以内で、順序は保障しません。
- 処理遅延時間は平均1秒で、ルールの数、クエリの種類、アクションの種類によって遅延時間が追加で発生することがあります。
ルールクエリの作成
IoT機器から送信されたメッセージの内容に、特定のルールクエリを作成します。ルールクエリを作成するには、基本的な SQL構文を理解している必要があります。また、SELECT構文だけをサポーしているため、SELECT - FROM - WHEREの順に作成する必要があります。
ルールクエリ作成のルールは、次の通りです。
SELECT [<トピック Alias>.<メッセージ JSON Key1>, <トピック Alias>.<メッセージ JSON Key2>, ...] FROM "[トピック]" AS [トピック Alias] WHERE [条件]
- ルールクエリを作成するルールについての詳細は、ルールクエリの作成ルールをご参照ください。
- ルールクエリの埋め込み関数についての詳細は、ルールクエリの埋め込み関数をご参照ください。
アクションの作成
アクションは、メッセージがルールクエリに適合している場合に実行する動作です。アクションはルールクエリの検証が完了した後に作成でき、各ルールには少なくとも1つ、最大5つのアクションを設定できます。Cloud IoT Coreでは「指定されたトピックで再発行」、「Cloud Functionsへデータ転送」機能をサポートします。
指定したトピックに再発行
「指定したトピックに再発行」アクションは、IoT機器で発行される MQTTメッセージを、別の名前のトピックに再発行するときに使用します。例えば、IoT機器が発行するメッセージのうち、ユーザーが事前に定義したルールクエリにマッチングされたデータが検出された場合、「alert」というトピックでメッセージを再発行し、「alert」再発行メッセージを受信した機器では警告音が鳴るように設定ができます。
ルールの作成を参照して、ルールクエリを作成します。
アクションの種類を「指定したトピックで再発行」として選択し、 [追加] ボタンをクリックします。
ポップアップウィンドウが表示されたら、「再発行トピック」にメッセージを発行する新しいトピック名を入力します。
[完了] ボタンをクリックします。
ルールが追加されているか確認し、 [適用] ボタンをクリックします。
- トピック名には英文字、数字、空白、!@$%^&()_-={[}]?></`'を入力できます。
- トピック名は最大255文字まで入力できます。
- トピック名は重複して使用できません。
- メッセージが無制限に再発行されるのを防ぐために、再発行トピック名は受信したメッセージと同じトピック名での作成はできません。したがって、MQTTの再発行アクションのトピックは、ルールクエリの FROM節トピックに含まれるように設定することができません。
Cloud Functionsにデータを転送
Cloud Functionsにデータを転送して、追加アクションを実行するには、Cloud Functionsのご利用の申し込み完了後に、トリガーを作成する必要があります。IoT機器から Cloud IoT Coreに転送したメッセージを分析し、先に定義したルールクエリに一致する場合、Cloud Functionsに定義したアクションを実行する仕組みです。
- ルールの作成を参照して、ルールクエリを作成します。
- アクションの種類を「Cloud Functionsへデータ転送」として選択し、 [追加] ボタンをクリックします。
- ポップアップウィンドウが表示されたら Cloud Functionsに作成されたトリガーを選択します。
- トリガーを作成するには、 [Cloud Functionsトリガーの作成] ボタンをクリックして作成できます。
- 連携するトリガーを選択します。
- オプションとして一定時間(5秒~600秒)データをマージ Cloud Functionsトリガーを実行するには、バッチ時間を設定します。
バッチ時間の設定に応じて Cloud Functionsトリガーの実行回数を減らし、メッセージも大量に処理できます。
バッチを設定する時、Cloud Functionsトリガーパラメータに伝達されるデータのフォーマットは次の通りです。
- "messages"JSON Arrayフィールドを持つ JSON Object
- Cloud IoT Coreに収集されたデータを JSON Array形でマージ
例)
{ "messages": [ { "deviceId": "1", "temperature": 12.6, "eventTime": 1606286653000 }, { "deviceId": "1", "temperature": 12.5, "eventTime": 1606286658000 }, { "deviceId": "1", "temperature": 12.3, "eventTime": 1606286693000 } ] }
- [追加] ボタンをクリックします。
バッチに設定する場合、Cloud Functionsの実行は1回で1回の呼び出し課金になりますが、Cloud IoTアクション実行料金は実際にマージされたメッセージ数を基準に課金されます。例えば、1分のバッチ時間の間、100個のメッセージがマージされた場合、Cloud IoT Coreアクションの実行は100件で課金されます。
- Cloud Functionsに登録されたトリガーのみ使用できます。実際にロジックを実行する Cloud Functionsアクションを作成して、Cloud Functionsトリガーに接続することが必須で、これを行えば Cloud Functionsアクションを実行できます。
- Cloud Functionsのトリガーのうち、Cloud IoTトリガータイプのトリガーのみ登録できます。
- Cloud Functionsの実行エラーが発生すると、Cloud IoT Coreでメッセージ処理が遅れることがあります。
- バッチ時間は最低 5秒から最大 600秒(10分)以内で設定できます。
- Cloud Functionsアクションに伝達されるパラメータサイズは1MBに制限されます。バッチ時間内に該当サイズを超える場合、Cloud Functionsアクションをすぐに実行します。
- Cloud IoT Coreのアップデート時に接続が途切れることがあります。接続が途切れた場合は、再度接続する必要があります。
- MQTT接続の特性上、ネットワーク接続が安定せず接続が途切れることがあります。接続が途切れた場合は、再度接続する必要があります。
エラーアクションの作成
エラーアクションは、ユーザーが定義したルールのクエリが失敗したり、アクションの実行が失敗した場合に実行されるアクションです。ルールごとに最大1個のエラーアクションを作成できます。例えば、「Cloud Functionsへデータ転送」アクションをリクエストする過程で Cloud Functionsへのリクエストが失敗した場合、アクションの失敗を認識し、「エラーアクション」に設定されたアクションを実行します。ただし、他のサービスへの要請過程で発生するエラーではなく、他のサービスの実行結果に対するエラー処理はサポートしていません。
エラーアクションを作成する方法は次の通りです。
- ルールの作成を参照して、ルールクエリを作成します。
- アクションの作成を参照して、アクション情報を設定します。
- エラーアクション修正の設定の展開を選択します。
- 指定したトピックで再発行または Cloud Functionsでデータ転送を選択し、 [追加] ボタンをクリックします。
- エラーアクションの作成方法は、アクションの作成方法と同じです。
エラーアクションのリスポンス
エラーアクションは、JSONタイプで提供されます。 errorsListは、メッセージ一つが複数のアクションを実行するため、複数のアクションの中にエラーが発生した場合、すべてのアクションのエラーに関するリストです。クエリでエラーが発生した場合、errorTypeはRULE_QUERY
で表示され、actionName
フィールドはありません。
例)
{
"ruleName":"TriggerSensor",
"payload":{
"temp":50,
"high":"top"
},
"topic" : "myhome/room1",
"errorsList":[
{ "errorType" : "CLOUD_FUNCTIONS",
"actionName" : "aggregate",
"message":"Function id invalid",
"returnCode":621
}, ...
]
}
- Cloud IoT Coreでは、Cloud Functions実行の成功、失敗のみを確認し、Cloud Functionでアクションを実行した結果は Cloud Functionsコンソールで確認できます。
- エラーアクションでエラーが発生した場合は、他のエラーアクションを呼び出すことはできません。
ルールの有効および無効
ルールの使用を一時停止できます。ルールを無効にすると、そのルールクエリとアクションが動作しません。ルール無効にまたは有効にする方法は次の通りです。
- NAVERクラウドプラットフォームコンソールで Services > Internet of Things > Cloud IoT Core > Rulesをクリックします。
- ルールリストで無効にするルールをクリックし、 [無効] ボタンをクリックします。
- 無効にしたルールを再び有効にするには、 [有効] ボタンをクリックします。
ルールの削除
ユーザーが指定したルールがこれ以上必要ない場合は、ルールを削除できます。ルールを削除する方法は次の通りです。
- NAVERクラウドプラットフォームコンソールで Services > Internet of Things > Cloud IoT Core > Rulesをクリックします。
- 削除するルールを選択し、 [削除] ボタンをクリックします。