Skip to content

Instantly share code, notes, and snippets.

@toyowata
Last active June 16, 2020 02:23
Show Gist options
  • Save toyowata/c4677f2f436ba1ad59fa8096b9a37f75 to your computer and use it in GitHub Desktop.
Save toyowata/c4677f2f436ba1ad59fa8096b9a37f75 to your computer and use it in GitHub Desktop.
Pelion Device Managementチュートリアル

1. Pelion Device Managementチュートリアル

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/

2. 準備

2.1 Mbed開発サイトのアカウント取得

ここでは、Mbed OSデバイスとPelion Device Managementサービスを使用する方法を説明するので、最初にMbed開発サイトのアカウントが必要です。アカウントを取得していない場合は、こちらをご覧下さい。

https://github.com/toyowata/create_mbed_account/blob/master/README.md

2.2 AWSアカウントの取得

このチュートリアルのサンプルコードでは、Pelion Device Management Clientソフトウェアを組み込んだデバイスからPelion Device Managementサービスに接続しますが、同時にAWSのサービスに接続することも可能です。AWS IoT Coreを使用するために、AWSの無料アカウントを作成してください。詳細は、こちらの記事の内容を参照してください。

2.3 Mbed Studioのインストール

以下のURLから、使用するホストPCに対応したMbed Studioをインストールします。 https://os.mbed.com/studio/

3. Pelion Portal Account の取得とサービス利用準備

クラウドサービスのアカウントは、評価用として機能制限付きの無償版アカウントが用意されています。 自分のアカウントのコンソールの中にある、Pelion Device ManagementからLearn how to connectと書かれている黄色のボタンを押します。

pdm-learn-how-to-connect.png

画面が切り替わるので、Activate your free access ボタンを押します。

pdm-activate-1.png

以下の画面から、Activate Pelion Device Management accountボタンを押します。

pdm-activate-2.png

ボタンを押すと以下のようなメッセージが表示されます。

pdm-success.png

自分のアカウントのコンソールに以下の項目が表示されていれば、準備完了です。

pdm-ready.png

portalボタンを押して、Pelion Device Management のポータルサイトにアクセスします。 初回アクセス時はライセンス条項への同意が必要になります。

3.1 APIキーの生成

ポータルサイトにアクセス出来たので、自分のアカウントで利用する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キーの値を紛失してしまった場合は、新しくキーを生成してください。

3.2 開発者証明書の生成

次にデバイスがサービス接続時に必要な証明書を生成します。通常、プロダクションに必要なデバイス証明書の生成や書き込みは、工場出荷時にセキュアな環境で行いますが、ここでは開発時に手軽に利用できる開発証明書を使用します。 以下のURLにアクセスするか、左側のメニューから[Device identity]-[Certificates]を選択します。 https://portal.mbedcloud.com/identity/certificates/list

画面右上の+ New certificateボタンをクリックし、Create a developer certificateを選択します。

Nameの部分は自動入力されますが、変更することも可能です。Create certificateボタンを押して、開発証明書を作成します。

4. デバイス側サンプルプログラムの作成

Pelion Device Management ClientをMbed OS対応デバイスで使用するには、クイックスタートガイドが用意されています。

クイックスタートガイドには、動作確認済みのサンプルプログラムが用意されています。このサンプルをインポートして自分のアカウント用の設定を行うだけで、Pelion Device Managementサービスを簡単に体験することが出来ます。クイックスタートガイドで説明している内容は、MbedオンラインIDEを使用する方法ですが、このドキュメントではローカル環境で使用可能なMbed Studioで同じサンプルプログラムをビルドしてみます。

4.1 サンプルプログラムのインポートと設定

Wio 3Gボードをセルラー接続で使用する手順を説明します。

まず、Mbed Studioを起動します。

次に、メニュー[File]-[Import Program...]を選択し表示されたダイアログに以下のリンクを入力します。 https://github.com/toyowata/mbed-os-pelion-sensor

Add Programボタンを押してプログラムをインポートします。回線の状態によってはインポートに時間がかかるときがあります。画面右下のBackground Task表示が消えるまでお待ちください。

インポートされたサンプルプログラムのリストをクリックすると、使用しているソースファイル等の内容が表示されます。

4.1.1 各種証明書の設定(Pelion Device Management用)

次にサービスへの接続とファームウェアアップデート用に必要な開発者証明書をAPIキーを使ってインストールします。 画面左側の雲形のアイコンをクリックします。Pelion Device Managementの右上の歯車アイコンを押してAPIキーを入力します。

API Keyの部分に、ポータルから生成したAPIキーの値をペーストして、Saveボタンを押します。

次に開発者証明書を選択します。Connect certificateをから開発者証明書を選択します。Enable remote firmware updateチェックボックスを有効にします。Doneボタンを押して、ダイアログを閉じます。これで、開発証明書のデータがプロジェクトに追加されます。

4.1.2 セルラー回線用の設定

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\""

これでデバイス側のプロジェクトの設定は終わりです。

4.2 ハードウェアの接続設定

こちらの手順を参考にして、Wio 3GにSIMカードを挿入します(このサンプルプログラムでは、マイクロSDカードは使用しません)。

このサンプルプログラムでは、温湿度・気圧センサと、LEDボタンを使用します。写真のように接続して下さい(BME280センサーモジュールをI2Cに、青LEDボタンをD20に接続します)。

最後にUSBケーブルでホストPCとWio 3Gボードを接続します。

4.3 サンプルプログラムのビルド

続いて、このサンプルプログラムをビルドします。 USBケーブルでボードをホストコンピュータを接続すると、Mbed Studioがボードを認識します。

問題なければYesをクリックします。後からTargetのドロップダウンリストから選択することも可能です。

検出されたターゲットボードが有効になりました。また、ビルド、実行、デバッグのアイコンも有効になりました。

サンプルプログラムをビルドするには、ビルド用のアイコン(かなづちのマーク)をクリックします。Terminalウィンドウにビルドの進捗が表示されます。最後にImageのファイル名が表示されたら、ビルドは成功です。 エラーが表示された場合は、証明書のインストール方法の部分を再度確認してください。

4.4 サンプルコードの実行

デバイス上で実行されたプログラムのログ出力は、Mbed Studioから確認することが出来ます。

Run Programボタンを押すとビルドされたコードがターゲットボードに書き込まれます。書き込みは、約30秒で終了します。書き込まれた後はボード上のリセットボタンを押してプログラムを実行して下さい。ボードの設定によっては、自動的にリセットする事も出来ます。

【注意】書き込みが正常に終了しない場合は、トラブルシューティングの項目をご覧ください。

シリアルコンソールのBaud rateは、115200に設定します。

以下のようなシリアル出力ログが表示されます。Account IDEndpoint 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}

5. ウェブサイトでの接続確認

5.1 Pelion Device Managementポータルサイトでの確認

ポータルサイト側からデバイスが正常に登録されているかを確認します。 ポータルサイトにログインします。メニュー [Device directory(デバイスID)] - [Devices(デバイス)] を選択し、デバイスが登録されているのを確認します。登録され、アクセス可能なデバイスは、Statusフィールドに緑色のマークが付いています。

Screen Shot 2020-04-10 at 18.28.12.png

登録されているデバイスをクリックすると、各種情報が表示されます。

Screen Shot 2020-04-10 at 18.28.22.png

[Resources(リソース)] タブをクリックすると、OMA LWM2M仕様に準拠したデバイスのリソースパスが表示されます。 /3200/0/5501(サンプルコードでカウンター値にとして使用しているDigital Inputに割り当てられたリソース)をクリックします。

Screen Shot 2020-04-10 at 18.29.13.png

/3200/0/5501をクリックすると、青LEDボタンを押すことでカウントアップされた数値がグラフ化され値が更新されます。

また、センサーから取得されたデータは、OMA LWM2M規格に準拠した以下のリソースパスに書き込まれています。これらの値も、該当するリソースをクリックすることで表示することが出来ます。

種別 リソースパス 単位
温度 /3303/0/5700
湿度 /3304/0/5700 %
気圧 /3323/0/5700 hPa

5.2 AWSマネジメントコンソールでの確認

ここまでの手順で、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"
}

6. トラブルシューティング

6.1 Wio 3Gターゲットボードに書き込めない場合

Run programボタンを押しても、Erasing Chip 0%と表示され、プログラムが書き込めない場合があります。その場合は、以下のいずれかの方法を試してみてください。

6.1.1 ターゲットフラッシュを全消去する

  • Mbed Studioを終了する
  • erase.actというファイル名のファイル(中身は空でかまいません)を作成する
  • デバイスのマスストレージドライブ(DAPLINK)にerase.actをコピーする
  • マスストレージドライブがアンマウントされ、再度マウントされるまで待つ
  • Mbed Studioを起動し、Run programボタンを押して書き込む

6.1.2 Terminalウィンドウから書き込む

  • 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)でデバイスのログを確認する

7. その他の情報

ここでは、Seeed Wio 3G(セルラー接続)を使用する手順を説明しましたが、このサンプルコードは以下のMbed OS対応ターゲットボードでも動作することを確認しています。Mbed Studioを使用する場合は、ボードを接続すると自動的にターゲットが切り替わります。

Renesas GR-LYECHEE (Wi-Fi)
Renesas GR-PEACH (Ethernet)
NXP FRDM-K64F (Ethernet)
ST NUCLEO-F429ZI (Ethernet)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment