デバイス情報の通知¶
ここでは、My-IoTエッジに接続されたデバイス情報の通知仕様について記載しています。
USBデバイスについて¶
My-IoTエッジに接続されたUSBデバイスについて、下記の情報をIoTストアから確認することができます。
デバイス名
ベンダー名
種別
シリアル
USBデバイスのデバイス名、VID、PID、およびシリアル情報は定期的にMy-IoTエッジで収集され、IoTストアに通知されます。通知対象のデバイス種別は、デバイスクラスとインターフェイスによって決定されます。
デバイスクラス |
インターフェイスクラス |
---|---|
00h Device |
01h Audio
06h Image
0Eh Video
10h Audio/Video Devices
|
EFh Miscellaneous
※サブクラス:02h、プロトコル:01hのみ
|
01h Audio
06h Image
0Eh Video
10h Audio/Video Devices
|
FFh Vendor Specific |
- |
Wi-Fiデバイスについて¶
My-IoTエッジでは、My-IoTエッジにWi-Fiで接続されたデバイスを検出することができないため、Wi-Fiデバイス情報をIoTストアへ自動で通知することができません。
Wi-Fiデバイスを管理したい場合は、開発者がデバイス仕様に合わせてデバイス情報を収集し、IoTストアへ通知するようエッジアプリの実装を行う必要があります。
IoTストアで管理することができるWi-Fiデバイス情報は下記の通りです。
デバイス名
MACアドレス
電池残量
Wi-Fiデバイス情報の通知方法については、後述する デバイス情報通知用API を参照してください。
Bluetoothデバイスについて¶
My-IoTエッジに接続されたBluetoothデバイスについて、下記の情報をIoTストアで管理することができます。
デバイス名
BDアドレス
電池残量
デバイス名とBDアドレスはIoTストアへ自動で通知します。電池残量は、Bluetoothデバイスによって取得方法が異なるため、My-IoTエッジでは収集およびIoTストアへの通知を行いません。
電池残量を管理したい場合は、開発者がデバイス仕様に合わせて電池残量を収集し、IoTストアへ通知するようエッジアプリの実装を行う必要があります。
Bluetoothデバイスの電池残量通知方法については、後述する デバイス情報通知用API を参照してください。
デバイス情報通知用API¶
Wi-Fiデバイスのデバイス情報、およびBluetoothデバイスの電池残量を通知するためのAPI仕様は下記のとおりです。
プロトコル¶
MQTTS
ポート: 8883
MQTTエンドポイント¶
example.com
注意
example.comは例となります。MQTTエンドポイントにつきましては、公開のタイミングで正式なエンドポイントを記載予定です。
MQTTトピック名¶
sip/myiot/edge/device/ind
サンプルペイロード¶
{
"edgeId": "B8:27:EB:90:72:7E",
"date": "2020-08-01T05:19:16.000Z",
"wifiDevices": [{
"deviceName": "Wi-FiデバイスA",
"mac": "12:34:56:78:90",
"battery": 100
}],
"bleDevices": [{
"address": "12:34:56:78:90",
"battery": 100
}]
}
プロパティ名 |
型 |
必須 |
説明 |
---|---|---|---|
edgeId |
string |
○ |
My-IoTエッジのエッジIDです
Node-REDでは環境変数から取得することができます
|
date |
string |
○ |
デバイス情報の通知日時です。ISO8601形式で設定します |
wifiDevices[] |
array(object) |
○ |
Wi-Fiデバイス情報が格納された配列です。Wi-Fiデバイスが接続されていない場合は空配列を設定します |
wifiDevices[].deviceName |
string |
○ |
Wi-Fiデバイスのデバイス名です |
wifiDevices[].mac |
string |
○ |
Wi-FiデバイスのMACアドレスです |
wifiDevices[].battery |
number |
○ |
Wi-Fiデバイスの電池残量です。0~100の整数を設定します |
bleDevices[] |
array(object) |
○ |
Bluetoothデバイス情報が格納された配列です。Bluetoothデバイスが接続されていない場合は空配列を設定します |
bleDevices[].address |
string |
○ |
BluetoothデバイスのBDアドレスです |
bleDevices[].battery |
number |
○ |
Bluetoothデバイスの電池残量です。0~100の整数を設定します |
Node-REDのMQTTノードを使用した設定例¶
Node-REDの MQTT outノード を使用して通知する場合は、エッジIDやMQTT接続の際に使用する証明書のパスなどを環境変数から取得することができます。
My-IoTエッジで使用できるNode-REDの環境変数についての詳細は、 エッジアプリケーションの仕様 を参照してください。
Node-REDのMQTT outノードを使用した設定例を下記に示します。
MQTTノード設定¶
サーバ
次項のサーバ設定を参照
トピック
${TOPIC_EDGE_DEVICE_IND}
サーバ設定¶
サーバ
${IOT_CORE_ENDPOINT}
ポート
8883
SSL/TLS接続を使用
チェックを入れる
TLS設定
次項のTLS設定を参照
TLS設定¶
ローカルファイルの秘密鍵と証明書を使用
チェックを入れる
証明書
${DEVICE_CERT}
秘密鍵
${CERT_KEY}
CA証明書
${CA_CERT}
通知例¶
デバイス情報を通知する際の通知例を下記に示します。
Wi-FiデバイスBが新たに接続された場合¶
Wi-FiデバイスAが接続されている状態で、新たにWi-FiデバイスBが接続された場合のPayload例を下記に示します。差分を通知するのではなく、既に接続されているWi-FiデバイスAの情報も通知する必要があることに注意してください。
Payloadに設定しているエッジIDは、環境変数から取得することができます。
{
"edgeId": "B8:27:EB:90:72:7E",
"date": "2020-08-01T05:19:16.000Z",
"wifiDevices": [{
"deviceName": "Wi-FiデバイスA",
"mac": "12:34:56:78:90",
"battery": 100
},
{
"deviceName": "Wi-FiデバイスB",
"mac": "90:87:65:43:21",
"battery": 100
}],
"bleDevices": []
}
Wi-FiデバイスBが切断された場合¶
Wi-FiデバイスAとWi-FiデバイスBが接続されている状態で、Wi-FiデバイスBが切断された場合のPayload例を下記に示します。接続されているWi-FiデバイスAの情報だけを通知するようにします。
{
"edgeId": "B8:27:EB:90:72:7E",
"date": "2020-08-01T05:19:16.000Z",
"wifiDevices": [{
"deviceName": "Wi-FiデバイスA",
"mac": "12:34:56:78:90",
"battery": 100
}],
"bleDevices": []
}