デバイス情報の通知

ここでは、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ノード設定

mqtt_config

  • サーバ

    • 次項のサーバ設定を参照

  • トピック

    • ${TOPIC_EDGE_DEVICE_IND}

サーバ設定

mqtt_server

  • サーバ

    • ${IOT_CORE_ENDPOINT}

  • ポート

    • 8883

  • SSL/TLS接続を使用

    • チェックを入れる

  • TLS設定

    • 次項のTLS設定を参照

TLS設定

tls_config

  • ローカルファイルの秘密鍵と証明書を使用

    • チェックを入れる

  • 証明書

    • ${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": []
}