Movatterモバイル変換


[0]ホーム

URL:


fisuda , profile picture
Uploaded byfisuda
1,174 views

FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.2.0対応)

FIWARE NGSIv1 を知っている開発者向けのNGSIv2 の概要を解説したスライドです。Orion Context Broker version 2.2.0に対応しています。

Embed presentation

コンテキスト情報管理:イントロダクション(Managing Context Informationat Large Scale: Introduction)Fermín Galán Márquez - fermin.galanmarquez@telefonica.com(Reference Orion Context Broker version: 2.2.0)(Translated into Japanese by Kazuhito Suda k@fisuda.jp)
• FIWARE におけるコンテキスト管理• Orion Context Broker• データの作成とプル• データのプッシュと通知• バッチ操作2イントロダクション
“スマート”であることは、まず”アウェア”であることが必要Boiler• Manufacturer• Last revision• Product id• temperatureUsers• Name-Surname• Birthday• Preferences• LocationFlowerpot• Humidity• Watering planコンテキスト情報アプリケーション3• スマート・アプリケーションを実装するには、関連するエンティティを特徴付ける属性の値を参照して、コンテキスト情報の収集と管理が必要です• スマート・ホーム、スマート農業、スマート・インダストリー、スマートな物流、スマート・シティなど、コンテキスト情報の管理に関連するアプリケーション・ドメインは数多くあります標準 API
“スマート”であることは、まず”アウェア”であることが必要4• スマート・アプリケーションを実装するには、関連するエンティティを特徴付ける属性の値を参照して、コンテキスト情報の収集と管理が必要です• スマート・ホーム、スマート農業、スマート・インダストリー、スマートな物流、スマート・シティなど、コンテキスト情報の管理に関連するアプリケーション・ドメインは数多くありますShip• Company• Speed• Location• …Truck• Driver• Location• …Container• Dimension• Temperature• …コンテキスト情報アプリケーション標準 API
“スマート”であることは、まず”アウェア”であることが必要• スマート・アプリケーションを実装するには、関連するエンティティを特徴付ける属性の値を参照して、コンテキスト情報の収集と管理が必要です• スマート・ホーム、スマート農業、スマート・インダストリー、スマートな物流、スマート・シティなど、コンテキスト情報の管理に関連するアプリケーション・ドメインは数多くありますBus• Location• No. passengers• Driver• Licence plateCitizen• Name-Surname• Birthday• Preferences• LocationShop• Location• Business name• Franchise• offeringsコンテキスト情報アプリケーション5標準 API
スマート・シティにおけるコンテキスト情報管理• 都市サービスやサードパーティ・アプリケーション(アクセス制御ポリシーに従う)の管理を扱うシステムは、コンテキスト情報を消費・生成することができます• 全体の都市ガバナンスは、KPI を監視し、ビッグデータ分析を実行するために利用可能なコンテキスト情報(リアルタイムおよび履歴)に依存することができます6都市サービスBus• Location• No. passengers• Driver• Licence plateCitizen• Name-Surname• Birthday• Preferences• LocationShop• Location• Business name• Franchise• offeringsコンテキスト情報都市ガバナンスシステム都市サービスサードパーティ・アプリ
コンテキストの異なるソースを処理することが必要• コンテキスト情報は、多くのソースからやってくる:– 既存システム– モバイル・アプリを使うユーザ– センサー・ネットワーク• エンティティの情報源は時間とともに変化する可能性がありますPlace = “X”, temperature = 30º場所“X”の現在の温度は何ですか?歩道のセンサ 公共バス輸送管理システムスマートフォン暑すぎる!7標準 API
コンテキストの異なるソースを処理することが必要• コンテキスト情報は、多くのソースからやってくる:– 既存システム– モバイル・アプリを使うユーザ– センサー・ネットワーク• エンティティの情報源は時間とともに変化する可能性があります8Street = “X”, traffic = high"X"通りの現在の交通状況はどうですか?Standard API歩道のセンサ公共バス輸送管理システム市民のカー・アプリまたはスマートフォン“X”通りの交通状況の変化を知らせてください
他システムに負担をかけないアプローチが必要• アーキテクチャに影響を与えずに既存のシステムまたは将来のシステムと統合することができ、共通のコンテキスト情報ハブを実現します• あるエンティティの属性に関する情報は、コンテキスト・プロデューサまたはコンテキスト・プロバイダのいずれかとして機能するさまざまなシステムからやってきます9アプリケーション/サービス標準APISystem A System Bコンテキスト・プロデューサ コンテキスト・プロバイダ属性 “location” 属性 “driver”
FIWARE におけるコンテキスト管理• FIWARE Context Broker GE は、スマート対応システムの要件に準拠したコンテキスト情報を管理するためのシンプルで強力な標準 API であるNGSI API を実装しています• FIWARE NGSI API は Restful です:Web /バックエンドのプログラマーはすぐに使いこなせますアプリケーション/サービスContext BrokerNGSI APIBoiler• Manufacturer• Last revision• Product id• temperatureUsers• Name-Surname• Birthday• Preferences• LocationFlowerpot• Humidity• Watering plan10
FIWARE NGSI: “IoT用 SNMP”• IoT デバイスからのデータの取得、または IoT デバイス上での動作は、簡単になり、Context Broker を使用してコンテキスト・エンティティにリンクされた属性の値を読み取る/変更するだけですContext BrokerNGSI APINGSI APIGET /v2/entities/lamp1/attrs/presenceSensorPUT /v2/entities/lamp1/attrs/status/value“light on”属性”status”の値を”light on”に変更すると、IoT デバイス内のランプのスイッチを入れる機能の実行がトリガされます“presenceSensor” 属性に対し読み取り操作を実行すると、アプリケーションはランプの近くにいる人の存在に関する情報を取得できます11
Internet of Things へ接続• IoT デバイスからのデータの取得、または IoT デバイス上での動作は、簡単になり、Context Broker を使用してコンテキスト・エンティティにリンクされた属性の値を読み取る/変更するだけですContext BrokerGET /v2/entities/lamp1/attrs/humidityPUT /v2/entities/lamp1/attrs/status/value“watering”属性 “status” の値を “watering” に変更すると、プラントに給水するIoT デバイス内の関数の実行がトリガされます“humidity” 属性に対し読み取り操作を実行すると、アプリケーションはプラントに給水が必要かどうかを調べることができます12NGSI APINGSI API
• 主な機能:– コンテキスト管理– コンテキスト可用性管理 (高度なトピック) (*)• HTTP と RESTベース– JSON ペイロードのサポート• NGSIのコンテキストは、entity-attribute モデルに基づいています:Attributes• Name• Type• ValueEntity• EntityId• EntityType1 nhas13Orion Context Broker(*) With some limitations in current Orion version, see https://fiware-orion.readthedocs.io/en/master/user/ngsiv2_implementation_notes/index.html#registrations
Orion Context Broker とはOrion Context Brokerコンテキスト・プロデューサコンテキスト・コンシューマサブスクリプション更新クエリクエリクエリ更新更新DB1026102614
GET <cb_host>:1026/version{"orion" : {"version" : “2.2.0”,“uptime” : “0 d, 0 h, 0 m, 5 s”,“git_hash” : “...”,“compile_time” : “nodate”,“compiled_by” : “fermin”,“compiled_in” : “centollo”,“release_date” : “nodate”,“doc” : “https://fiware-orion.readthedocs.org/en/2.2.0/"}}15Orion Context Broker – ヘルス・チェック
Orion Context Broker 基本オペレーションエンティティ (Entities)• GET /v2/entities• すべてのエンティティを取得• POST /v2/entities• エンティティを作成• GET /v2/entities/{entityID}• エンティティを取得• [PUT|PATCH|POST] /v2/entities/{entityID}• エンティティを更新 (異なる “フレイバー”)• DELETE /v2/entities/{entityID}• エンティティを削除16
Orion Context Broker 基本オペレーション属性 (Attributes)• GET /v2/entities/{entityID}/attrs/{attrName}• 属性の取得• PUT /v2/entities/{entityID}/attrs/{attrName}• 属性の更新• DELETE /v2/entities/{entityID}/attrs/{attrName}• 属性の削除• GET /v2/entities/{entityID}/attrs/{attrName}/value• 属性値の取得• PUT /v2/entities/{entityID}/attrs/{attrName}/value• 属性値の更新17
Context Broker operations: データの 作成 と プル• コンテキスト・プロデューサは、 Context Broker に対する更新(update)操作を呼び出すことによって、データ/コンテキスト要素を公開します• コンテキスト・コンシューマは、Context Broker に対するクエリ(query)操作を呼び出すことによって、データ/コンテキスト要素を取得できますコンテキスト・コンシューマqueryコンテキスト・プロデューサupdate18
使用例: Car の作成201 Created19POST <cb_host>:1026/v2/entitiesContent-Type: application/json...{"id": "Car1","type": "Car","speed": {"type": "Float","value": 98}}URL に "?options=upsert" を追加できます。その場合、エンティティが既に存在する場合に更新されます。
使用例: Car Speed の更新 (1)PUT <cb_host>:1026/v2/entities/Car1/attrs/speedContent-Type: application/json...{"type": "Float","value": 110}204 No Content…20id があいまいなケースでは、"?type=Car"を使用してエンティティタイプを指定できます
使用例: Car Speed クエリ (1)200 OKContent-Type: application/json...{"type": "Float","value": 110,"metadata": {}}21エンティティ URL を使用してエンティティのすべての属性を取得できます:GET/v2/entities/Car1/attrsGET <cb_host>:1026/v2/entities/Car1/attrs/speed
使用例: Car Speed 更新 (2)PUT <cb_host>:1026/v2/entities/Car1/attrs/speed/valueContent-Type: text/plain...115204 No Content…22
使用例: Car Speed クエリ (2)23200 OKContent-Type: text/plain...115.000000GET <cb_host>:1026/v2/entities/Car1/attrs/speed/valueAccept: text/plain
201 Created...使用例: Room 作成 (1)POST <cb_host>:1026/v2/entitiesContent-Type: application/json...{"id": "Room1","type": "Room","temperature": {"type": "Float","value": 24},"pressure": {"type": "Integer","value": 718}}24
204 No Content…使用例: Room 更新 (1)PATCH <cb_host>:1026/v2/entities/Room1/attrsContent-Type: application/json...{"temperature“: {"type": "Float","value": 25},"pressure": {"type": "Integer","value": 720}}25
使用例: Room クエリ (1)26200 OKContent-Type: application/json...{"pressure": {"type": "Integer","value": 720,"metadata": {}},"temperature": {"type": "Float","value": 25,"metadata": {}}}GET <cb_host>:1026/v2/entities/Room1/attrs
使用例: Room クエリ (2)27200 OKContent-Type: application/json...{"pressure": 720,"temperature": 25}GET <cb_host>:1026/v2/entities/Room1/attrs?options=keyValues
201 Created...使用例: Room 作成 (2)POST <cb_host>:1026/v2/entitiesContent-Type: application/json...{"id": "Room2","type": "Room","temperature": {"type": "Float","value": 29},"pressure": {"type": "Integer","value": 730}}28
使用例: フィルタ (1)29200 OKContent-Type: application/json...[{"id": "Room2","pressure": 730,"temperature": 29,"type": "Room"}]GET <cb_host>:1026/v2/entities?options=keyValues&q=temperature>27
使用例: フィルタ (2)30200 OKContent-Type: application/json...[{"id": "Room1","pressure": 720,"temperature": 25,"type": "Room"}]GET <cb_host>:1026/v2/entities?options=keyValues&q=pressure==715..725フィルタリングのためのシンプル・クエリ言語の完全な記述は、NGSIv2仕様書に記載されています。
Context Broker 操作: データのプッシュ• コンテキスト・コンシューマは、サブスクライブ(subscribe)操作を使用して特定の条件を満たすコンテキスト情報を受信するためにサブスクライブすることができます。このようなサブスクリプションには有効期限があります。• Context Brokerは、サブスクライブ操作をしたコンテキスト・コンシューマに、通知(notify)操作により、コンテキスト情報の更新を通知します。subId = subscribeContext (consumer, expr, expiration)コンテキスト・コンシューマnotify (subId, data/context)アプリケーション31
使用例: サブスクリプション (Subscription)POST <cb_host>:1026/v2/subscriptionsContent-Type: application/json…{"subject": {"entities": [{"id": "Room1","type": "Room"}],"condition": {"attrs": [ "temperature" ]}},"notification": {"http": {"url": "http://<host>:<port>/publish"},"attrs": [ "temperature" ]},"expires": "2026-04-05T14:00:00.00Z"}201 CreatedLocation: /v2/subscriptions/51c0ac9ed714fb3b37d7d5a8...32
2519使用例: 通知 (Notification)33
POST /publish HTTP/1.1Content-type: application/json; charset=utf-8Ngsiv2-AttrsFormat: normalized…{"subscriptionId": "574d720dbef222abb860534a","data": [{"id": "Room1","type": "Room","temperature": {"type": "Float","value": 19,"metadata": {}}}]}使用例: 通知 (Notification)34
既存のサブスクリプションの一覧表示35200 OKContent-Type: application/json…[{"id": " 51c0ac9ed714fb3b37d7d5a8 ","expires": "2026-04-05T14:00:00.00Z","status": "active","subject": {"entities": [{"id": "Room1","type": "Room"}],"condition": {"attrs": ["temperature"]}},"notification": {"timesSent": 3,"lastNotification": "2016-05-31T11:19:32.00Z","lastSuccess": "2016-05-31T11:19:32.00Z","attrs": ["temperature"],"attrsFormat": "normalized","http": {"url": "http://localhost:1028/publish"}}}]サブスクリプション・オブジェクト(そのすべてのフィールドを含む)の完全な説明は、NGSIv2仕様書に記載されていますGET <cb_host>:1026/v2/subscriptions
Orion Context Broker バッチ操作36• バッチ・クエリ と バッチ更新• これらは、前述の RESTful 操作と機能的に同等です• これらのすべては POST を動詞として使用し、/v2/op URL プレフィックスを使用します。これには JSON ペイロードの操作パラメータも含まれます• RESTful 操作では実現できない追加機能を実装しています。例えば、同じ操作で複数のエンティティを作成できます• これらは代用ではなく、RESTful 操作を補完するものです
201 Created...バッチ操作の例: 複数ルームの作成POST <cb_host>:1026/v2/op/updateConten-Type: application/json...{"actionType": "append","entities": [{"type": "Room","id": "Room3","temperature": {"value": 21.2,"type": "Float"},"pressure": {"value": 722,"type": "Integer"}},…37…{"type": "Room","id": "Room4","temperature": {"value": 31.8,"type": "Float"},"pressure": {"value": 712,"type": "Integer"}}]}
Orion を使用するには? (仮想マシン)38• FIWARE Lab イメージ– イメージ: orion-psb-image-R<x>.<y>• VirtualBox イメージ– http://bit.ly/fiware-orion024-vbox (サイズが巨大です)– User/pass:• fiware/fiware• root/fiware• ヒント: VM をデプロイしたら、Orion パッケージを更新してください
Orion を使用するには? (Docker コンテナ)39• あなたのシステムに Docker をインストールします• https://github.com/telefonicaid/fiware-orion/tree/develop/docker にあるドキュメントを見てください• クイック・ガイドgit clone https://github.com/telefonicaid/fiware-orion.gitcd fiware-orion/dockersudo docker-compose up• これで完了!– curl localhost:1026/version• Orion Docker を1分以内にインストールする– https://www.youtube.com/watch?v=6taR7e20H9U
• FIWARE リファレンス・チュートリアル・アプリケーションを見てください– git clone https://github.com/Fiware/tutorials.TourGuide-App.git– cd tutorials.TourGuide-App/– docker-compose up orion– curl localhost:1026/version• ルートディレクトリの README.md の説明• Postman セッションを開いて、試します– Postman コレクション:https://github.com/Fiware/tutorials.TourGuide-App/blob/develop/contrib/CampusParty2016.postman_collection40これを試したいですか?
Orion Context Broker to Backbone Sync41• https://github.com/digitalilusion/o2bb
Carto 用の NGSI コンテキスト・アダプタ42労力をかけずにマップにエンティティを表示し、ヒストリーアニメーション、ヒートマップ、クラスター表現を作成します• https://github.com/telefonicaid/fiware-dataviz
Freeboard 用 NGSI プラグイン43エンジニア用のリアルタイム・ダッシュボードを作成し、ゲージ、スパークライン、マップを表示します。 コーディングは必要ありません!• https://github.com/telefonicaid/fiware-datavizさらに、フリーボードのフリーミアム版は、Orion の既製品
• 簡単な方法– このプレゼンテーションは、 https://github.com/telefonicaid/fiware-orion#introductory-presentations にあります– Orion ユーザ・マニュアル: “Orion FIWARE manual” を google で検索し、最初に見つかったものを使ってください– Orion カタログページ: “Orion FIWARE catalogue” を google で検索し、最初に見つかったものを使ってください• リファレンス– NGSIv2 仕様• http://fiware.github.io/specifications/ngsiv2/stable• http://fiware.github.io/specifications/ngsiv2/latest– Orion カタログ:• http://catalogue.fiware.org/enablers/publishsubscribe-context-broker-orion-context-broker– StackOverflow での Orion サポート• “fiware-orion” タグをつけて、質問してください• http://stackoverflow.com/questions/tagged/fiware-orion で既存のQ&Aを探してください44もっと知りたいですか?
コンテキスト情報管理:高度なトピック(Managing Context Informationat Large Scale: Advanced Topics)Fermín Galán Márquez - fermin.galanmarquez@telefonica.com(Reference Orion Context Broker version: 2.2.0)(Translated into Japanese by Kazuhito Suda k@fisuda.jp)
46ページネーションメタデータ複合属性 メタデータ値タイプ・ブラウジングジオ・ロケーションクエリ・フィルタサポートカスタム通知通知ステータス属性 メタデータのフィルタリング特別な属性 メタデータレジストレーション と コンテキスト・プロバイダマルチテナンシーOrion の高度な機能データの作成とプルデータのプッシュサブスクリプション と 通知バッチ操作一時的なエンティティワンショット・サブスクリプションサブスクリプションの強化
• ページネーション• メータデータ• 複合属性/メタデータ値• タイプ・ブラウジング• ジオ・ロケーション• クエリ・フィルター• DateTime サポート• 一時的なエンティティ• カスタム通知• 通知ステータス• ワンショット・サブスクリプション• サブスクリプションの強化• 属性/メタデータ・フィルタリングと特殊属性/メタデータ• 登録とコンテキストプロバイダ• マルチテナンシー• サービス・パス• CORS• プライベート・ネットワークでのサービスの通知47高度な機能
• ページネーションは、クライアントが、クエリおよびディスカバリのリクエストよる多数のレスポンスを整理するのに利用できます。• 3つの URI パラメータ:– limit• ページあたりの要素数 (デフォルト: 20, 最大: 1000)– offset• スキップする要素の数 (デフォルト: 0)– count (オプション)• 合計要素を返します (デフォルト: 返しません)48ページネーション (Pagination)
• 例, 最初の100エントリをクエリする:– GET <orion_host>:1026/v2/entities?limit=100&options=count• 最初の100個の要素が返され、レスポンスに次のヘッダーが返されます:– Fiware-Total-Count: 322• 今、322の要素があります。Orion Context Broker にそれらをクエリし続けることができます:– GET <orion_host>:1026/v2/entities?offset=100&limit=100– GET <orion_host>:1026/v2/entities?offset=200&limit=100– GET <orion_host>:1026/v2/entities?offset=300&limit=10049ページネーション (Pagination)
• デフォルトでは、結果はエンティティの作成日順に並べられます• この動作は orderBy URI パラメータを使用してオーバーライドできます– コンマで区切られた属性のリスト(システム/組み込み属性を含む)、 id (エンティティIDの場合) および、型 (エンティティタイプの場合)。結果は最初のフィールドで並べられます。続いて、結果は02番名のフィールドなどによって順序付けされます。フィールド名の前の"!" は、順序が逆になっていることを意味します。• 例: 温度よる昇順で、次に湿度よる降順で最初の10エントリを取得しますGET <orion_host>:1026/v2/entities?limit=20&offset=0&orderBy=temp,!humidity• dateCreated と dateModified は、エンティティの作成および変更日ごとの順序付けにそれぞれ使用できます50ページネーション (Pagination)
• ユーザは属性にメタデータを添付できます• 予約されたメタデータ: ID, location, dateCreated, dateModified,previousValue, actionType• 例:51…"temperature": {"type": "Float","value": 26.5,"metadata": {"accuracy": {"type": "Float","value": 0.9}}}……"temperature": {"type": "Float","value": 26.5,"metadata": {"average": {"type": "Float","value": 22.4}}}…メタデータ (Metadata)
Attributes• Name• Type• ValueEntity• EntityId• EntityTypeMetadata• Name• Type• Value52完全な NGSI モデル1 nhas1 nhas
• 属性とメタデータは、構造化された値を持つことができます。Vectors と key-value マップをサポートしています• JSONのオブジェクトと配列に直接マップされます53複合属性/メタデータ値(Compound Attribute/Metadata Values)
• 例: 4つのタイヤの空気を車のエンティティの複合属性として表現したい車があります。このような車のエンティティを作成します:{"type": "Car","id": "Car1","tirePressure": {"type": "kPa","value": {"frontRight": 120,"frontLeft": 110,"backRight": 115,"backLeft": 130}}}54複合属性/メタデータ値(Compound Attribute/Metadata Values)
タイプ・ブラウジング (Type Browsing)• GET /v2/types• Orionに現在あるすべてのエンティティ・タイプのリストを取得します。対応する属性とエンティティ数も含まれます• GET /v2/types/{typeID}• エンティティタイプに関連付けられた属性およびエンティティの数を取得しますヒントGET /v2/contextTypes?options=values追加情報なしですべてのエンティティ・タイプのリストを取得します55
• エンティティは、その場所を指定する属性を持つことができます• いくつかの属性タイプを使用できます– geo:point (ポイント)– geo:line (ライン)– geo:box (ボックス)– geo:polygon (ポリゴン)– geo:json (GeoJson 標準で任意のジオメトリ)• 例:マドリードというエンティティを作成...そしていくつかの町を作成:• Leganés (レガネス)• Alcobendas (アルコベンダス)POST <cb_host>:1026/v2/entities{"type": "City","id": "Madrid","position": {"type": "geo:point","value": "40.418889, -3.691944"}}56ジオ・ロケーション (Geo-location)
ジオ・ロケーション – サークル57
ジオ・ロケーション – 最大距離58GET <cb_host>:1026/v2/entities?idPattern=.*&type=City&georel=near;maxDistance:13500&geometry=point&coords=40.418889,-3.691944
ジオ・ロケーション – 最小距離59GET <cb_host>:1026/v2/entities?idPattern=.*&type=City&georel=near;minDistance:13500&geometry=point&coords=40.418889,-3.691944
• near から離れて、次の georel を使用できます– georel=coveredBy– georel=intersects– georel=equals– georel=disjoint• 詳細な説明については、”NGSIv2 仕様”を参照してください60さらなる、地理関係 (geo-relationships)
• GET /v2/entities 操作• エンティティ・タイプ によるフィルタ• エンティティ id リスト によるフィルタ• エンティティ id のパターンによるフィルタ (正規表現)• エンティティ・タイプのパターンによるフィルタ (正規表現)• 地理上の位置によるフィルタ (geographical location)– 以前のスライドで詳しく説明しました• フィルタは同時に使用できます (AND条件など)61GET <cb_host>:1026/v2/entities?type=RoomGET <cb_host>:1026/v2/entities?id=Room1,Room2GET <cb_host>:1026/v2/entities?idPattern=^Room[2-5]GET <cb_host>:1026/v2/entities?typePattern=T[ABC]クエリ・フィルタ (Query filters)
• 属性値によるフィルタ (q)• メタデータ値によるフィルタ (mq)• NGSIv2仕様の q および mq クエリ言語の詳細を参照してください62GET <cb_host>:1026/v2/entities?q=temperature>25GET <cb_host>:1026/v2/entities?q=tirePressure.frontRight >130属性名属性サブキー 複合属性値のみGET <cb_host>:1026/v2/entities?mq=temperature.avg>25GET <cb_host>:1026/v2/entities?mq=tirePressure.accuracy.frontRight >90メタデータサブキー複合メタデータ値のみ属性名メタデータ名クエリ・フィルタ (Query filters)
63POST <cb_host>:1026/v2/subscriptions…{"subject": {"entities": [{"id": “Car5","type": “Car"},{"idPattern": "^Room[2-5]","type": "Room"},{"id": “D37","typePattern": "Type[ABC]"},],"condition": {"attrs": [ "temperature" ],"expression": {"q": "temperature>40","mq": "humidity.avg==80..90","georel": "near;maxDistance:100000","geometry": "point","coords": "40.418889,-3.691944"}}},…}• フィルタはサブスクリプションでも使用できます– id– タイプ– id パターン– タイプ・パターン– 属性値– メタデータ値– 地理上の位置クエリ・フィルタ
Datetime サポート• Orion Context Broker は日付サポートを実装しています– ISO ISO8601フォーマット (部分表現とタイムゾーンを含む) に基づいています• See https://fiware-orion.readthedocs.io/en/master/user/ngsiv2_implementation_notes/index.html#datetime-support for syntax details– 日時を表すには、予約属性タイプの DateTime を使用します– 日付ベースのフィルタをサポートします64
Datetime サポート• 属性値の算術フィルタは、日付が数字であるかのように使用できます• エンティティの dateModified と dateCreated の特殊属性,エンティティの作成と最終変更のタイムスタンプを取得します– それらは以下を使用してクエリ・レスポンスで示されますattrs=dateModified,dateCreated• エンティティの dateModified と dateCreated の特殊メタデータ, 属性の作成と最終変更のタイムスタンプを取得します– それらは以下を使用してクエリ・レスポンスで示されますmetadata=dateModified,dateCreated65POST /v2/entities…{"id": "John","birthDate": {"type": "DateTime","value": "1979-10-14T07:21:24.238Z"}}GET /v2/entities?q=birthDate<1985-01-01T00:00:00例: DateTime タイプを使用してbirthDate 属性でエンティティ“John”を作成します
一時的なエンティティ (Transient entities)• dateExpires 時間に達すると、Orion はエンティティを自動的に削除します– 実際、一時的なエンティティは、有効期限の60秒後まで (データベースの負荷が高い場合はもう少し)、データベースに残る可能性があります• 注意してください!この方法で削除されたエンティティは回復できません• dateModified および dateCreated (前述) と同様に、dateExpires はデフォルトでは取得されません– attrs=dateExpires を使用してクエリのレスポンスに表示されます• dateExpires は、フィルタの他の DateTime 属性として使用できます。例:66POST /v2/entities…{"id": “Warning1","dateExpires": {"type": "DateTime","value": “2018-07-30T12:00:00Z"}}GET /v2/entities?q=dateExpires<2018-08-01T00:00:00例: エンティティ Warning1 を作成し、2018年7月30日正午に有効期限を設定
• 以前のスライドで定義された標準フォーマットとは別に、NGSIv2ではすべての通知の側面を再定義できます• http の代わりに httpInfo が使用され、以下のサブフィールドがあります– URL クエリ・パラメータ– HTTP メソッド– HTTP ヘッダ– ペイロード (必ずしもJSONではない!)• ${..} 構文に基づく単純なマクロ置換言語を使用して、エンティティ・データ (id, タイプ または 属性値)で”ギャップを埋める”ことができます– 例外: これは HTTP メソッドのフィールドでは使用できません67カスタム通知 (Custom notifications)
68…"httpCustom": {"url": "http://foo.com/entity/${id}","headers": {"Content-Type": "text/plain"},"method": "PUT","qs": {"type": "${type}"},"payload": "The temperature is ${temp} degrees"}…PUT http://foo.com/entity/DC_S1-D41?type=RoomContent-Type: text/plainContent-Length: 31温度は23.4度ですPUT /v2/entities/DC_S1-D41/attrs/temp/value?type=Room…23.4カスタム通知設定updatenotificaitonカスタム通知 (Custom notifications)
• ステータス failed は、最後に通知が失敗したことを意味します– 例: エンドポイントに到達できません• 通知要素(notifications element)の詳細情報– timesSent: 通知の合計回数(成功と失敗の両方)– lastSuccess: 通知が正常に送信された最後の時刻– lastFailure: 通知が試行され失敗した最後の時刻– lastNotification: 通知が送信された最後の時刻 (成功または失敗のいずれか)• 結果として、lastNotification の値はlastFailure または lastSuccess と同じです– lastFailureReason: 最後の失敗の原因(テキスト)– lastSuccessCode: 最後に成功した通知が送信されたときに受信エンドポイントから返された http コード (数値)69200 OKContent-Type: application/json…[{"id": " 51c0ac9ed714fb3b37d7d5a8 ","expires": "2026-04-05T14:00:00.00Z","status": "failed","subject": { … },"notification": {"timesSent": 3,"lastNotification": "2016-05-31T11:19:32.00Z","lastSuccess": "2016-05-31T10:07:32.00Z","lastFailure": "2016-05-31T11:19:32.00Z",…}}]通知ステータス (Notification status)
70通知診断ワークフロー(Notification diagnosis workflow)サブスクリプションは期限切れになっているため、通知は送信されていません。サブスクリプションを更新してそれを永続的なものにするか、有効期限を延長しますサブスクリプションは非アクティブであるため、通知は送信されていません。 サブスクリプションを更新して有効にします。通知が送信され、受信側エンドポイントは正しい受信を確認します。通知は送信されていますが、受信側のエンドポイントは、 HTTP エラーを報告しています。 受信エンドポイントを確認します (例 : ログなど)。通知が送信されないという問題があります。"lastFailureReason"フィールド値はそれに関する追加情報を提供するべきです。
ワンショット・サブスクリプション(Oneshot subscription)• Active ステータスの変形です。したがって、サブスクリプションが1回トリガされると (つまり、通知が送信されると)、自動的にInactive ステータスに移行します• Inactive なサブスクリプションは、oneshot にステップして、プロセスをやり直すことができます• この場合、サブスクリプションの作成または更新時の初期通知は送信されません200 OKContent-Type: application/json…[{"id": "51c0ac..","status": "oneshot",…}200 OKContent-Type: application/json…[{"id": "51c0ac..","status": "inactive",…}}]サブスクリプションがトリガー71
追加のサブスクリプションの強化(Additional subscription improvements)• 初期通知は、サブスクリプションの作成/更新時にデフォルトで送信されますが、skipInitialNotification URI パラメータ・オプションを使用して回避することができます。例 :– POST /v2/subscriptions?option=skipInitialNotification• デフォルトでは、実際には属性値を変更しない更新では通知は発生しませんが、この動作は forcedUpdate URIparam オプションでオーバーライドできます。例 :– PATCH /v2/entities/E/attrs?options=forcedUpdate– PUT /v2/entities/E/attrs/A?options=forcedUpdate– POST /v2/op/update?options=forcedUpdate72
• デフォルトでは、すべての属性はクエリのレスポンスまたは通知に含まれます• GET操作のパラメータとして、およびサブスクリプションの通知サブフィールドとして、attrs フィールドを使用して、フィルタリング・リストを指定できます• attrs フィールドは、特別な属性を明示的に含むためにも使用できます (デフォルトでは含まれていません)– dateCreated, dateModified, dateExpires:以前のスライドで説明しました• "*"は、 "すべての通常の属性"の別名として使用できます73属性フィルタリングと特殊属性(Attributes filtering and special attributes)
• 例– temp と lum だけの属性を含めます• クエリで: GET /v2/entities?attrs=temp,lum• サブスクリプションで: "attrs": [ "temp", "lum" ]– 他の属性ではなく dateCreated を含めます• クエリで: GET /v2/entities?attrs=dateCreated• サブスクリプションで: "attrs": [ "dateCreated" ]– dateModified とその他すべての(通常の)属性を含めます• クエリで: GET /v2/entities?attrs=dateModified,*• サブスクリプションで: "attrs": [ "dateModified", "*" ]– すべての属性を含めます(attrsを使用しないのと同じ効果です)• クエリで: GET /v2/entities?attrs=*• サブスクリプションで: "attrs": [ "*" ]74属性フィルタリングと特殊属性(Attributes filtering and special attributes)
• デフォルトでは、すべての属性メタデータはクエリのレスポンスと通知に含まれています• GET操作のパラメータとして、および、サブスクリプションの通知サブフィールドとして、metadata フィールドを使用して、フィルタリング・リストを指定できます• metadata フィールドは、明示的には含まれていない特別なメタデータを明示的に含むためにも使用できます– dateCreated, dateModified: 以前のスライドで説明しました– actionType: どの値が通知をトリガする更新に対応するアクション・タイプであるか : update”, “append” または “delete” (*)– previousValue: 通知をトリガする更新を処理する前の属性値を提供します• “*”は、 “すべての通常のメタデータ"の別名として使用できます75メタデータのフィルタリングと特殊メタデータ(Metadata filtering and special metadata)(*) actionType "delete" は、まだ、Orion 2.2.0 でサポートされていません
• 例– メタデータ MD1 と MD2 のみを含めます• クエリで: GET /v2/entities?metadata=MD1,MD2• サブスクリプションで: "metadata": [ "MD1", "MD2" ]– previousValue を含み、他のメタデータは含みません• クエリで: GET /v2/entities?metadata=previousValue• サブスクリプションで: "attrs": [ "previousValue" ]– actionType とその他すべての通常のメタデータを含めます• クエリで: GET /v2/entities?metadata=actionType,*• サブスクリプションで: "attrs": [ "actionType", "*" ]– すべてのメタデータを含めます (メタデータを使用しない場合と同じ効果です)• クエリで: GET /v2/entities?metadata=*• サブスクリプションで: "metadata": [ "*" ]76メタデータのフィルタリングと特殊メタデータ(Metadata filtering and special metadata)
• キャッシュされていないクエリと更新77アプリケーションContextBrokerコンテキスト・プロバイダ db2. クエリ 3. クエリ4. データ5. データコンテキスト・コンシューマレジストレーション と コンテキスト・プロバイダ1. register(provider= )
POST <cb_host>:1026/v2/registrations…{"description": "Registration for Car1","dataProvided": {"entities": [{"id": "Car1","type": "Car"}],"attrs": ["speed"]},"provider": {"http": {"url": "http://contextprovider.com/Cars"},"legacyForwarding": true}}201 CreatedLocation: /v2/registrations/5a82be3d093af1b94ac0f730…78レジストレーション と コンテキスト・プロバイダ(*)現在のOrionバージョンにはいくつかの制限があります。 https://fiware-orion.readthedocs.io/en/master/user/ngsiv2_implementation_notes/index.html#registrations
79GET <cb_host>:1026/v2/entities/Car1/attrsContextBroker コンテキスト・プロバイダdbクエリデータ200 OKContent-Type: application/json...{"type": "Float","value": 110,"metadata": {}}レジストレーション と コンテキスト・プロバイダ
• 論理データベース分離に基づく単純なマルチテナントモデル• 他コンポーネントによって提供されるテナントベースの認証を容易にします• “Fiware-Service” という追加の HTTP ヘッダにテナント名を指定して使用してください例:Fiware-Service: Tenant1ContextBrokerテナント1テナント2…80マルチテナンシー (Multitenancy)
• サービス・パスは、作成時に POST /v2/entities でエンティティに割り当てられた階層スコープです81サービス・パス (Service Paths)
• サービス・パスを使用するために、“Fiware-ServicePath” と呼ばれる新しい HTTP ヘッダを挿入します。 例:Fiware-ServicePath: /Madrid/Gardens/ParqueNorte/Parterre1• プロパティ:– サービス・パスのクエリは、指定されたノードのみを検索します– すべての子ノードを含めるには "ParentNode/#" を使用します– Fiware-ServicePath のないクエリは “/#” と解釈します– エンティティはデフォルトで "/" ノードに入りますParqueNorteParterre2Parterre182サービス・パス (Service Paths)
• プロパティ (続き):– ヘッダーにカンマ(,)演算子を使用してクエリをORできます• 例えば、ParqueSur または ParqueOesteにあるすべての街灯を照会するには:ServicePath: Madrid/Gardens/ParqueSur,Madrid/Gardens/ParqueOeste• 最大10個の異なるスコープを OR することができます– 最大スコープ・レベル: 10• Scope1/Scope2/.../Scope10– さまざまなスコープで同じ要素 ID を持つことができます(これに注意してください)– 要素が作成されると、範囲を変更することはできません– 1つのエンティティは1つのスコープにのみ属することができます– クエリだけでなく、サブスクリプション/通知でも機能します– NGSI10だけでなく、レジストレーション/ディスカバリー(NGSI9)でも機能しますParqueNorteParterre1light1light1A BA or B83サービス・パス (Service Paths)
• バックエンドなしでブラウザで完全に実行されるプログラミング・クライアントに役立ちます– NGSIv2 での完全サポート (pre-flightのリクエストを含む)– NGSIv1 での部分的なサポート (GETリクエストのみ)• CORS に関連する CLI パラメータ– -corsOrigin– -corsMaxAge• 詳細– https://fiware-orion.readthedocs.io/en/master/user/cors/index.htmlクロス・オリジン・リソース共有 (CORS)(Cross-Origin Resource Sharing )
85notify Private NetworkPrivate Network./ngrok http 8080http://9762d35a.ngrok.ioプライベート・ネットワークでのサービスの通知
• 簡単な方法– このプレゼンテーションは、 https://github.com/telefonicaid/fiware-orion#introductory-presentations にあります– Orion ユーザ・マニュアル: “Orion FIWARE manual” を google で検索し、最初に見つかったものを使ってください– Orion カタログページ: “Orion FIWARE catalogue” を google で検索し、最初に見つかったものを使ってください• リファレンス– NGSIv2 仕様• http://fiware.github.io/specifications/ngsiv2/stable• http://fiware.github.io/specifications/ngsiv2/latest– Orion カタログ:• http://catalogue.fiware.org/enablers/publishsubscribe-context-broker-orion-context-broker– StackOverflow での Orion サポート• “fiware-orion” タグをつけて、質問してください• http://stackoverflow.com/questions/tagged/fiware-orion で既存のQ&Aを探してください86もっと知りたいですか?
Thank you!http://fiware.orgFollow @FIWARE on Twitter
既存のシステムとの統合• コンテキスト・アダプタは、コンテキスト・プロバイダ、コンテキスト・プロデューサ、またはその両方として機能する既存のシステム (例えば、スマート・シティの地方自治体サービス管理システム) とインターフェースするために開発さます• 特定のエンティティからのいくつかの属性はコンテキストプロバイダにリンクされていてもよく、他の属性はコンテキストプロデューサにリンクされていてもよいですqueryContext (e1,attr1, attr2)コンテキスト・プロバイダqueryContext (e1,attr1)コンテキスト・コンシューマupdateContext (e1,attr2)アプリケーションContext BrokerSystem BSystem A88
センサ・ネットワークとの統合• Backend IoT Device Management GE は、センサ・ネットワークに接続するNGSI IoT Agent の作成と設定を可能にします• 各 NGSI IoT Agent は、コンテキスト・コンシューマ または コンテキスト・プロバイダ、またはその両方として動作できますcreate/monitorノース・バウンド・インターフェースサウス・バウンド・インターフェースETSI89
• Federation of infrastructures (private/public regions)• Automated GE deploymentCloud• Complete Context Management Platform• Integration of Data and Media ContentData•Easy plug&play of devices using multiple protocols•Automated Measurements/Action Context updatesIoT•Visualization of data (operation dashboards)•Publication of data sets/servicesApps•Easy support of UIs with advanced web-based 3D and ARcapabilities•Visual representation of context information.Web UI•Advanced networking capabilities (SDN) and Middleware•Interface to robotsI2ND•Security Monitoring•Built-in Identity/Access/Privacy ManagementSecurityFIWARE におけるコンテキスト管理90
Context/Data Management PlatformApplicationsOMA NGSI-9/10Processing/AnalysisAlgorithmsGathered data isinjected forprocessing/analysisDistributedContextSources Complex EventProcessing(PROTON)BigData(COSMOS)Processed data isinjected forprocessing/analysisData generated either by CEPor BigData is publishedGathered data injectedfor CEP-like processingDirectbigdatainjectionProgramming ofrules91FIWARE コンテキスト/データ管理プラットフォーム
• /v2/op/update によって使用 (バッチ操作)• コンベンショナルな actionTypes– append: アペンド (または 属性がすでに存在するときは、更新)– update: 更新– delete: 削除• 特別な actionTypes– appendStrict: 厳密な追加 (追加する属性がすでに存在する場合はエラーを返します)– replace: すべてのエンティティ属性を削除し、次に更新リクエスト内の属性を追加します92特別な更新アクション・タイプ

Recommended

PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.5.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.6.0対応)
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 1.13.0対応)
 
PDF
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
PPTX
FIWARE 概要 - FIWARE WednesdayWebinars
 
PDF
FIWARE勉強会 20190913
PPTX
NGSI によるデータ・モデリング - FIWARE WednesdayWebinars
 
PDF
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 1.13.0対応)
 
PPTX
FIWARE Context Information Management
 
PDF
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
PPTX
FIWARE Big Data Ecosystem : Cygnus and STH Comet
 
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
PDF
Kongの概要と導入事例
PDF
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
PPTX
FIWARE の ID 管理、アクセス制御、API 管理
 
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
PPTX
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
PDF
Ingress on Azure Kubernetes Service
PPTX
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
PPTX
async/await のしくみ
PPTX
Docker超入門
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
MongoDB〜その性質と利用場面〜
PDF
Fluentdのお勧めシステム構成パターン
PDF
Fiware overview
PPTX
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
PDF
MuleSoft Anypoint Platformのコンセプトとサービス
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.3.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.3.0対応)
 

More Related Content

PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.5.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.6.0対応)
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 1.13.0対応)
 
PDF
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
PPTX
FIWARE 概要 - FIWARE WednesdayWebinars
 
PDF
FIWARE勉強会 20190913
PPTX
NGSI によるデータ・モデリング - FIWARE WednesdayWebinars
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.5.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.6.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 1.13.0対応)
 
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
FIWARE 概要 - FIWARE WednesdayWebinars
 
FIWARE勉強会 20190913
NGSI によるデータ・モデリング - FIWARE WednesdayWebinars
 

What's hot

PDF
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 1.13.0対応)
 
PPTX
FIWARE Context Information Management
 
PDF
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
PPTX
FIWARE Big Data Ecosystem : Cygnus and STH Comet
 
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
PDF
Kongの概要と導入事例
PDF
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
PPTX
FIWARE の ID 管理、アクセス制御、API 管理
 
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
PPTX
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
PDF
Ingress on Azure Kubernetes Service
PPTX
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
PPTX
async/await のしくみ
PPTX
Docker超入門
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
MongoDB〜その性質と利用場面〜
PDF
Fluentdのお勧めシステム構成パターン
PDF
Fiware overview
PPTX
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
PDF
MuleSoft Anypoint Platformのコンセプトとサービス
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 1.13.0対応)
 
FIWARE Context Information Management
 
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
FIWARE Big Data Ecosystem : Cygnus and STH Comet
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
Kongの概要と導入事例
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
FIWARE の ID 管理、アクセス制御、API 管理
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
Ingress on Azure Kubernetes Service
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
async/await のしくみ
Docker超入門
分散トレーシング技術について(Open tracingやjaeger)
MongoDB〜その性質と利用場面〜
Fluentdのお勧めシステム構成パターン
Fiware overview
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
MuleSoft Anypoint Platformのコンセプトとサービス

Similar to FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.2.0対応)

PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.3.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.3.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.9.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.3.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.2.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.12.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.1.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.5.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.1.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.0.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.4.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.6.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.0.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.1.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.11.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.10.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.2.0対応)
 
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.7.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.3.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.3.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.9.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.3.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.2.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.12.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.1.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.5.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.1.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.0.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.4.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.6.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.0.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.1.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.11.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.10.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.2.0対応)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.7.0対応)
 

More from fisuda

PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.7.0対応)
 
PPTX
FIWARE - スマートサービスを支えるオープンソース
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.2.0対応)
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.0.0対応)
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.3.0対応)
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.5.0対応)
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.6.0対応)
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.6.0対応)
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.4.0対応)
 
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.5.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.7.0対応)
 
FIWARE - スマートサービスを支えるオープンソース
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.2.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.0.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.3.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.5.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.6.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.6.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.4.0対応)
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.5.0対応)
 

FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.2.0対応)

  • 1.
    コンテキスト情報管理:イントロダクション(Managing Context InformationatLarge Scale: Introduction)Fermín Galán Márquez - fermin.galanmarquez@telefonica.com(Reference Orion Context Broker version: 2.2.0)(Translated into Japanese by Kazuhito Suda k@fisuda.jp)
  • 2.
    • FIWARE におけるコンテキスト管理•Orion Context Broker• データの作成とプル• データのプッシュと通知• バッチ操作2イントロダクション
  • 3.
    “スマート”であることは、まず”アウェア”であることが必要Boiler• Manufacturer• Lastrevision• Product id• temperatureUsers• Name-Surname• Birthday• Preferences• LocationFlowerpot• Humidity• Watering planコンテキスト情報アプリケーション3• スマート・アプリケーションを実装するには、関連するエンティティを特徴付ける属性の値を参照して、コンテキスト情報の収集と管理が必要です• スマート・ホーム、スマート農業、スマート・インダストリー、スマートな物流、スマート・シティなど、コンテキスト情報の管理に関連するアプリケーション・ドメインは数多くあります標準 API
  • 4.
  • 5.
  • 6.
    スマート・シティにおけるコンテキスト情報管理• 都市サービスやサードパーティ・アプリケーション(アクセス制御ポリシーに従う)の管理を扱うシステムは、コンテキスト情報を消費・生成することができます• 全体の都市ガバナンスは、KPIを監視し、ビッグデータ分析を実行するために利用可能なコンテキスト情報(リアルタイムおよび履歴)に依存することができます6都市サービスBus• Location• No. passengers• Driver• Licence plateCitizen• Name-Surname• Birthday• Preferences• LocationShop• Location• Business name• Franchise• offeringsコンテキスト情報都市ガバナンスシステム都市サービスサードパーティ・アプリ
  • 7.
    コンテキストの異なるソースを処理することが必要• コンテキスト情報は、多くのソースからやってくる:– 既存システム–モバイル・アプリを使うユーザ– センサー・ネットワーク• エンティティの情報源は時間とともに変化する可能性がありますPlace = “X”, temperature = 30º場所“X”の現在の温度は何ですか?歩道のセンサ 公共バス輸送管理システムスマートフォン暑すぎる!7標準 API
  • 8.
    コンテキストの異なるソースを処理することが必要• コンテキスト情報は、多くのソースからやってくる:– 既存システム–モバイル・アプリを使うユーザ– センサー・ネットワーク• エンティティの情報源は時間とともに変化する可能性があります8Street = “X”, traffic = high"X"通りの現在の交通状況はどうですか?Standard API歩道のセンサ公共バス輸送管理システム市民のカー・アプリまたはスマートフォン“X”通りの交通状況の変化を知らせてください
  • 9.
  • 10.
    FIWARE におけるコンテキスト管理• FIWAREContext Broker GE は、スマート対応システムの要件に準拠したコンテキスト情報を管理するためのシンプルで強力な標準 API であるNGSI API を実装しています• FIWARE NGSI API は Restful です:Web /バックエンドのプログラマーはすぐに使いこなせますアプリケーション/サービスContext BrokerNGSI APIBoiler• Manufacturer• Last revision• Product id• temperatureUsers• Name-Surname• Birthday• Preferences• LocationFlowerpot• Humidity• Watering plan10
  • 11.
    FIWARE NGSI: “IoT用SNMP”• IoT デバイスからのデータの取得、または IoT デバイス上での動作は、簡単になり、Context Broker を使用してコンテキスト・エンティティにリンクされた属性の値を読み取る/変更するだけですContext BrokerNGSI APINGSI APIGET /v2/entities/lamp1/attrs/presenceSensorPUT /v2/entities/lamp1/attrs/status/value“light on”属性”status”の値を”light on”に変更すると、IoT デバイス内のランプのスイッチを入れる機能の実行がトリガされます“presenceSensor” 属性に対し読み取り操作を実行すると、アプリケーションはランプの近くにいる人の存在に関する情報を取得できます11
  • 12.
    Internet of Thingsへ接続• IoT デバイスからのデータの取得、または IoT デバイス上での動作は、簡単になり、Context Broker を使用してコンテキスト・エンティティにリンクされた属性の値を読み取る/変更するだけですContext BrokerGET /v2/entities/lamp1/attrs/humidityPUT /v2/entities/lamp1/attrs/status/value“watering”属性 “status” の値を “watering” に変更すると、プラントに給水するIoT デバイス内の関数の実行がトリガされます“humidity” 属性に対し読み取り操作を実行すると、アプリケーションはプラントに給水が必要かどうかを調べることができます12NGSI APINGSI API
  • 13.
    • 主な機能:– コンテキスト管理–コンテキスト可用性管理 (高度なトピック) (*)• HTTP と RESTベース– JSON ペイロードのサポート• NGSIのコンテキストは、entity-attribute モデルに基づいています:Attributes• Name• Type• ValueEntity• EntityId• EntityType1 nhas13Orion Context Broker(*) With some limitations in current Orion version, see https://fiware-orion.readthedocs.io/en/master/user/ngsiv2_implementation_notes/index.html#registrations
  • 14.
    Orion Context BrokerとはOrion Context Brokerコンテキスト・プロデューサコンテキスト・コンシューマサブスクリプション更新クエリクエリクエリ更新更新DB1026102614
  • 15.
    GET <cb_host>:1026/version{"orion" :{"version" : “2.2.0”,“uptime” : “0 d, 0 h, 0 m, 5 s”,“git_hash” : “...”,“compile_time” : “nodate”,“compiled_by” : “fermin”,“compiled_in” : “centollo”,“release_date” : “nodate”,“doc” : “https://fiware-orion.readthedocs.org/en/2.2.0/"}}15Orion Context Broker – ヘルス・チェック
  • 16.
    Orion Context Broker基本オペレーションエンティティ (Entities)• GET /v2/entities• すべてのエンティティを取得• POST /v2/entities• エンティティを作成• GET /v2/entities/{entityID}• エンティティを取得• [PUT|PATCH|POST] /v2/entities/{entityID}• エンティティを更新 (異なる “フレイバー”)• DELETE /v2/entities/{entityID}• エンティティを削除16
  • 17.
    Orion Context Broker基本オペレーション属性 (Attributes)• GET /v2/entities/{entityID}/attrs/{attrName}• 属性の取得• PUT /v2/entities/{entityID}/attrs/{attrName}• 属性の更新• DELETE /v2/entities/{entityID}/attrs/{attrName}• 属性の削除• GET /v2/entities/{entityID}/attrs/{attrName}/value• 属性値の取得• PUT /v2/entities/{entityID}/attrs/{attrName}/value• 属性値の更新17
  • 18.
    Context Broker operations:データの 作成 と プル• コンテキスト・プロデューサは、 Context Broker に対する更新(update)操作を呼び出すことによって、データ/コンテキスト要素を公開します• コンテキスト・コンシューマは、Context Broker に対するクエリ(query)操作を呼び出すことによって、データ/コンテキスト要素を取得できますコンテキスト・コンシューマqueryコンテキスト・プロデューサupdate18
  • 19.
    使用例: Car の作成201Created19POST <cb_host>:1026/v2/entitiesContent-Type: application/json...{"id": "Car1","type": "Car","speed": {"type": "Float","value": 98}}URL に "?options=upsert" を追加できます。その場合、エンティティが既に存在する場合に更新されます。
  • 20.
    使用例: Car Speedの更新 (1)PUT <cb_host>:1026/v2/entities/Car1/attrs/speedContent-Type: application/json...{"type": "Float","value": 110}204 No Content…20id があいまいなケースでは、"?type=Car"を使用してエンティティタイプを指定できます
  • 21.
    使用例: Car Speedクエリ (1)200 OKContent-Type: application/json...{"type": "Float","value": 110,"metadata": {}}21エンティティ URL を使用してエンティティのすべての属性を取得できます:GET/v2/entities/Car1/attrsGET <cb_host>:1026/v2/entities/Car1/attrs/speed
  • 22.
    使用例: Car Speed更新 (2)PUT <cb_host>:1026/v2/entities/Car1/attrs/speed/valueContent-Type: text/plain...115204 No Content…22
  • 23.
    使用例: Car Speedクエリ (2)23200 OKContent-Type: text/plain...115.000000GET <cb_host>:1026/v2/entities/Car1/attrs/speed/valueAccept: text/plain
  • 24.
    201 Created...使用例: Room作成 (1)POST <cb_host>:1026/v2/entitiesContent-Type: application/json...{"id": "Room1","type": "Room","temperature": {"type": "Float","value": 24},"pressure": {"type": "Integer","value": 718}}24
  • 25.
    204 No Content…使用例:Room 更新 (1)PATCH <cb_host>:1026/v2/entities/Room1/attrsContent-Type: application/json...{"temperature“: {"type": "Float","value": 25},"pressure": {"type": "Integer","value": 720}}25
  • 26.
    使用例: Room クエリ(1)26200 OKContent-Type: application/json...{"pressure": {"type": "Integer","value": 720,"metadata": {}},"temperature": {"type": "Float","value": 25,"metadata": {}}}GET <cb_host>:1026/v2/entities/Room1/attrs
  • 27.
    使用例: Room クエリ(2)27200 OKContent-Type: application/json...{"pressure": 720,"temperature": 25}GET <cb_host>:1026/v2/entities/Room1/attrs?options=keyValues
  • 28.
    201 Created...使用例: Room作成 (2)POST <cb_host>:1026/v2/entitiesContent-Type: application/json...{"id": "Room2","type": "Room","temperature": {"type": "Float","value": 29},"pressure": {"type": "Integer","value": 730}}28
  • 29.
    使用例: フィルタ (1)29200OKContent-Type: application/json...[{"id": "Room2","pressure": 730,"temperature": 29,"type": "Room"}]GET <cb_host>:1026/v2/entities?options=keyValues&q=temperature>27
  • 30.
    使用例: フィルタ (2)30200OKContent-Type: application/json...[{"id": "Room1","pressure": 720,"temperature": 25,"type": "Room"}]GET <cb_host>:1026/v2/entities?options=keyValues&q=pressure==715..725フィルタリングのためのシンプル・クエリ言語の完全な記述は、NGSIv2仕様書に記載されています。
  • 31.
    Context Broker 操作:データのプッシュ• コンテキスト・コンシューマは、サブスクライブ(subscribe)操作を使用して特定の条件を満たすコンテキスト情報を受信するためにサブスクライブすることができます。このようなサブスクリプションには有効期限があります。• Context Brokerは、サブスクライブ操作をしたコンテキスト・コンシューマに、通知(notify)操作により、コンテキスト情報の更新を通知します。subId = subscribeContext (consumer, expr, expiration)コンテキスト・コンシューマnotify (subId, data/context)アプリケーション31
  • 32.
    使用例: サブスクリプション (Subscription)POST<cb_host>:1026/v2/subscriptionsContent-Type: application/json…{"subject": {"entities": [{"id": "Room1","type": "Room"}],"condition": {"attrs": [ "temperature" ]}},"notification": {"http": {"url": "http://<host>:<port>/publish"},"attrs": [ "temperature" ]},"expires": "2026-04-05T14:00:00.00Z"}201 CreatedLocation: /v2/subscriptions/51c0ac9ed714fb3b37d7d5a8...32
  • 33.
  • 34.
    POST /publish HTTP/1.1Content-type:application/json; charset=utf-8Ngsiv2-AttrsFormat: normalized…{"subscriptionId": "574d720dbef222abb860534a","data": [{"id": "Room1","type": "Room","temperature": {"type": "Float","value": 19,"metadata": {}}}]}使用例: 通知 (Notification)34
  • 35.
    既存のサブスクリプションの一覧表示35200 OKContent-Type: application/json…[{"id":" 51c0ac9ed714fb3b37d7d5a8 ","expires": "2026-04-05T14:00:00.00Z","status": "active","subject": {"entities": [{"id": "Room1","type": "Room"}],"condition": {"attrs": ["temperature"]}},"notification": {"timesSent": 3,"lastNotification": "2016-05-31T11:19:32.00Z","lastSuccess": "2016-05-31T11:19:32.00Z","attrs": ["temperature"],"attrsFormat": "normalized","http": {"url": "http://localhost:1028/publish"}}}]サブスクリプション・オブジェクト(そのすべてのフィールドを含む)の完全な説明は、NGSIv2仕様書に記載されていますGET <cb_host>:1026/v2/subscriptions
  • 36.
    Orion Context Brokerバッチ操作36• バッチ・クエリ と バッチ更新• これらは、前述の RESTful 操作と機能的に同等です• これらのすべては POST を動詞として使用し、/v2/op URL プレフィックスを使用します。これには JSON ペイロードの操作パラメータも含まれます• RESTful 操作では実現できない追加機能を実装しています。例えば、同じ操作で複数のエンティティを作成できます• これらは代用ではなく、RESTful 操作を補完するものです
  • 37.
    201 Created...バッチ操作の例: 複数ルームの作成POST<cb_host>:1026/v2/op/updateConten-Type: application/json...{"actionType": "append","entities": [{"type": "Room","id": "Room3","temperature": {"value": 21.2,"type": "Float"},"pressure": {"value": 722,"type": "Integer"}},…37…{"type": "Room","id": "Room4","temperature": {"value": 31.8,"type": "Float"},"pressure": {"value": 712,"type": "Integer"}}]}
  • 38.
    Orion を使用するには? (仮想マシン)38•FIWARE Lab イメージ– イメージ: orion-psb-image-R<x>.<y>• VirtualBox イメージ– http://bit.ly/fiware-orion024-vbox (サイズが巨大です)– User/pass:• fiware/fiware• root/fiware• ヒント: VM をデプロイしたら、Orion パッケージを更新してください
  • 39.
    Orion を使用するには? (Dockerコンテナ)39• あなたのシステムに Docker をインストールします• https://github.com/telefonicaid/fiware-orion/tree/develop/docker にあるドキュメントを見てください• クイック・ガイドgit clone https://github.com/telefonicaid/fiware-orion.gitcd fiware-orion/dockersudo docker-compose up• これで完了!– curl localhost:1026/version• Orion Docker を1分以内にインストールする– https://www.youtube.com/watch?v=6taR7e20H9U
  • 40.
    • FIWARE リファレンス・チュートリアル・アプリケーションを見てください–git clone https://github.com/Fiware/tutorials.TourGuide-App.git– cd tutorials.TourGuide-App/– docker-compose up orion– curl localhost:1026/version• ルートディレクトリの README.md の説明• Postman セッションを開いて、試します– Postman コレクション:https://github.com/Fiware/tutorials.TourGuide-App/blob/develop/contrib/CampusParty2016.postman_collection40これを試したいですか?
  • 41.
    Orion Context Brokerto Backbone Sync41• https://github.com/digitalilusion/o2bb
  • 42.
    Carto 用の NGSIコンテキスト・アダプタ42労力をかけずにマップにエンティティを表示し、ヒストリーアニメーション、ヒートマップ、クラスター表現を作成します• https://github.com/telefonicaid/fiware-dataviz
  • 43.
    Freeboard 用 NGSIプラグイン43エンジニア用のリアルタイム・ダッシュボードを作成し、ゲージ、スパークライン、マップを表示します。 コーディングは必要ありません!• https://github.com/telefonicaid/fiware-datavizさらに、フリーボードのフリーミアム版は、Orion の既製品
  • 44.
    • 簡単な方法– このプレゼンテーションは、https://github.com/telefonicaid/fiware-orion#introductory-presentations にあります– Orion ユーザ・マニュアル: “Orion FIWARE manual” を google で検索し、最初に見つかったものを使ってください– Orion カタログページ: “Orion FIWARE catalogue” を google で検索し、最初に見つかったものを使ってください• リファレンス– NGSIv2 仕様• http://fiware.github.io/specifications/ngsiv2/stable• http://fiware.github.io/specifications/ngsiv2/latest– Orion カタログ:• http://catalogue.fiware.org/enablers/publishsubscribe-context-broker-orion-context-broker– StackOverflow での Orion サポート• “fiware-orion” タグをつけて、質問してください• http://stackoverflow.com/questions/tagged/fiware-orion で既存のQ&Aを探してください44もっと知りたいですか?
  • 45.
    コンテキスト情報管理:高度なトピック(Managing Context InformationatLarge Scale: Advanced Topics)Fermín Galán Márquez - fermin.galanmarquez@telefonica.com(Reference Orion Context Broker version: 2.2.0)(Translated into Japanese by Kazuhito Suda k@fisuda.jp)
  • 46.
    46ページネーションメタデータ複合属性 メタデータ値タイプ・ブラウジングジオ・ロケーションクエリ・フィルタサポートカスタム通知通知ステータス属性 メタデータのフィルタリング特別な属性メタデータレジストレーション と コンテキスト・プロバイダマルチテナンシーOrion の高度な機能データの作成とプルデータのプッシュサブスクリプション と 通知バッチ操作一時的なエンティティワンショット・サブスクリプションサブスクリプションの強化
  • 47.
    • ページネーション• メータデータ•複合属性/メタデータ値• タイプ・ブラウジング• ジオ・ロケーション• クエリ・フィルター• DateTime サポート• 一時的なエンティティ• カスタム通知• 通知ステータス• ワンショット・サブスクリプション• サブスクリプションの強化• 属性/メタデータ・フィルタリングと特殊属性/メタデータ• 登録とコンテキストプロバイダ• マルチテナンシー• サービス・パス• CORS• プライベート・ネットワークでのサービスの通知47高度な機能
  • 48.
    • ページネーションは、クライアントが、クエリおよびディスカバリのリクエストよる多数のレスポンスを整理するのに利用できます。• 3つのURI パラメータ:– limit• ページあたりの要素数 (デフォルト: 20, 最大: 1000)– offset• スキップする要素の数 (デフォルト: 0)– count (オプション)• 合計要素を返します (デフォルト: 返しません)48ページネーション (Pagination)
  • 49.
    • 例, 最初の100エントリをクエリする:–GET <orion_host>:1026/v2/entities?limit=100&options=count• 最初の100個の要素が返され、レスポンスに次のヘッダーが返されます:– Fiware-Total-Count: 322• 今、322の要素があります。Orion Context Broker にそれらをクエリし続けることができます:– GET <orion_host>:1026/v2/entities?offset=100&limit=100– GET <orion_host>:1026/v2/entities?offset=200&limit=100– GET <orion_host>:1026/v2/entities?offset=300&limit=10049ページネーション (Pagination)
  • 50.
    • デフォルトでは、結果はエンティティの作成日順に並べられます• この動作はorderBy URI パラメータを使用してオーバーライドできます– コンマで区切られた属性のリスト(システム/組み込み属性を含む)、 id (エンティティIDの場合) および、型 (エンティティタイプの場合)。結果は最初のフィールドで並べられます。続いて、結果は02番名のフィールドなどによって順序付けされます。フィールド名の前の"!" は、順序が逆になっていることを意味します。• 例: 温度よる昇順で、次に湿度よる降順で最初の10エントリを取得しますGET <orion_host>:1026/v2/entities?limit=20&offset=0&orderBy=temp,!humidity• dateCreated と dateModified は、エンティティの作成および変更日ごとの順序付けにそれぞれ使用できます50ページネーション (Pagination)
  • 51.
    • ユーザは属性にメタデータを添付できます• 予約されたメタデータ:ID, location, dateCreated, dateModified,previousValue, actionType• 例:51…"temperature": {"type": "Float","value": 26.5,"metadata": {"accuracy": {"type": "Float","value": 0.9}}}……"temperature": {"type": "Float","value": 26.5,"metadata": {"average": {"type": "Float","value": 22.4}}}…メタデータ (Metadata)
  • 52.
    Attributes• Name• Type•ValueEntity• EntityId• EntityTypeMetadata• Name• Type• Value52完全な NGSI モデル1 nhas1 nhas
  • 53.
    • 属性とメタデータは、構造化された値を持つことができます。Vectors とkey-value マップをサポートしています• JSONのオブジェクトと配列に直接マップされます53複合属性/メタデータ値(Compound Attribute/Metadata Values)
  • 54.
    • 例: 4つのタイヤの空気を車のエンティティの複合属性として表現したい車があります。このような車のエンティティを作成します:{"type":"Car","id": "Car1","tirePressure": {"type": "kPa","value": {"frontRight": 120,"frontLeft": 110,"backRight": 115,"backLeft": 130}}}54複合属性/メタデータ値(Compound Attribute/Metadata Values)
  • 55.
    タイプ・ブラウジング (Type Browsing)•GET /v2/types• Orionに現在あるすべてのエンティティ・タイプのリストを取得します。対応する属性とエンティティ数も含まれます• GET /v2/types/{typeID}• エンティティタイプに関連付けられた属性およびエンティティの数を取得しますヒントGET /v2/contextTypes?options=values追加情報なしですべてのエンティティ・タイプのリストを取得します55
  • 56.
    • エンティティは、その場所を指定する属性を持つことができます• いくつかの属性タイプを使用できます–geo:point (ポイント)– geo:line (ライン)– geo:box (ボックス)– geo:polygon (ポリゴン)– geo:json (GeoJson 標準で任意のジオメトリ)• 例:マドリードというエンティティを作成...そしていくつかの町を作成:• Leganés (レガネス)• Alcobendas (アルコベンダス)POST <cb_host>:1026/v2/entities{"type": "City","id": "Madrid","position": {"type": "geo:point","value": "40.418889, -3.691944"}}56ジオ・ロケーション (Geo-location)
  • 57.
  • 58.
    ジオ・ロケーション – 最大距離58GET<cb_host>:1026/v2/entities?idPattern=.*&type=City&georel=near;maxDistance:13500&geometry=point&coords=40.418889,-3.691944
  • 59.
    ジオ・ロケーション – 最小距離59GET<cb_host>:1026/v2/entities?idPattern=.*&type=City&georel=near;minDistance:13500&geometry=point&coords=40.418889,-3.691944
  • 60.
    • near から離れて、次のgeorel を使用できます– georel=coveredBy– georel=intersects– georel=equals– georel=disjoint• 詳細な説明については、”NGSIv2 仕様”を参照してください60さらなる、地理関係 (geo-relationships)
  • 61.
    • GET /v2/entities操作• エンティティ・タイプ によるフィルタ• エンティティ id リスト によるフィルタ• エンティティ id のパターンによるフィルタ (正規表現)• エンティティ・タイプのパターンによるフィルタ (正規表現)• 地理上の位置によるフィルタ (geographical location)– 以前のスライドで詳しく説明しました• フィルタは同時に使用できます (AND条件など)61GET <cb_host>:1026/v2/entities?type=RoomGET <cb_host>:1026/v2/entities?id=Room1,Room2GET <cb_host>:1026/v2/entities?idPattern=^Room[2-5]GET <cb_host>:1026/v2/entities?typePattern=T[ABC]クエリ・フィルタ (Query filters)
  • 62.
    • 属性値によるフィルタ (q)•メタデータ値によるフィルタ (mq)• NGSIv2仕様の q および mq クエリ言語の詳細を参照してください62GET <cb_host>:1026/v2/entities?q=temperature>25GET <cb_host>:1026/v2/entities?q=tirePressure.frontRight >130属性名属性サブキー 複合属性値のみGET <cb_host>:1026/v2/entities?mq=temperature.avg>25GET <cb_host>:1026/v2/entities?mq=tirePressure.accuracy.frontRight >90メタデータサブキー複合メタデータ値のみ属性名メタデータ名クエリ・フィルタ (Query filters)
  • 63.
    63POST <cb_host>:1026/v2/subscriptions…{"subject": {"entities":[{"id": “Car5","type": “Car"},{"idPattern": "^Room[2-5]","type": "Room"},{"id": “D37","typePattern": "Type[ABC]"},],"condition": {"attrs": [ "temperature" ],"expression": {"q": "temperature>40","mq": "humidity.avg==80..90","georel": "near;maxDistance:100000","geometry": "point","coords": "40.418889,-3.691944"}}},…}• フィルタはサブスクリプションでも使用できます– id– タイプ– id パターン– タイプ・パターン– 属性値– メタデータ値– 地理上の位置クエリ・フィルタ
  • 64.
    Datetime サポート• OrionContext Broker は日付サポートを実装しています– ISO ISO8601フォーマット (部分表現とタイムゾーンを含む) に基づいています• See https://fiware-orion.readthedocs.io/en/master/user/ngsiv2_implementation_notes/index.html#datetime-support for syntax details– 日時を表すには、予約属性タイプの DateTime を使用します– 日付ベースのフィルタをサポートします64
  • 65.
    Datetime サポート• 属性値の算術フィルタは、日付が数字であるかのように使用できます•エンティティの dateModified と dateCreated の特殊属性,エンティティの作成と最終変更のタイムスタンプを取得します– それらは以下を使用してクエリ・レスポンスで示されますattrs=dateModified,dateCreated• エンティティの dateModified と dateCreated の特殊メタデータ, 属性の作成と最終変更のタイムスタンプを取得します– それらは以下を使用してクエリ・レスポンスで示されますmetadata=dateModified,dateCreated65POST /v2/entities…{"id": "John","birthDate": {"type": "DateTime","value": "1979-10-14T07:21:24.238Z"}}GET /v2/entities?q=birthDate<1985-01-01T00:00:00例: DateTime タイプを使用してbirthDate 属性でエンティティ“John”を作成します
  • 66.
    一時的なエンティティ (Transient entities)•dateExpires 時間に達すると、Orion はエンティティを自動的に削除します– 実際、一時的なエンティティは、有効期限の60秒後まで (データベースの負荷が高い場合はもう少し)、データベースに残る可能性があります• 注意してください!この方法で削除されたエンティティは回復できません• dateModified および dateCreated (前述) と同様に、dateExpires はデフォルトでは取得されません– attrs=dateExpires を使用してクエリのレスポンスに表示されます• dateExpires は、フィルタの他の DateTime 属性として使用できます。例:66POST /v2/entities…{"id": “Warning1","dateExpires": {"type": "DateTime","value": “2018-07-30T12:00:00Z"}}GET /v2/entities?q=dateExpires<2018-08-01T00:00:00例: エンティティ Warning1 を作成し、2018年7月30日正午に有効期限を設定
  • 67.
    • 以前のスライドで定義された標準フォーマットとは別に、NGSIv2ではすべての通知の側面を再定義できます• httpの代わりに httpInfo が使用され、以下のサブフィールドがあります– URL クエリ・パラメータ– HTTP メソッド– HTTP ヘッダ– ペイロード (必ずしもJSONではない!)• ${..} 構文に基づく単純なマクロ置換言語を使用して、エンティティ・データ (id, タイプ または 属性値)で”ギャップを埋める”ことができます– 例外: これは HTTP メソッドのフィールドでは使用できません67カスタム通知 (Custom notifications)
  • 68.
    68…"httpCustom": {"url": "http://foo.com/entity/${id}","headers":{"Content-Type": "text/plain"},"method": "PUT","qs": {"type": "${type}"},"payload": "The temperature is ${temp} degrees"}…PUT http://foo.com/entity/DC_S1-D41?type=RoomContent-Type: text/plainContent-Length: 31温度は23.4度ですPUT /v2/entities/DC_S1-D41/attrs/temp/value?type=Room…23.4カスタム通知設定updatenotificaitonカスタム通知 (Custom notifications)
  • 69.
    • ステータス failedは、最後に通知が失敗したことを意味します– 例: エンドポイントに到達できません• 通知要素(notifications element)の詳細情報– timesSent: 通知の合計回数(成功と失敗の両方)– lastSuccess: 通知が正常に送信された最後の時刻– lastFailure: 通知が試行され失敗した最後の時刻– lastNotification: 通知が送信された最後の時刻 (成功または失敗のいずれか)• 結果として、lastNotification の値はlastFailure または lastSuccess と同じです– lastFailureReason: 最後の失敗の原因(テキスト)– lastSuccessCode: 最後に成功した通知が送信されたときに受信エンドポイントから返された http コード (数値)69200 OKContent-Type: application/json…[{"id": " 51c0ac9ed714fb3b37d7d5a8 ","expires": "2026-04-05T14:00:00.00Z","status": "failed","subject": { … },"notification": {"timesSent": 3,"lastNotification": "2016-05-31T11:19:32.00Z","lastSuccess": "2016-05-31T10:07:32.00Z","lastFailure": "2016-05-31T11:19:32.00Z",…}}]通知ステータス (Notification status)
  • 70.
    70通知診断ワークフロー(Notification diagnosis workflow)サブスクリプションは期限切れになっているため、通知は送信されていません。サブスクリプションを更新してそれを永続的なものにするか、有効期限を延長しますサブスクリプションは非アクティブであるため、通知は送信されていません。サブスクリプションを更新して有効にします。通知が送信され、受信側エンドポイントは正しい受信を確認します。通知は送信されていますが、受信側のエンドポイントは、 HTTP エラーを報告しています。 受信エンドポイントを確認します (例 : ログなど)。通知が送信されないという問題があります。"lastFailureReason"フィールド値はそれに関する追加情報を提供するべきです。
  • 71.
    ワンショット・サブスクリプション(Oneshot subscription)• Activeステータスの変形です。したがって、サブスクリプションが1回トリガされると (つまり、通知が送信されると)、自動的にInactive ステータスに移行します• Inactive なサブスクリプションは、oneshot にステップして、プロセスをやり直すことができます• この場合、サブスクリプションの作成または更新時の初期通知は送信されません200 OKContent-Type: application/json…[{"id": "51c0ac..","status": "oneshot",…}200 OKContent-Type: application/json…[{"id": "51c0ac..","status": "inactive",…}}]サブスクリプションがトリガー71
  • 72.
    追加のサブスクリプションの強化(Additional subscription improvements)•初期通知は、サブスクリプションの作成/更新時にデフォルトで送信されますが、skipInitialNotification URI パラメータ・オプションを使用して回避することができます。例 :– POST /v2/subscriptions?option=skipInitialNotification• デフォルトでは、実際には属性値を変更しない更新では通知は発生しませんが、この動作は forcedUpdate URIparam オプションでオーバーライドできます。例 :– PATCH /v2/entities/E/attrs?options=forcedUpdate– PUT /v2/entities/E/attrs/A?options=forcedUpdate– POST /v2/op/update?options=forcedUpdate72
  • 73.
    • デフォルトでは、すべての属性はクエリのレスポンスまたは通知に含まれます• GET操作のパラメータとして、およびサブスクリプションの通知サブフィールドとして、attrsフィールドを使用して、フィルタリング・リストを指定できます• attrs フィールドは、特別な属性を明示的に含むためにも使用できます (デフォルトでは含まれていません)– dateCreated, dateModified, dateExpires:以前のスライドで説明しました• "*"は、 "すべての通常の属性"の別名として使用できます73属性フィルタリングと特殊属性(Attributes filtering and special attributes)
  • 74.
    • 例– tempと lum だけの属性を含めます• クエリで: GET /v2/entities?attrs=temp,lum• サブスクリプションで: "attrs": [ "temp", "lum" ]– 他の属性ではなく dateCreated を含めます• クエリで: GET /v2/entities?attrs=dateCreated• サブスクリプションで: "attrs": [ "dateCreated" ]– dateModified とその他すべての(通常の)属性を含めます• クエリで: GET /v2/entities?attrs=dateModified,*• サブスクリプションで: "attrs": [ "dateModified", "*" ]– すべての属性を含めます(attrsを使用しないのと同じ効果です)• クエリで: GET /v2/entities?attrs=*• サブスクリプションで: "attrs": [ "*" ]74属性フィルタリングと特殊属性(Attributes filtering and special attributes)
  • 75.
    • デフォルトでは、すべての属性メタデータはクエリのレスポンスと通知に含まれています• GET操作のパラメータとして、および、サブスクリプションの通知サブフィールドとして、metadataフィールドを使用して、フィルタリング・リストを指定できます• metadata フィールドは、明示的には含まれていない特別なメタデータを明示的に含むためにも使用できます– dateCreated, dateModified: 以前のスライドで説明しました– actionType: どの値が通知をトリガする更新に対応するアクション・タイプであるか : update”, “append” または “delete” (*)– previousValue: 通知をトリガする更新を処理する前の属性値を提供します• “*”は、 “すべての通常のメタデータ"の別名として使用できます75メタデータのフィルタリングと特殊メタデータ(Metadata filtering and special metadata)(*) actionType "delete" は、まだ、Orion 2.2.0 でサポートされていません
  • 76.
    • 例– メタデータMD1 と MD2 のみを含めます• クエリで: GET /v2/entities?metadata=MD1,MD2• サブスクリプションで: "metadata": [ "MD1", "MD2" ]– previousValue を含み、他のメタデータは含みません• クエリで: GET /v2/entities?metadata=previousValue• サブスクリプションで: "attrs": [ "previousValue" ]– actionType とその他すべての通常のメタデータを含めます• クエリで: GET /v2/entities?metadata=actionType,*• サブスクリプションで: "attrs": [ "actionType", "*" ]– すべてのメタデータを含めます (メタデータを使用しない場合と同じ効果です)• クエリで: GET /v2/entities?metadata=*• サブスクリプションで: "metadata": [ "*" ]76メタデータのフィルタリングと特殊メタデータ(Metadata filtering and special metadata)
  • 77.
    • キャッシュされていないクエリと更新77アプリケーションContextBrokerコンテキスト・プロバイダ db2.クエリ 3. クエリ4. データ5. データコンテキスト・コンシューマレジストレーション と コンテキスト・プロバイダ1. register(provider= )
  • 78.
    POST <cb_host>:1026/v2/registrations…{"description": "Registrationfor Car1","dataProvided": {"entities": [{"id": "Car1","type": "Car"}],"attrs": ["speed"]},"provider": {"http": {"url": "http://contextprovider.com/Cars"},"legacyForwarding": true}}201 CreatedLocation: /v2/registrations/5a82be3d093af1b94ac0f730…78レジストレーション と コンテキスト・プロバイダ(*)現在のOrionバージョンにはいくつかの制限があります。 https://fiware-orion.readthedocs.io/en/master/user/ngsiv2_implementation_notes/index.html#registrations
  • 79.
    79GET <cb_host>:1026/v2/entities/Car1/attrsContextBroker コンテキスト・プロバイダdbクエリデータ200OKContent-Type: application/json...{"type": "Float","value": 110,"metadata": {}}レジストレーション と コンテキスト・プロバイダ
  • 80.
    • 論理データベース分離に基づく単純なマルチテナントモデル• 他コンポーネントによって提供されるテナントベースの認証を容易にします•“Fiware-Service” という追加の HTTP ヘッダにテナント名を指定して使用してください例:Fiware-Service: Tenant1ContextBrokerテナント1テナント2…80マルチテナンシー (Multitenancy)
  • 81.
    • サービス・パスは、作成時に POST/v2/entities でエンティティに割り当てられた階層スコープです81サービス・パス (Service Paths)
  • 82.
    • サービス・パスを使用するために、“Fiware-ServicePath” と呼ばれる新しいHTTP ヘッダを挿入します。 例:Fiware-ServicePath: /Madrid/Gardens/ParqueNorte/Parterre1• プロパティ:– サービス・パスのクエリは、指定されたノードのみを検索します– すべての子ノードを含めるには "ParentNode/#" を使用します– Fiware-ServicePath のないクエリは “/#” と解釈します– エンティティはデフォルトで "/" ノードに入りますParqueNorteParterre2Parterre182サービス・パス (Service Paths)
  • 83.
    • プロパティ (続き):–ヘッダーにカンマ(,)演算子を使用してクエリをORできます• 例えば、ParqueSur または ParqueOesteにあるすべての街灯を照会するには:ServicePath: Madrid/Gardens/ParqueSur,Madrid/Gardens/ParqueOeste• 最大10個の異なるスコープを OR することができます– 最大スコープ・レベル: 10• Scope1/Scope2/.../Scope10– さまざまなスコープで同じ要素 ID を持つことができます(これに注意してください)– 要素が作成されると、範囲を変更することはできません– 1つのエンティティは1つのスコープにのみ属することができます– クエリだけでなく、サブスクリプション/通知でも機能します– NGSI10だけでなく、レジストレーション/ディスカバリー(NGSI9)でも機能しますParqueNorteParterre1light1light1A BA or B83サービス・パス (Service Paths)
  • 84.
    • バックエンドなしでブラウザで完全に実行されるプログラミング・クライアントに役立ちます– NGSIv2での完全サポート (pre-flightのリクエストを含む)– NGSIv1 での部分的なサポート (GETリクエストのみ)• CORS に関連する CLI パラメータ– -corsOrigin– -corsMaxAge• 詳細– https://fiware-orion.readthedocs.io/en/master/user/cors/index.htmlクロス・オリジン・リソース共有 (CORS)(Cross-Origin Resource Sharing )
  • 85.
    85notify Private NetworkPrivateNetwork./ngrok http 8080http://9762d35a.ngrok.ioプライベート・ネットワークでのサービスの通知
  • 86.
    • 簡単な方法– このプレゼンテーションは、https://github.com/telefonicaid/fiware-orion#introductory-presentations にあります– Orion ユーザ・マニュアル: “Orion FIWARE manual” を google で検索し、最初に見つかったものを使ってください– Orion カタログページ: “Orion FIWARE catalogue” を google で検索し、最初に見つかったものを使ってください• リファレンス– NGSIv2 仕様• http://fiware.github.io/specifications/ngsiv2/stable• http://fiware.github.io/specifications/ngsiv2/latest– Orion カタログ:• http://catalogue.fiware.org/enablers/publishsubscribe-context-broker-orion-context-broker– StackOverflow での Orion サポート• “fiware-orion” タグをつけて、質問してください• http://stackoverflow.com/questions/tagged/fiware-orion で既存のQ&Aを探してください86もっと知りたいですか?
  • 87.
  • 88.
    既存のシステムとの統合• コンテキスト・アダプタは、コンテキスト・プロバイダ、コンテキスト・プロデューサ、またはその両方として機能する既存のシステム (例えば、スマート・シティの地方自治体サービス管理システム)とインターフェースするために開発さます• 特定のエンティティからのいくつかの属性はコンテキストプロバイダにリンクされていてもよく、他の属性はコンテキストプロデューサにリンクされていてもよいですqueryContext (e1,attr1, attr2)コンテキスト・プロバイダqueryContext (e1,attr1)コンテキスト・コンシューマupdateContext (e1,attr2)アプリケーションContext BrokerSystem BSystem A88
  • 89.
    センサ・ネットワークとの統合• Backend IoTDevice Management GE は、センサ・ネットワークに接続するNGSI IoT Agent の作成と設定を可能にします• 各 NGSI IoT Agent は、コンテキスト・コンシューマ または コンテキスト・プロバイダ、またはその両方として動作できますcreate/monitorノース・バウンド・インターフェースサウス・バウンド・インターフェースETSI89
  • 90.
    • Federation ofinfrastructures (private/public regions)• Automated GE deploymentCloud• Complete Context Management Platform• Integration of Data and Media ContentData•Easy plug&play of devices using multiple protocols•Automated Measurements/Action Context updatesIoT•Visualization of data (operation dashboards)•Publication of data sets/servicesApps•Easy support of UIs with advanced web-based 3D and ARcapabilities•Visual representation of context information.Web UI•Advanced networking capabilities (SDN) and Middleware•Interface to robotsI2ND•Security Monitoring•Built-in Identity/Access/Privacy ManagementSecurityFIWARE におけるコンテキスト管理90
  • 91.
    Context/Data Management PlatformApplicationsOMANGSI-9/10Processing/AnalysisAlgorithmsGathered data isinjected forprocessing/analysisDistributedContextSources Complex EventProcessing(PROTON)BigData(COSMOS)Processed data isinjected forprocessing/analysisData generated either by CEPor BigData is publishedGathered data injectedfor CEP-like processingDirectbigdatainjectionProgramming ofrules91FIWARE コンテキスト/データ管理プラットフォーム
  • 92.
    • /v2/op/update によって使用(バッチ操作)• コンベンショナルな actionTypes– append: アペンド (または 属性がすでに存在するときは、更新)– update: 更新– delete: 削除• 特別な actionTypes– appendStrict: 厳密な追加 (追加する属性がすでに存在する場合はエラーを返します)– replace: すべてのエンティティ属性を削除し、次に更新リクエスト内の属性を追加します92特別な更新アクション・タイプ

[8]ページ先頭

©2009-2025 Movatter.jp