複雑なイベント処理 API を使用すると、IoTデバイスのデータを分析してアクションをトリガーすることができます。

次のアクションタイプを使用できます :

  • update : エンティティの属性を更新
  • sms : SMSを送信
  • email : メールを送信
  • post : HTTP POSTを実行
  • twitter : つぶやきを送信

この API を使用すると、たとえば、データ値のしきい値または特定のデバイスからの更新の欠如に基づいて電子メール通知をトリガーするルールを定義することができます。

これらのルールは、EPL 文として表現されます。EPL は、使用されるイベントを処理するためのエンジンである Esper のドメイン言語です。この EPL 文は、条件を満たすと着信イベントと一致し、関連付けられたアクションを実行するために FIWARE IoT Stack に返す "action-event" を生成します。

ルールの有効化

IoT デバイスのどのデータを FIWARE IoT Stack でルールに従って評価するかを選択する必要があります。

これを行うには、Data API のエンティティ属性を選択する必要があります。次の例では、温度属性が選択されます :

POST /v1/subscribeContext HTTP/1.1
Host: test.ttcloud.net:1026
Accept: application/json
Content-Type: application/json
Fiware-Service: {{Fiware-Service}} 
Fiware-ServicePath: {{Fiware-ServicePath}} 
X-Auth-Token: {{user-token}}

{
    "entities": [
        {"type": "device",
        "isPattern": "false",
        "id": "mydevice"
        }
    ],
    "reference": "http://test.ttcloud.net:9090/notices", 
    "duration": "P1Y",
    "notifyConditions": [
           {
                "type": "ONCHANGE", 
                "condValues": ["TimeInstant" ]
} ],
"throttling": "PT1S" }

FIWARE コンポーネントに精通している場合、このリクエストでは、Data API のサブスクリプション操作を使用して、デバイスから複合イベント処理 APIを提供する FIWARE CEP コンポーネントに新しいデータを通知しています。

電子メールを送信するルールを作成

データの処理を有効にしたら、次のようにアクションをトリガーするルールを作成できます :

POST /rules HTTP/1.1
Host: test.ttcloud.net:9090
Accept: application/json
Content-Type: application/json
Fiware-Service: {{Fiware-Service}} 
Fiware-ServicePath: {{Fiware-ServicePath}} 
X-Auth-Token: {{user-token}}

{
   "name":"temperature-rule",
   "text":"select *,\"temperature-rule\" as ruleName from pattern [every ev=iotEvent(cast(cast(ev.temperature?,String),float)>40.0)]",
    "action": {
        "type": "email",
        "template": "Alert! temperature is now ${ev.temperature}.",
        "parameters": {
            "to": "someone@yourclient.com",
            "from": "notificactions@yourdomain.com"
            "subject": "Alert! high pression detected"
        }
    }
}

HTTP POSTを送信するルールを作成

テンプレートから構築されたボディを送信するために指定された URL に HTTP POST をトリガーすることもできます :

POST /rules HTTP/1.1
Host: test.ttcloud.net:9090
Accept: application/json
Content-Type: application/json
Fiware-Service: {{Fiware-Service}} 
Fiware-ServicePath: {{Fiware-ServicePath}} 
X-Auth-Token: {{user-token}}

{
   "name":"temperature-rule",
   "text":"select *,\"temperature-rule\" as ruleName from pattern [every ev=iotEvent(cast(cast(ev.temperature?,String),float)>40.0)]",
    "action": {
        "type": "post",
        "template": "Alert! temperature is now ${ev.temperature}.",
        "parameters": {
            "url": "http://yourcustomer.com"
        }
    }

Tweetを送信するルールを作成

テンプレートフィールドからのテキストビルドを使用して、アカウントからツイートを送信することができます。

Twitter アプリを作成し、OAuth の資格情報を取得する必要があります。

POST /rules HTTP/1.1
Host: test.ttcloud.net:9090
Accept: application/json
Content-Type: application/json
Fiware-Service: {{Fiware-Service}} 
Fiware-ServicePath: {{Fiware-ServicePath}} 
X-Auth-Token: {{user-token}}

{
    "name":"temperature-rule",
    "text":"select *,\"temperature-rule\" as ruleName from pattern [every ev=iotEvent(cast(cast(ev.temperature?,String),float)>40.0)]",
    "action": {
        "type": "twitter",
        "template": "Alert! temperature is now ${ev.temperature}.",
        "parameters": {
          "consumer_key": "xvz1evFS4wEEPTGEFPHBog",
          "consumer_secret": "L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg",
          "access_token_key": "xvz1evFS4wEEPTGEFPHBog",
          "access_token_secret": "L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg"
        }
    }
}

詳細情報

CEP の機能、リファレンスAPIドキュメント、ソースコードを提供するFIWAREコンポーネントに関する詳細情報を入手できます。