REST API からのルールの作成

ルールの作成と設定には、 HTTP REST APIというツールを使用できます。 これらのルールを使用して、イベント・ドリブン通知を送信したり、アクションをトリガーしたりします。

注: 8.8 以降で作成されたデバイスは、論理インターフェイスも物理インターフェイスも使用しない。

HTTP REST API を使用するには、以下の情報を知っておく必要があります。


  • ツールに登録すると、あなたのアカウントに固有の6文字の識別子である組織IDが与えられます。
  • API キーと認証トークン。
    ダッシュボードを使用して、API キーと認証トークンを生成できます。 API キーおよびトークンについて詳しくは、「API キー接続」を参照してください。
  • rule.To 論理インターフェース ID を検索するには、以下の HTTP REST API を使用します。 GET /draft/logicalinterfaces

次の例は、CURL を使用して論理インターフェースに関する情報を取得する方法を示しています。

curl --request GET \
   --url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/logicalinterfaces \
   --user '{API Key}:{authorization token}'

この GET メソッドに対する応答の例を以下に示します。

{
    "results": [
        {
            "id": "5846ed076522050001db0e12",
            "name": "Thermometer Interface",
            "alias": "IThermometer",
            "description": "Thermometer Logical Interface",
            "schemaId": "5846ec826522050001db0e11",
            "version": "draft",
            "created": "2017-06-16T15:41:49Z",
            "createdBy": "a-8x7nmj-9iqt56kfil",
            "updated": "2017-06-16T15:41:49Z",
            "updatedBy": "a-8x7nmj-9iqt56kfil",
            "refs": {
                "schema": "/api/v0002/draft/schemas/5846ec826522050001db0e11",
                "rules": "/api/v0002/draft/logicalinterfaces/5846ed076522050001db0e12/rules"
            }
        }
    ],
    "meta": {
        "total_rows": 1
    }
}

この例では、論理インターフェース ID は 5846ed076522050001db0e12です。

ルールの構成 - シナリオ

このシナリオでは、シナリオ: 共通論理インターフェースの構成で作成された構成に基づいて、2 つのルールを作成する方法を説明します。

最初のルールは tempRuleMaxと呼ばれ、デバイスの状態の温度プロパティが摂氏44度を超えるような温度イベントをツールが受信したときにトリガーされる。 2つ目のルールは tempRuleMinと呼ばれ、デバイス状態の温度プロパティが摂氏10度未満になる温度イベントをツールが受信したときにトリガーされる。

ただし、ルールの条件では、温度しきい値をハードコーディングしないようにします。ハードコーディングすると、デバイス・インスタンスごとにしきい値を変更できなくなるためです。 その代わりに、温度しきい値はデバイス・メタデータ上のプロパティとして定義され、ルール条件は $instance 変数を使用してこれらのプロパティを参照します。 このシナリオでは、シナリオ: 共通論理インターフェースの構成 の一部として作成された tSensor デバイスを使用します。 このデバイスは、摂氏で測定した温度イベントをパブリッシュします。 以下のメタデータは、tSensor デバイス・インスタンスに関連付けられています。

{
    "tempThresholdMax": 44,
    "tempThresholdMin": 10
}

ヒント: メタデータは、ダッシュボードの デバイス情報 ページから作成された後、デバイス・インスタンスに追加または更新できます。

2 つのルールを構成する手順:

  1. ルールに関連付ける論理インターフェースを選択します。 このシナリオでは、ID 5846ed076522050001db0e12 で論理インターフェースを使用しています。
  2. 以下の API を使用して、論理インターフェースに関連付けられている現行規則を表示します。
    GET /draft/logicalinterfaces/5846ed076522050001db0e12/rules
    論理インターフェース 5846ed076522050001db0e12に現在関連付けられている規則がないため、空のリストが返されます。
  3. 次のAPIを使用して、 tempRuleMax 次のAPIを使用して追加します。
    POST /draft/logicalinterfaces/5846ed076522050001db0e12/rules
    リクエストの本文に、ルール名 、条件パラメータ通知戦略パラメータを含めます
     {  
         "name" : "tempRuleMax",
         "condition" : "$state.temperature > $instance.metadata.tempThresholdMax",
         "notificationStrategy": {
             "when": "every-time"
         }
     }  
    この POST メソッドに対する応答の例を以下に示します。
     {  
         "name": "tempRuleMax",  
         "id": "5a71991e59080100328710e9",  
         "logicalInterfaceId": "5846ed076522050001db0e12",  
         "condition": "$state.temperature > $instance.metadata.tempThresholdMax",
         "notificationStrategy": {
             "when": "every-time"
         },  
         "version": "draft",  
         "created": "2018-01-31T10:23:26Z",  
         "createdBy": "a-7p9t2v-zsrcacabpa",  
         "updated": "2018-01-31T10:23:26Z",
         "updatedBy": "a-7p9t2v-zsrcacabpa",
         "refs": {  
             "logicalInterface": "/api/v0002/draft/logicalinterfaces/5846ed076522050001db0e12"  
         }
     }  
    デバイスの状態の temperature プロパティーが、 tSensor デバイス・インスタンスのメタデータの tempThresholdMax プロパティーで指定されている値を上回ると、tempRuleMax ルールが起動されます。 この例では、値は摂氏 44 度です。
  4. 次のAPIを使用して、 tempRuleMin 次のAPIを使用して追加します。
    POST /draft/logicalinterfaces/5846ed076522050001db0e12/rules
    リクエストの本文に、ルール名 、条件パラメータ通知戦略パラメータを含めます
     {  
         "name" : "tempRuleMin",
         "condition" : "$state.temperature < $instance.metadata.tempThresholdMin",
         "notificationStrategy": {
             "when": "every-time"
         }
     }  
    この POST メソッドに対する応答の例を以下に示します。
     {  
         "name": "tempRuleMin",  
         "id": "5a71991e59080100328710e10",  
         "logicalInterfaceId": "5846ed076522050001db0e12",  
         "condition": "$state.temperature < $instance.metadata.tempThresholdMin",
         "notificationStrategy": {
             "when": "every-time"
         },  
         "version": "draft",  
         "created": "2018-01-31T10:23:26Z",  
         "createdBy": "a-7p9t2v-zsrcacabpa",  
         "updated": "2018-01-31T10:23:26Z",  
         "updatedBy": "a-7p9t2v-zsrcacabpa",
         "refs": {  
             "logicalInterface": "/api/v0002/draft/logicalinterfaces/5846ed076522050001db0e12"  
         }
     }  
    デバイスの状態の temperature プロパティーが、 tSensor デバイス・インスタンスのメタデータの tempThresholdMin プロパティーで指定されている値を下回ると、tempRuleMin ルールが起動されます。 この例では、値は摂氏 10 度です。
  5. activate-configuration 操作を使用して、構成を検証およびアクティブ化します。
    ルールを追加した後に構成をアクティブ化する必要があります。これは、ルールを追加するアクションによってドラフト・モデルが変更されるためです。 アクティブ化-構成 操作は、デバイス・タイプまたは論理インターフェースのドラフト・バージョンに対して実行できます。 以下の例は、デバイス・タイプのドラフト・バージョンに対して、アクティブ化-構成 操作が実行される際の PATCH 要求を示しています。
    PATCH /draft/device/types/{typeId}
    ここで、PATCH 本文のペイロードには、以下の内容が含まれます。
     {
         "operation": "activate-configuration"
     }
  6. 以下の API を使用して、アクティブな論理インターフェース上の現行ルールを表示します。
    GET /logicalinterfaces/5846ed076522050001db0e12/rules
    以下の例は、GET メソッドへの応答を示しています。
     [
         {
             "name": "tempRuleMax",  
             "id": "5a71991e59080100328710e9",
             "logicalInterfaceId": "5846ed076522050001db0e12",
             "condition": "$state.temperature > $instance.metadata.tempThresholdMax",
             "notificationStrategy": {
                 "when": "every-time"
             },  
             "version": "active",
             "created": "2018-01-31T10:23:26Z",
             "createdBy": "a-7p9t2v-zsrcacabpa",
             "updated": "2018-01-31T10:23:26Z",
             "updatedBy": "a-7p9t2v-zsrcacabpa",
             "refs": {
                 "logicalInterface": "/api/v0002/logicalinterfaces/5846ed076522050001db0e12"
             }
         },
         {
             "name": "tempRuleMin",  
             "id": "5a71561e59055500328710e10",
             "logicalInterfaceId": "5846ed076522050001db0e12",
             "condition": "$state.temperature < $instance.metadata.tempThresholdMin",
             "notificationStrategy": {
                 "when": "every-time"
             },  
             "version": "active",
             "created": "2018-01-31T10:23:26Z",
             "createdBy": "a-7p9t2v-zsrcacabpa",
             "updated": "2018-01-31T10:23:26Z",
             "updatedBy": "a-7p9t2v-zsrcacabpa",
             "refs": {
                 "logicalInterface": "/api/v0002/logicalinterfaces/5846ed076522050001db0e12"
             }
         }
     ]  
    APIの使用方法の詳細については、ローカルのAPIドキュメントの[ tool HTTP REST API]を参照してください。 ローカル・ドキュメントへのアクセスについては、 APIを参照のこと。
  7. ルール通知の取り込み これで、 アクション をセットアップしたり、ルールの出力をコンシュームするように外部アプリケーションを構成したりできます。 詳しくは、 ルール通知のコンシュームを参照してください。