これは、Pelion Device Managementとクライアントデバイス間のデバイス通信の対話型サンプルページです。
Pelion Device ManagementサービスAPIを使用して、デプロイされたデバイスと通信する方法を理解することが出来ます。
この使用例のソースコードはこちらです。
事前準備
このページを使用するには、以下の準備が必要です。
- Pelion Device Management APIキー (Get API key)
- mbed-cloud-client-example または mbed-os-example-pelionが書き込まれたデバイス
APIキー
APIキーを入力します(APIキーは、ak_...から始まる文字列です)。 APIキーと取得方法については オンラインドキュメントを参照してください。
Event notificationチャネルを開き、デバイスからイベントを受信する
デバイスからのメッセージを受信するには、Event notificationチャネルを開く必要があります。この例では、WebSocket notificationチャネルを使用しています。
以下の手順で、WebSocketを使用することが出来ます。この手順の詳細は、 こちらを参照してください。一つのAPIキーでオープンできるnotificationチャネルは、一つだけです。
WebSocket notificationチャネルの作成
まず最初にEvent notificationチャネルを開きます。 下のボタンをクリックし、 PUT /v2/notification/websocket サービスAPIを使用してWebSocket notificationチャネルを作成します。
WebSocket notificationチャネルに接続
WebSocket notificationチャネルを作成した後に、 GET /v2/notification/websocket-connect サービスAPIを使用して接続します。
これでEvent notificationチャンネルが開きました。デフォルトでは、デバイスのライフタイムイベント(Register, Register-Update and Expire)を受け取ることができます。
デバイスとの接続
電源を入れるかリセットを行ってデバイスをPelionに接続します。 reqistration または reg-updateイベントが下記のNotification Channelに表示されているはずです。
デバイスの選択
まず、下の「このコードを実行」ボタンをクリックすると、registered状態のデバイスが表示されます。 GET /v3/devices はデバイスリストの取得に使用されます。
上のボタンをクリックすると、下のリストに登録されているデバイスが表示されます。対象のデバイスを選択してください。
デバイスのリソースに書き込む
POST /v2/device-requests でデバイスにリソースアップデートリクエストを送ります。 詳細の説明は、こちらを参照してください。
書き込みリクエストでデバイスの設定を行うことができます。このアプリケーションの例ではLEDを点滅できますが、"pattern_resource"/3201/0/5853に書き込み、新しい点滅パターンを設定してみましょう。 このリソースのデフォルト値は、"500:500:500:500"です。これを、"500:1000:500:1000"に変更してみます。この値はBase64にエンコードされる必要があるので、スクリプトで変換処理します。
デバイスがリクエストを受け入れた場合、Notification Channelに非同期レスポンスが表示されます。また、デバイスのユーザーLEDが500ms、1000ms、500ms、1000msと指定したパターンで点滅します。
デバイスからリソースを読み込む
POST /v2/device-requests/{device-id} でデバイスにリソース読み込みリクエストを送ることができます。 詳細の説明は、こちらを参照してください。
ここでは、デジタル入力カウンタ /3200/0/5501 リソースを読み込んでみます。
キャッシュに関して
デバイスのクライアントでmax-age値が設定されている場合、デバイスから読み込まれた値はmax-age用にキャッシュされます:
https://www.pelion.com/docs/device-management/current/connecting/device-guidelines.html#resource-cache
キャッシュされた値が有効な場合、それがレスポンスとして返されます。ウェブアプリがキャッシュされた値ではなく、デバイスから現在の値を取得する必要がある場合、デバイスクライアントで max-age を 0 (デフォルトは 0) に設定する必要があります。
リソースのサブスクライブ
サブスクライブ
PUT /v2/subscriptions/{device-id}/{resourcePath} でデバイスのリソースをサブスクライブします。
ここでは、デジタル入力カウンタ /3200/0/5501 リソースをサブスクライブします。
非同期レスポンスを受信し、その後にリソース変更の通知が表示されます。
サブスクライブの停止
リソースのサブスクライブを停止する場合、 DELETE /v2/subscriptions/{device-id}/{resourcePath} を使用します。
リソースのプリサブスクライブ
リソースをプリサブスクライブするには、PUT /v2/subscriptions を使用します。
プリサブスクリプションは、与えられたルールに基づいてリソースを自動的にサブスクライブします。 リソースを持つデバイスが設定されたルールに一致すると、デバイス管理コネクトサービスは、アプリケーションに代わってデバイスにサブスクリプション(監視)要求を送信します。 プリサブスクリプションの詳細は、このドキュメントを参照してください。
サブスクライブ
デジタル入力カウンタ /3200/0/5501 リソースをプリサブスクライブします。プリサブスクライブするには、PUT /v2/subscriptions を使用します。 この場合、デジタル入力カウンタ/3200/0/5501リソースを持つデバイスは、デバイスが登録または更新登録を行うと自動的にサブスクライブされます。
リセットボタンを押してデバイスを再起動してみてください。リソース/3200/0/5501は自動的にサブスクライブされ、Notificationチャンネルに通知が表示されます。
サブスクライブの停止
プリサブスクリプションを解除するには、DELETE /v2/subscriptions を使用します。
リソースの通知ルールを設定する
ウェブアプリケーションは、オブジェクト、オブジェクトインスタンス、またはリソースにルールベースのサブスクリプションを設定することができます。
サブスクライブ
通知ルールの設定以外に、/3200/0/5501のサブスクライブが必要なので注意してください。
通知ルールの設定
デバイスは5秒ごとにデジタル入力カウンタ/3200/0/5501を更新し、Pelionデバイス管理サービスに報告します。 しかし、ウェブアプリは1分ごとにしかデータが必要なく、冗長なデータを受信したくない場合があります。 このような場合、最小レポート期間を設定する通知ルールpminを使用することができます。 通知ルールの詳細は、こちらを参照してください。
デジタル入力カウンタ/3200/0/5501のサブスクリプションに1分のpminを設定するには、POST /v2/device-requests/{device-id} でtMinを指定します。 URIフィールドにリソースパスをpmin=60で指定します。これはスクリプトで行います。
サブスクライブの停止
リソースのサブスクライブを停止するには、 DELETE /v2/subscriptions/{device-id}/{resourcePath} を使用します。
WebSocket notificationチャネルの削除
最後に、APIキーにバインドされているWebSocket notificationチャネルを削除します。 DELETE /v2/notification/websocket を使用します。 これは、チャンネルをwebsocketから別のタイプに変更するために必要です。
- 以上 -