この例は、Cepheus-CEP と Cepheus-Broker が Orion とどのように対話するかを示しています。

ルームとフロアの例に基づいています。

温度データは常に Cepheus-Broker を経由して Cepheus-CEP と Orion (リモート・ブローカ) に転送されますが、今度は Cepheus-CEP が各フロアの温度平均を Orion に送信します。この例では、モックを使用して Orion をシミュレートします。

アーキテクチャ

この例では、NGSI センサ (run.sh スクリプトでシミュレート) が温度データを Cepheus-Broker に送信します。Cepheus-CEP はこのデータのために Broker にサブスクライブするため、新しいデータが受信されたときに通知を受けます。Cepheus-CEP は温度平均を Orion に送信します。

example4

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

example4

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

CEPの設定

設定は第3の実施例に似ています。これは、ルームのコンテキスト・エンティティを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" }
        ]
    }
]

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

"out":[
    {
        "id":"Floor1",
        "type":"Floor",
        "attributes":[
            { "name":"temperature", "type":"double" }
        ],
        "brokers": [
            { "url":"http://localhost:8082" }
        ]
    }
]

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

この設定では、平均時間がログにすぐに表示されるように、出力時間を10秒に短縮しました。

セットアップのテスト

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

最初の端末で、mock-orion を起動します。マシン上のデフォルトの port :8082 です。

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

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

cd cepheus-broker
mvn spring-boot:run

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

次に、第3の端末で、Cepheus-CEP を起動します :

cd cepheus-cep
mvn spring-boot:run

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

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

cd doc/examples/4_CepAndBrokerAndOrion
sh run.sh

このスクリプトはまず config.json ファイルを Cepheus-CEP に送信します。

Cepheus-CEP は、Cepheus-Broker からルームのコンテキスト・エンティティの通知を受け取るための subscribeContext リクエストを送信します。

その後、スクリプトは Cepheus-CEP に通知を送信する Cepheus-Broker に温度の更新を送信し、更新をMock-Orion に転送します。2つのアプリケーションのログでこれらを送信および転送できます。

LB を最初に起動したターミナルに戻り、CEP の後に戻ります。CEP ログに記録された "EventIn" という温度が表示されます。

数秒後、 "EventOut" ログに各フロアの平均温度をトリガする CEP が表示されます。CEP は、EventOut 更新をリモート NGSI ブローカ(mock-orion)に送信します。温度平均値は mock-orion のログに記録された "Floor" として表示されます。

次のステップ

EventOut の更新を IoT Agent のような NGSI デバイスに送信する方法を学びます。