この例では、Cepheus-CEP と Cepheus-Broker が IoT Agent (デバイスのプロトコル・アダプタ)とどのように対話するかを示します。

これは、シャッターを閉じる例に基づいています。

しかし、今回はクローズシャッターコマンドが IoT Agent に送信されます。この例では、モックを使用して IoT Agent をシミュレートします。

アーキテクチャ

この例では、NGSI センサは IoT エージェントによる温度データを Cepheus-Broker に送信します。Cepheus-CEP はこのデータのために Broker にサブスクライブするため、新しいデータが受信されたときに通知を受けます。IoT Agent は Broker にシャッター・データを登録します。Cepheus-CEP は、Cepheus-Broker にトリガーされるとシャッター状態を送信します。Cepheus-Broker はシャッター・データを IoT Agent に転送します。

example5

これを次の図に示します :

example5

灰色の部分はリファレンス・アーキテクチャの一部であり、この例では使用されません。

CEPの設定

設定は2番目の例(2_CloseShutters)と似ています。これにより、ルームのコンテキスト・エンティティを1つ以上のコンテキスト・プロバイダ(ここでは Cepheus-Broker インスタンス)に登録するように CEP に指示します。

"in": [
    {
        "id":"Room.*",      # Pattern is used to subscribe to provider to all Room1, Room2, ..., RoomN
        "type":"Room",     # The type to subscribe
        "isPattern":true,  # Pattern match the id
        "providers":[ "http://localhost:8081" ],  # The URL of the source of the input
        "attributes":[
            { "name":"temperature", "type":"double" },
            { "name":"floor", "type":"string" },
            { "name":"shutter", "type":"string" }  # Id of the Shutter associated to the Room
        ]
    }
]

out セクションも第2の例と似ていますが、このコンテキスト・エンティティの更新をCepheus Brokerに送信する brokers セクションを追加します。

"out":[
    {
        "id":"ShutterX",
        "type":"Shutter",
        "brokers":[
                {
                  "url":"http://localhost:8081"
                }
              ],
        "attributes":[
            { "name":"status", "type":"string" }
        ]
    }
]

config.json は、完全な設定のセットアップを持っています。

セットアップをテスト

run.sh ファイルを端末で実行して、Cepheus CEP のログをチェックすることで、CEP に送信されたルームの温度と CEP がイベントに反応することを確認できます。

最初の端末で、mock-iotagent を起動します :

cd doc/examples/mocks/mock-iotagent
mvn spring-boot:run

デフォルトの設定では、マシン上の port :8083で起動する必要があります。

第2ターミナルでは、リモート・ブローカなしでCepheus-Brokerを起動します :

    cd cepheus-broker
    mvn spring-boot:run -Dremote.url=

デフォルトの設定では、マシン上の port :8081で起動する必要があります。

3番目の端末で、Cepheus-CEPを起動します :

cd cepheus-cep
mvn spring-boot:run

デフォルト設定では、マシン上の port :8080で起動する必要があります。

今度は別のターミナルで、run.sh スクリプトを起動します :

cd doc/examples/5_TemperatureThreshold
sh run.sh

このスクリプトはまず config.json ファイルを Cepheus-CEP に送信します。シャッターイベントのための mock-iotagent への登録を開始する。その後、mock-iotagent に温度更新を送信し続けます。

CEP を開始した端末に戻ります。Cepheus-Broker からログされた "EventIn"という温度が表示されます。

数秒後、"EventOut" ログには、各シャッターの状態をトリガする CEP が表示されます。これらの "EventOut" は Cepheus-Broker によって mock-iotagent に送信されます。

mock-iotagent ログで、シャッターのために受け取ったオープン・コマンドまたはクローズ・コマンドを見ることができます。

次のステップ

Orion から IoT Agent のような NGSI デバイスにコンテキスト・エンティティのクエリを送信する方法を学びます。