先月末から、IoT PnP Bridgeをゴニョゴニョとやっていたわけですが、やっとIoT PnP BridgeのUARTを動かす方法が確立できたので書いておきます。
やること
Seeeduino(Arduino Uno互換機)からUART出力する(疑似温度データ)を、IoT PnP Bridgeを動かしたRaspberry Pi 4を経由して、Azure IoT Centralへ送り、グラフ表示します。
構築手順
Azure IoT Central
Azure Iot Centralアプリケーションを作成
Azure IoT Centralアプリケーションを作成します。
PnP対応を使わなければいけませんので、Application templateは必ずPreview applicationにしてください。
デバイステンプレートを作成
Device templateを作成します。
Template typeはIoT deviceとして、Create a capability modelはCustomを選択してください。
Interfaceを追加します。
Add interfaceをクリックして、Customを選択、Add capabilityをクリックして、tempratureという名前を入力して、Saveをクリックしてください。
InterfaceのInstance Nameを書き換えます。
左ツリー上のInterfaceをクリックして、Edit itentityをクリックしてください。すると、右側にInterfaceのIdentityが表示されます。
Instance Nameをserialに書き換えて、Saveをクリックしてください。
この情報がどこにも書かれていなかったので、動くまでに大変苦労した。
Viewを追加します。
左ツリー上のViewsをクリックして、Generate default viewsをクリック、Generate default dashboard view(s)をクリックしてください。
ViewsにOverviewとAboutが追加されて、Overviewにtemperatureのグラフが追加されていれば正常です。
最後に、画面上部のPublishをクリックしてください。
Publishすると、Device templateの書き換えができなくなります。
Device template(DCM)とInterfaceのidが後に必要なので、メモ帳などにコピーしておいてください。
デバイスを作成
いま作成したDevice templateに、Deviceを追加します。
Deviceの接続情報をメモ帳などにコピーしておいてください。
Seeeduino
AzurePnPBridgePreviewをクローンして、Arduino IDEでArduinoExample.inoを開いてください。
47行目にある文字列を、Interfaceのidに書き換えて、Seeeduinoへ書き込んでください。
Raspberry Pi
pnpbridgeをビルド
こちらの手順に沿って、pnpbridgeをビルドしてください。
ただし!
現時点、Seeeduinoのリセットタイミングとpnpbridgeのタイミングが合わずフリーズする現象があるので、訂正したコードをクローンしてビルドしてください。
git clone https://github.com/matsujirushi/AzurePnPBridgePreview -b dev-takashi
config.jsonを編集
config.json(~/AzurePnPBridgePreview/pnpbridge/cmake/pnpbridge_linux/src/pnpbridge/samples/console/config.json)を編集します。
項目 | 値 |
---|---|
connection_type | dps |
device_capability_model_uri | (メモのDevice template(DCM)のid) |
symmetric_key | (メモのSAS Primary key) |
global_prov_uri | global.azure-devices-provisioning.net |
id_scope | (メモのID scope) |
device_id | (メモのDevice ID) |
trace_on | (動作状況を表示したいときはtrueに変更) |
実行!
SeeeduinoをUSBでRaspberry Piに接続しておき、pnpbridge_bin(~/AzurePnPBridgePreview/pnpbridge/cmake/pnpbridge_linux/src/pnpbridge/samples/console/pnpbridge_bin)を実行すると、Seeeduinoから送られてくる疑似温度データがAzure IoT Centralに表示されます。