• 検索結果がありません。

デモ環境の全体図

N/A
N/A
Protected

Academic year: 2021

シェア "デモ環境の全体図"

Copied!
31
0
0

読み込み中.... (全文を見る)

全文

(1)

oneM2Mアプリケーション開発

チュートリアル

oneM2M編

-株式会社KDDI総合研究所

奥井 宣広

(2)

アジェンダ

1. oneM2Mの概要と仕様の紹介

2. デモとoneM2M仕様のマッピング

3. アプリケーションの構成

4. 開発に必要なoneM2Mの仕様

5. oneM2Mのオープンソース

6. AE用オープンソースの紹介

7. AndroidとoneM2Mとの連携

8. Android wearアプリ開発

9. 可視化サービス

Appendix. デモ環境構築手順

oneM2M編

プログラム編

(3)
(4)

IoTアプリケーション開発における課題

E.g. Cellular, Fixed, Wi-Fi, …

IoT Device Underlying Networks

E.g. DTLS, TLS, PSK, PKI, …

IoT Device Security Models

E.g. HTTP(s), CoAP(s), MQTT(s), WebSockets, …

IoT Device Transport Protocols

E.g. XML, JSON, CBOR, Plain-Text, …

IoT Device Content Serializations

E.g. OCF, LWM2M, Thread, OMA DM, TR-069, …

IoT Services and Management Technologies

E.g. SAREF, W3C TD, …

IoT Device Semantic Ontologies

IoTで使用できる技術の組み合わせが多くて煩雑

LWM2M

XML JSON CBOR …

HTTP(s)

Cellular Fixed Wi-Fi … TLS/PSK TLS/PKI DTLS/PSK … CoAP(s) MQTT(s) … OCF OMA DM BBF … oneM2M W3C TD SAREF …

(5)

oneM2Mを利用するメリット

仕様検討のコスト削減

• oneM2Mの学習コストと天秤

→本セミナーを通じて学習コスト削減を期待

• 全面採用せずとも参考にはなるはず

拡張性のある仕様

• 継ぎ接ぎだらけの仕様を避けたい

運用保守コストの削減

• いろんな部署でIoTを検討していませんか?

様々なユースケースを想定して検討された

グローバルでオープンな仕様

(6)

oneM2Mのオープンソース

CSE用オープンソース

AE用オープンソース

(7)

oneM2Mアーキテクチャ

IN CSE AE MN CSE AE ASN CSE AE ADN AE ADN AE ASN CSE AE IN Infrastructure Node MN Middle Node

ASN Application Service Node ADN Application Dedicated Node CSE Common Service Entity

AE Application Entity

(8)

oneM2Mのプリミティブ

Originator Receiver

Request

Response

Request Primitive Parameter Short name Data Type 説明

op op m2m:operation CRUD+N

to to xs:anyURI ターゲットリソースアドレス

from fr m2m:ID 送信者アドレス

request identifier rqi m2m:requestID リクエスト識別子

resource type rt m2m:resourceType リソースタイプ

content pc m2m:primitiveContent リソースの内容

Response Primitive Parameter Short name Data Type 説明

response status code rsc m2m:responseStatusCode ステータスコード

request identifier ri m2m:requestID リクエストと同じ値

(9)

シリアライゼーション

Release2では、以下の3つをサポート

• XML

• JSON

• CBOR

JSON形式で心拍数データを登録する場合の例

←今回のデモではJSONを使用する

{ "m2m:cin" : { "cnf" : "application/text", "con" : ”62" } }

(10)

プロトコルバインディング

Release2では以下のプロトコルをサポート

• HTTP

、MQTT、CoAP、WebSocket

Request Primitive Parameter HTTP Mapping op Method to Request target from X-M2M-Origin

request identifier X-M2M-RI resource type Content-Type content Message Body

Response Primitive Parameter

HTTP Mapping

response status code X-M2M-RSC request identifier X-M2M-RI

content Message Body

oneM2M op HTTP Method Create POST Retrieve GET Update PUT Delete DELETE Notify POST

(11)

プロトコルバインディングの例

心拍数データをHTTP+JSONで登録する場合

POST /~/in-cse/in-name/receiver-demo-ae/led_status HTTP/1.1 X-M2M-Origin: X-M2M-RI: Content-Type: application/json;ty=4 { "m2m:cin" : { "cnf" : "application/text", "con" : ”62" } }

(12)

リソース

 全てのリソースはRESTful APIで操作

• 全てのリソースは一意なURIで識別

• リソースに対してCRUDによる操作

Value Interpretation 1 accessControlPolicy 2 AE 3 container 4 contentInstance 5 CSEBase 6 delivery 7 eventConfig 8 execInstance 9 group 10 locationPolicy 11 m2mServiceSubscriptionProfile 12 mgmtCmd 13 mgmtObj 14 node 15 pollingChannel 16 remoteCSE 17 request 18 schedule 19 serviceSubscribedAppRule 20 serviceSubscribedNode 21 statsCollect 22 statsConfig 23 subscription 24 semanticDescriptor 25 notificationTargetMgmtPolicyRef 26 notificationTargetPolicy 27 policyDeletionRules 28 flexContainer 29 timeSeries 30 timeSeriesInstance 31 role 32 token 33 trafficPattern 34 dynamicAuthorizationConsultation 35 authorizationDecision 36 authorizationPolicy 37 authorizationInformation 38 ontologyRepository 39 ontology 40 semanticMashupJobProfile 41 semanticMashupInstance 42 semanticMashupResult 10001 accessControlPolicyAnnc 10002 AEAnnc 10003 containerAnnc 10004 contentInstanceAnnc 10009 groupAnnc 10010 locationPolicyAnnc 10013 mgmtObjAnnc 10014 nodeAnnc 10016 remoteCSEAnnc 10018 scheduleAnnc 10024 semanticDescriptorAnnc 10028 flexContainerAnnc 10029 timeSeriesAnnc 10030 timeSeriesInstanceAnnc 10033 trafficPatternAnnc 10034 dynamicAuthorizationConsultationAnnc 10038 ontologyRepositoryAnnc 10039 ontologyAnnc 10040 semanticMashupJobProfileAnnc 10041 semanticMashupInstanceAnnc

Value

Interpretation

2

AE

3

container

4

contentInstance

5

CSEBase

23

subscription

本デモで使用するリソース

時系列データは<timeSeries>と<timeSeriesInstance>を使用することが推奨され ますが、本デモは汎用的な<container>と<contentInstance>を使用します。

(13)

リソース構造

<CSEBase>

<AE>

<container>

<contentInstance>

<contentInstance>

<subscription>

CSE内のリソース構造

CSEのルートディレクトリ AEのデータを格納するディレクトリ データ種別を分けるディレクトリ 登録したリソースの変更通知、通知先などを記述 AEが生成するデータが格納 1データ単位=1<contentInstance>

<container>

<container>

<contentInstance>

<contentInstance>

<AE>配下に複数作成可能 <container>配下に作成することもできる

(14)

リソースのアドレス規則

resourceNameとresourceID

• resourceName: Originatorが指定して登録することが可能

• resourceID: CSEがユニークに払い出す

階層アドレスと非階層アドレス

• 階層アドレス:resourceNameを使用する

• 非階層アドレス: resourceIDを使用する

絶対アドレスと相対アドレス

• CSE-Relative: CSE内でユニーク

• SP-Relative: Service Provider内でユニーク

• Absolute: 全世界でユニーク

(15)

リソースアドレス

in-name /in-cse sensor_app_ae CAE20180831 heart_rate cnt-1234567 上段: resourceName 下段: resourceID <CSEBase> <AE> <container> CSE-Relative http://192.168.10.10:7579/cnt-1234567 SP-Relative http://192.168.10.10:7579/~/in-cse/cnt-1234567

Absolute http://192.168.10.10:7579/_/onem2m.org/in-cse/cnt-1234567 IP Address: 192.168.10.10

Port: 7579

Domain: onem2m.org

CSE-Relative http://192.168.10.10:7579/in-name/sensor_app_ae/heart_rate

SP-Relative http://192.168.10.10:7579/~/in-cse/in-name/sensor_app_ae/heart_rate

Absolute http://192.168.10.10:7579/_/onem2m.org/in-cse/in-name/sensor_app_ae/heart_rate

非階層アドレス

(16)
(17)

デモ内容

Android Wearで取得したセンサデータをサーバに保存

• Androidスマートホン経由でサーバに送信

• AndroidスマートホンでoneM2Mプロトコルに変換

センサデータの可視化

• センサデータを保管しているサーバは、新規データ登録時に自動

的に可視化サーバにデータを転送

• 可視化サーバはデータを受領後、DBに保管し、可視化ツールを

使用してセンサデータを可視化

(18)

デモ構成

プラットフォーム 可視化サービス Infrastructure Domain Field Domain oneM2M Non-oneM2M Metabase

Heart rate / Light

Heart rate / Light

Heart rate / Light

oneM2Mのプロトコルに 変換して送信

Polar M600

(19)

デモ構成(oneM2M)

プラットフォーム 可視化サービス Infrastructure Domain Field Domain oneM2M Non-oneM2M Metabase

Heart rate / Light

Heart rate / Light

Heart rate / Light

oneM2Mのプロトコルに 変換して送信

IN-CSE

ADN-AE

(20)

デモシーケンス

Android Wear Android Smartphone プラットフォーム (1-2) AEの生成 (2-1) Container(heart rate)の生成 (3-1) Subscription(heart rate)の生成 (5-1) contentInstance(heart rate)の生成 (6-1) Notification(heart rate) 可視化サービス (4-1)heart rateの送信 (1-1) AEの生成 (2-2) Container(light)の生成 (3-2) Subscription(light)の生成 (4-2)lightの送信 (5-2) contentInstance(light)の生成 (6-2) Notification(light) AE CSE AE

(21)

デモにおけるリソース構造

Mobius /in-cse M600_001 S20180821053115321TvXk heartrate SyXx1cmY8Q <CSEBase> <AE> <container> light HymFcoQYUm heartrate_subscription SJXEu67FI7 <subscription> light_subscription Sy7Lue4Y87 <subscription>

(22)

(1) Create <AE>: Request

URL http://52.246.165.212:7579/Mobius

METHOD POST

HEADERS Content-Type application/json;ty=2 X-M2M-Origin S X-M2M-RI 1 BODY { "m2m:ae" :{ "api" : "sensor-app", "rn" : "M600_001", "rr" : false } } Android Smartphone プラットフォーム Request Create <AE>

X-M2M-Originには、OriginatorのresourceIDを 入力するが、AEの登録に限っては、 S、C、未記入のいずれかにする resourceType=2は<AE>を示している Application-ID Applicationごとに同一にする <AE>のresourceName <AE>生成時にアプリケーション側で指定している。 CSEのresourceName

(23)

AE-ID

IN-CSE

MN-CSE

ADN

ADN

• AE-IDは、SまたはCで始まる • SとCでIDのユニーク性を担保する範囲が異なる • AE-IDはCSEが払い出す • AE登録時のOriginatorヘッダで、S形式かC形式 かを指定できる • S形式:S(例:SAE001) • C形式:C(例:CAE001) • AE-IDの形式を指定しない場合は、Originatorに 関するヘッダを付けない S形式でユニークな範囲 C形式でユニークな範囲

TS-0001: 7.1.2 Application Entity Identifier (AE-ID)

(24)

(1) Create <AE>: Response

201 Created

HEADERS X-Powered-By: Express Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS

Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, X-M2M-RI, X-M2M-RSC, Accept, X-M2M-Origin, Locale Access-Control-Expose-Headers: Origin, X-Requested-With, Content-Type,

X-M2M-RI, X-M2M-RSC, Accept, X-M2M-Origin, Locale Content-Location: S20180821053115321TvXk

X-M2M-RI: 1

X-M2M-RSC: 2001

Content-Type: application/json

Date: Tue, 21 Aug 2018 05:31:15 GMT Connection: keep-alive Content-Length: 212 bytes BODY { "m2m:ae": { "rn": "M600_001", "ty": 2, "pi": "HkbCDpg9M", "ri": "S20180821053115321TvXk", "ct": "20180821T053115", "et": "20210821T053115", "lt": "20180821T053115", "api": "sensor-app", "rr": false, "aei": "S20180821053115321TvXk" } } Android Smartphone プラットフォーム Request Create <AE>

CSEによりAE-ID (=resourceID)が 払い出された

Requestと同じ値

(25)

(2) Create Container

Android

Smartphone プラットフォーム Request Create <container>

URL http://52.246.165.212:7579/Mobius/M600_001

METHOD POST

HEADERS Content-Type application/json;ty=3 X-M2M-Origin S20180821053115321TvXk X-M2M-RI 2 BODY { "m2m:cnt" : { "rn" : "heartrate" } } BODY { "m2m:cnt": { "rn": "heartrate", "ty": 3, "pi": "S20180821053115321TvXk", "ri": "SyXx1cmY8Q", "ct": "20180821T055743", "et": "20210821T055743", "lt": "20180821T055743", "st": 0, "mni": 3153600000, "mbs": 3153600000, "mia": 31536000, "cr": "S20180821053115321TvXk", "cni": 0, "cbs": 0 } } Request Response • AE(M600_001)配下にcontainerを生成する • ResourceType=3はcontainerを示す • AEからのRequestであるため、X-M2M-Originには、 AE-IDを付ける • containerのresourceNameとしてheartrateを指定 している • pi=parentID、AE配下であるため、 AEのresourceID(=AE-ID)が記述さ れている • ri=resourceID、containerの resourceIDがCSEから払い出され ている • mni=maxNrOfInstatances、 container配下に保持できる contentInstanceの個数 • mbs=maxByteSize、container配下 に保持できるデータの総容量 • mia=maxInstanceAge、保持する contentInstanceに期間。秒単位。 • cni=currentNrOfInstances、現在 のcontentInstanceの数 • cbs=currentByteSize、現在のデー タの総容量

(26)

(3) Create Subscription: Request

Android

Smartphone プラットフォーム

Request Create <subscription>

URL http://52.246.165.212:7579/Mobius/M600_001/heartrate

METHOD POST

HEADERS Content-Type application/json;ty=23 X-M2M-Origin S20180821053115321TvXk X-M2M-RI 3 Request BODY { "m2m:sub": { "enc": { "net": [ 3 ] }, "ln": true, "nu": [ "http://13.78.11.160:8080/heartrate_subscription" ], "nct": 1, "rn": "heartrate_subscription" } } • container配下にsubscriptionを作成 • resourceType=23はsubscriptionを示す • enc=eventNotificationCriteria、Notificationを生成する条件を 記述 • net=notificationEventType、Notification生成のトリガー。 3は、配下にリソースが生成された時をトリガーとする。 • nu=notificationURI、Notification転送先を記述 • nct=notificationContentType、Notificationで転送する内容。 1は、全てのアトリビュート。

(27)

(3) Create Subscription: Response

Android

Smartphone プラットフォーム

Response Create <subscription>

BODY { "m2m:sub": { "rn": "heartrate_subscription", "enc": { "ty": 23, "net": [ "pi": "SyXx1cmY8Q", 3 "ri": "SJXEu67FI7", ] "ct": "20180821T061259", }, "et": "20210821T061259", "ln": "true", "lt": "20180821T061259", "nct": 1, "nu": [ "cr": "S20180821053115321TvXk" "http://13.78.11.160:8080/heartrate _subscription" } ], }

(28)

(5) Create contentInstance: Request

Android

Smartphone プラットフォーム

Request Create <contentInstance>

URL http://52.246.165.212:7579/Mobius/M600_001/heartrate

METHOD POST

HEADERS Content-Type application/json;ty=4

X-M2M-Origin S20180821053115321TvXk

X-M2M-RI 4

BODY {

"m2m:cin": {

"cnf": "application/json",

"con": "{ ¥"value¥":¥"60¥", ¥"time¥":¥"2018/08/21 16:20:37.044¥" }"

}

• cnf=contentInfo、contentのメディアタイプ などを記載(IETF RFC 6838)

(29)

(5) Create contentInstance: Response

BODY { "m2m:cin": { "rn": "4-20180821072101876o0he", "ty": 4, "pi": "SyXx1cmY8Q", "ri": "BkmLw64tLX", "ct": "20180821T072101", "et": "20210821T072101", "lt": "20180821T072101", "st": 2, "cs": 47, "cnf": "application/json", "con": { "value": "60", "time": "2018/08/21 16:20:37.044" }, "cr": "S20180821053115321TvXk" } } Android Smartphone プラットフォーム

Response Create <contentInstance>

(30)

(6) Notification

Android

Smartphone プラットフォーム

Response Create <contentInstance>

URL http://13.78.11.160:8080/heartrate_subscription METHOD POST HEADERS BODY { "m2m:sgn": { "net": "3", "lt": "20180821T072101", "st": 2, "cs": 47, "sur": "/Mobius/M600_001/heartrate/heartrate_subscri ption", "cnf": "application/json", "nec": "", "con": { "nev": { "value": "60", "rep": { "time": "2018/08/21 16:20:37.044" "m2m:cin": { }, "rn": "4-20180821072101876o0he", "cr": "S20180821053115321TvXk" "ty": 4, } "pi": "SyXx1cmY8Q", } "ri": "BkmLw64tLX", }

contentInstanceが

送信されている

(31)

oneM2Mの教材

主要な仕様書

(http://www.onem2m.org/technical/published-drafts)

• TS-0001: Functional Architecture

• TS-0004: Service Layer Core Protocol

補助的な資料

(http://www.onem2m.org/technical/published-drafts)

• TS-0011: Common Terminology

• TR-0025: Application Developer Guide

• TR-0051: oneM2M API Guide

Webinar

(http://www.onem2m.org/insights/webinars)

• oneM2M Release 2 Overview

参照

関連したドキュメント

JICA

運転時の異常な過渡変化及び設計基準事故時に必要な操作は,中央制御室にて実施可

操作は前章と同じです。但し中継子機の ACSH は、親機では無く中継器が送信する電波を受信します。本機を 前章①の操作で

全体構想において、施設整備については、良好

現行アクションプラン 2014 年度評価と課題 対策 1-1.

番号 主な意見 対応方法等..

その限りで同時に︑安全配慮義務の履行としては単に使

この設備によって、常時監視を 1~3 号機の全てに対して実施する計画である。連続監