IoT PnP Bridge動いた(けれども)

IoT PnP Bridge、とりあえず動いたのでメモ。

動かした環境

  • ハードはRaspberry Pi 4B
  • Raspbianは2019-09-26-raspbian-buster-lite.img
  • シリアルデバイスはSeeeduino(USB接続)

IoT PnP Bridgeのコンパイル

これ。

matsujirushi.hatenablog.jp

ただ、IoT PnP Bridgeが/dev/ttyACM0をマウントしたときにSeeeduinoがリセットしてしまい、通信タイミングの問題でフリーズしてしまうので、IoT PnP BridgeにSleepの注入が必要でした。

github.com

接続先Azure

IoT PnP BridgeはIoT HubとIoT Hub DPSに対応しているようなので、Azure IoT Centralで試していましたが、、、
接続してデータを送ることはできたものの、IoT Central側でデータを表示することはできなかった。(Telemetryを表示しようとすると、ずっとWaiting表示)

想像ですが、IoT Centralがデバイスから動的に登録されたDCM/Interfaceの表示に対応していないのでは?という気がします。

なので、接続先はAzure IoT Hubで。
現在は、IoT Plug and Playに対応したIoT Hubは、リージョンがどっかとどっかに限定されているのでご注意を。(docsに書いてあったはずなので自分で調べてください)→ここ

Azure IoT Hub設定

IoT Plug and Playに対応したIoT Hubを作って、そこにデバイスを作っておきます。(X.509ではなく)SASでOK。
DCM/Interfaceの設定は、一切不要。

IoT PnP Bridgeの設定

config.jsonに、IoT Hubへのデバイス接続情報と、Bridgeから登録するDCM名を記入します。★印の箇所。

  "pnp_bridge_parameters": {
    "_comment_connection_type": "dps (symmetric key support only)/connectionstring",
    "connection_parameters": {
      "connection_type" : "connection_string",←★
      "connection_string" : "HostName=matsujirushipnp.azure-devices.net;DeviceId=test;SharedAccessKey=BEQgZcTXfrMScPfHWalitacchS5o=",←★
      "device_capability_model_uri": "urn:matsujirushi:test:1",←★
      "auth_parameters" : {
        "auth_type" : "symmetric_key",
        "symmetric_key" : "BEQgZcTXfrMScPfHWalitacchS5o="←★
      },

Seeeduinoの設定

ArduinoExample.inoのSerialPnP_NewInterfaceの引数を、それっぽいInterface名にして、Seeeduinoに書き込みします。

DCM/Interfaceって、どこかに事前登録しないの?

不要みたい。

いざ実行

SeeeduinoをラズパイにUSB接続して、pnpbridge_binを実行します。

pnpbridge_binには、正常にテレメトリ送信しているっぽい表示が出ます。
IoT HubをAzure IoT Explorerで見ると、それっぽいテレメトリが飛んできています。

f:id:matsujirushix:20191207215950p:plain

良く見ると、DIGITAL TWINのところに、Seeeduinoに書き込んだInterface名でInterfaceが追加されています。

が!
クリックしても、定義が表示されないです。
Azure IoT Explorerが、どこかリポジトリに登録されている前提の作りなんですかね?

動いたけれども

UARTでIoT Plug and PlayのInterface登録、Telemetry送信ができていることが確認できました。
これは胸アツ!!

一方で、Azure IoT Explorerで見れないとか、IoT Centralで見れないとかありました。

うーむ、IoT Plug and Playむずかしい。