Plelion Device Managementは、Arm社が提供しているPelion IoT Platformを構成するサービスの一つで、IoTデバイスをセキュアに管理する事が出来ます。
無償で利用可能な評価用のアカウントも用意されています。このドキュメントでは、Mbed OSが動作するデバイスとPelion Device Managementサービスの使い方を紹介します。Mbed OSデバイス側のプログラムのビルドには、Mbed Studioを使用します。
Pelion Device Management の概要はこちらをご覧下さい。 https://www.pelion.com/iot-device-management/
- Mbed開発サイト(os.mbed.com)のアカウント
- Seeed Wio 3G
- GROVE - 温湿度・気圧センサ(BME280)
- GROVE - 青LEDボタン
- Mbed Studio IDE
ここでは、Mbed OSデバイスとPelion Device Managementサービスを使用する方法を説明するので、最初にMbed開発サイトのアカウントが必要です。アカウントを取得していない場合は、こちらをご覧下さい。
https://github.com/toyowata/create_mbed_account/blob/master/README.md
このチュートリアルのサンプルコードでは、Pelion Device Management Clientソフトウェアを組み込んだデバイスからPelion Device Managementサービスに接続しますが、同時にAWSのサービスに接続することも可能です。AWS IoT Coreを使用するために、AWSの無料アカウントを作成してください。詳細は、こちらの記事の内容を参照してください。
以下のURLから、使用するホストPCに対応したMbed Studioをインストールします。 https://os.mbed.com/studio/
クラウドサービスのアカウントは、評価用として機能制限付きの無償版アカウントが用意されています。
自分のアカウントのコンソールの中にある、Pelion Device ManagementからLearn how to connect
と書かれている黄色のボタンを押します。
画面が切り替わるので、Activate your free access
ボタンを押します。
以下の画面から、Activate Pelion Device Management account
ボタンを押します。
ボタンを押すと以下のようなメッセージが表示されます。
自分のアカウントのコンソールに以下の項目が表示されていれば、準備完了です。
portal
ボタンを押して、Pelion Device Management のポータルサイトにアクセスします。
初回アクセス時はライセンス条項への同意が必要になります。
ポータルサイトにアクセス出来たので、自分のアカウントで利用するAPIキーを生成します。以下のURLにアクセスするか、左側のメニューから[Access management]-[API keys]を選択します。 https://portal.mbedcloud.com/access/keys
画面右上の+ New API Key
ボタンをクリックします。
Create API Keyダイアログが開きます。API Key name
の部分に任意の名前を設定します。Groupは、Administratorsを指定してください。Create API Key
ボタンを押して、APIキーを生成します。
【注意】 ここで生成されたAPIキー(ak_で始まる文字列)は必ず、コピーして値を保存しておいてください。セキュリティの関係上、ポータルサイトからAPIキーの値は二度と取得できなくなります。もし、APIキーの値を紛失してしまった場合は、新しくキーを生成してください。
次にデバイスがサービス接続時に必要な証明書を生成します。通常、プロダクションに必要なデバイス証明書の生成や書き込みは、工場出荷時にセキュアな環境で行いますが、ここでは開発時に手軽に利用できる開発証明書を使用します。 以下のURLにアクセスするか、左側のメニューから[Device identity]-[Certificates]を選択します。 https://portal.mbedcloud.com/identity/certificates/list
画面右上の+ New certificate
ボタンをクリックし、Create a developer certificate
を選択します。
Nameの部分は自動入力されますが、変更することも可能です。Create certificate
ボタンを押して、開発証明書を作成します。
Pelion Device Management ClientをMbed OS対応デバイスで使用するには、クイックスタートガイドが用意されています。
クイックスタートガイドには、動作確認済みのサンプルプログラムが用意されています。このサンプルをインポートして自分のアカウント用の設定を行うだけで、Pelion Device Managementサービスを簡単に体験することが出来ます。クイックスタートガイドで説明している内容は、MbedオンラインIDEを使用する方法ですが、このドキュメントではローカル環境で使用可能なMbed Studioで同じサンプルプログラムをビルドしてみます。
Wio 3Gボードをセルラー接続で使用する手順を説明します。
まず、Mbed Studioを起動します。
次に、メニュー[File]-[Import Program...]を選択し表示されたダイアログに以下のリンクを入力します。 https://github.com/toyowata/mbed-os-pelion-sensor
Add Program
ボタンを押してプログラムをインポートします。回線の状態によってはインポートに時間がかかるときがあります。画面右下のBackground Task表示が消えるまでお待ちください。
インポートされたサンプルプログラムのリストをクリックすると、使用しているソースファイル等の内容が表示されます。
次にサービスへの接続とファームウェアアップデート用に必要な開発者証明書をAPIキーを使ってインストールします。 画面左側の雲形のアイコンをクリックします。Pelion Device Managementの右上の歯車アイコンを押してAPIキーを入力します。
API Key
の部分に、ポータルから生成したAPIキーの値をペーストして、Save
ボタンを押します。
次に開発者証明書を選択します。Connect certificate
をから開発者証明書を選択します。Enable remote firmware update
チェックボックスを有効にします。Done
ボタンを押して、ダイアログを閉じます。これで、開発証明書のデータがプロジェクトに追加されます。
Wio 3G等のセルラー接続の場合は、使用するネットワーク回線に応じた設定が必要です。左側のプログラムのリストから、mbed_app.json
をクリックしてオープンします。
以下の画面でハイライトされているnsapi.default-cellular-apn
等の項目を使用するSIMカードに応じた適切な値に設定します。
参考までに設定値の例を以下に示します。
- SORACOM Airの場合
"nsapi.default-cellular-apn" : "\"soracom.io\"",
"nsapi.default-cellular-sim-pin" : null,
"nsapi.default-cellular-username" : "\"sora\"",
"nsapi.default-cellular-password" : "\"sora\""
- IIJmioの場合
"nsapi.default-cellular-apn" : "\"iijmio.jp\"",
"nsapi.default-cellular-sim-pin" : null,
"nsapi.default-cellular-username" : null,
"nsapi.default-cellular-password" : null
- docomoの場合
"nsapi.default-cellular-apn" : "\"spmode.ne.jp\"",
"nsapi.default-cellular-sim-pin" : null,
"nsapi.default-cellular-username" : "\"spmode\"",
"nsapi.default-cellular-password" : "\"spmode\""
これでデバイス側のプロジェクトの設定は終わりです。
こちらの手順を参考にして、Wio 3GにSIMカードを挿入します(このサンプルプログラムでは、マイクロSDカードは使用しません)。
このサンプルプログラムでは、温湿度・気圧センサと、LEDボタンを使用します。写真のように接続して下さい(BME280センサーモジュールをI2Cに、青LEDボタンをD20に接続します)。
最後にUSBケーブルでホストPCとWio 3Gボードを接続します。
続いて、このサンプルプログラムをビルドします。 USBケーブルでボードをホストコンピュータを接続すると、Mbed Studioがボードを認識します。
問題なければYes
をクリックします。後からTarget
のドロップダウンリストから選択することも可能です。
検出されたターゲットボードが有効になりました。また、ビルド、実行、デバッグのアイコンも有効になりました。
サンプルプログラムをビルドするには、ビルド用のアイコン(かなづちのマーク)をクリックします。Terminalウィンドウにビルドの進捗が表示されます。最後にImageのファイル名が表示されたら、ビルドは成功です。 エラーが表示された場合は、証明書のインストール方法の部分を再度確認してください。
デバイス上で実行されたプログラムのログ出力は、Mbed Studioから確認することが出来ます。
Run Program
ボタンを押すとビルドされたコードがターゲットボードに書き込まれます。書き込みは、約30秒で終了します。書き込まれた後はボード上のリセットボタンを押してプログラムを実行して下さい。ボードの設定によっては、自動的にリセットする事も出来ます。
【注意】書き込みが正常に終了しない場合は、トラブルシューティングの項目をご覧ください。
シリアルコンソールのBaud rate
は、115200に設定します。
以下のようなシリアル出力ログが表示されます。Account ID
やEndpoint name
が表示されれば、プログラムは正常に動作しています。
このサンプルコードでは、5秒ごとにセンサーから取得したデータ(湿度、気圧、温度)を表示し、Pelion Device Managementサービスに値をアップデートします。この値は、Pelion Device Managementのリソースに書き込まれます。また、AWSアカウント用の設定が行われていれば、AWS IoTのMQTTクライアントにもパブリッシュされます。
Mbed Bootloader
No Update image
[DBG ] Active firmware up-to-date
booting...
Application ready
Connect to network
Network initialized, connected with IP 10.129.102.246
Start developer flow
Create resources
Register Pelion Device Management Client
Client registered.
Account ID: 0160XXXXXXXXXX206ae5ecf600000000
Endpoint name: 017XXXXXXXXXX0000000000100138fbc
Device ID: 017XXXXXXXXXX0000000000100138fbc
Opening network interface...
Connecting to network
Network interface opened successfully.
[PDM] humidity = 61.56%, pressure = 994.48 hPa, temperature = 29.84 DegC
Time is now Thu Jun 11 11:36:22 2020
[AWS] Connecting to host xxxxxxxxxx-ats.iot.ap-northeast-1.amazonaws.com:8883 ...
[AWS] Connection established.
[AWS] MQTT client is trying to connect the server ...
[AWS] Client connected.
[AWS] Client is trying to subscribe a topic "cmd/area-1/device-1".
[AWS] Client has subscribed a topic "cmd/area-1/device-1".
[AWS] To send a packet, push the button on your board.
[PDM] humidity = 61.45%, pressure = 994.15 hPa, temperature = 29.84 DegC
{"humidity":61.45, "pressure": 994.15, "temperature":29.84}
[AWS] Message published.
[PDM] humidity = 61.53%, pressure = 994.21 hPa, temperature = 29.83 DegC
{"humidity":61.53, "pressure": 994.21, "temperature":29.83}
また、青LEDボタンを押すと、カウント値をインクリメントします。この値は、Pelion Device Managementのリソースに書き込まれるのと同時に、AWS IoTのMQTTクライアントにもパブリッシュされます。
[PDM] Counter 1
{"is_button_clicked":true,"count":1}
[AWS] Message published.
[AWS] Message arrived:
{"is_button_clicked":true,"count":1}
[PDM] Counter 2
{"is_button_clicked":true,"count":2}
ポータルサイト側からデバイスが正常に登録されているかを確認します。
ポータルサイトにログインします。メニュー [Device directory(デバイスID)] - [Devices(デバイス)] を選択し、デバイスが登録されているのを確認します。登録され、アクセス可能なデバイスは、Status
フィールドに緑色のマークが付いています。
登録されているデバイスをクリックすると、各種情報が表示されます。
[Resources(リソース)] タブをクリックすると、OMA LWM2M仕様に準拠したデバイスのリソースパスが表示されます。
/3200/0/5501
(サンプルコードでカウンター値にとして使用しているDigital Inputに割り当てられたリソース)をクリックします。
/3200/0/5501
をクリックすると、青LEDボタンを押すことでカウントアップされた数値がグラフ化され値が更新されます。
また、センサーから取得されたデータは、OMA LWM2M規格に準拠した以下のリソースパスに書き込まれています。これらの値も、該当するリソースをクリックすることで表示することが出来ます。
種別 | リソースパス | 単位 |
---|---|---|
温度 | /3303/0/5700 | ℃ |
湿度 | /3304/0/5700 | % |
気圧 | /3323/0/5700 | hPa |
ここまでの手順で、Pelion Device Managementサービスへに接続することが確認できました。このサンプルコードでは、AWS IoT Coreにも同時に接続することもできます。設定手順はこちらの記事を参照してください。
AWSマネジメントコンソールにログインし、AWS IoT Coreのページを表示します。
左側のメニューからテスト
を選択します。
MQTTクライアントが表示されるので、トピックへサブスクライブする
を選択し、トピックのサブスクリプション
のフィールドにdata/area-1/device-1
を入力し、トピックへのサブスクライブ
ボタンを押します。
デバイスから5秒ごとにメッセージがパブリッシュされ、AWSマネジドコンソール側に表示されます。
また、トピックへの発行
を選び、テキストボックスにcmd/area-1/device-1
を入力し、トピックに発行
ボタンを押します。
メッセージが発行され、デバイス側のログとして表示されます。
[AWS] Message arrived:
{
"message": "Hello from AWS IoT console"
}
Run program
ボタンを押しても、Erasing Chip 0%
と表示され、プログラムが書き込めない場合があります。その場合は、以下のいずれかの方法を試してみてください。
- Mbed Studioを終了する
erase.act
というファイル名のファイル(中身は空でかまいません)を作成する- デバイスのマスストレージドライブ(DAPLINK)に
erase.act
をコピーする - マスストレージドライブがアンマウントされ、再度マウントされるまで待つ
- Mbed Studioを起動し、
Run program
ボタンを押して書き込む
- Mbed Studioを終了し、再度起動する
Build program
ボタンでプログラムをビルドする(Run program
ボタンは押さない)- プログラムがビルドされたら、メニュー[Terminal]-[New Terminal]を選択する
- Terminal上で以下のコマンドを入力し、フラッシュメモリに書き込む(Windowsの場合はcopyコマンドを使用し、マウントされたドライブ名を指定する)
$ cd mbed-os-pelion-sensor
$ cp BUILD/WIO_3G/ARMC6/mbed-os-pelion-sensor.bin /Volumes/DAPLINK
- マスストレージドライブがアンマウントされ、再度マウントされるまで待つ
- ボードの上のリセットボタンを押し、シリアルコンソール(
__ Seeed Wio 3G
)でデバイスのログを確認する
ここでは、Seeed Wio 3G(セルラー接続)を使用する手順を説明しましたが、このサンプルコードは以下のMbed OS対応ターゲットボードでも動作することを確認しています。Mbed Studioを使用する場合は、ボードを接続すると自動的にターゲットが切り替わります。
Renesas GR-LYECHEE (Wi-Fi)
Renesas GR-PEACH (Ethernet)
NXP FRDM-K64F (Ethernet)
ST NUCLEO-F429ZI (Ethernet)