この記事は2021/08/21に開催した『Azure IoT Central』全方位解説セミナー!で行ったデモの手順を説明しています。
Azure IoT Centralでは様々なデバイスを接続することができます。すでにデバイステンプレートが用意されている場合では数分でモニタリングアプリケーションを作成することもできます。
IoT Edgeデバイス用デバイステンプレートはありませんが、IoT Edge のマニュフェスト(具体的にはdeployment.xxxx.jsonファイル)を読み込むことで簡単にデバイステンプレートを作ることができるようになっています。
今回は温度、湿度、Co2濃度、位置情報を送信するIoT EdgeデバイスをIoT Centralに登録して、モニタリングするためのアプリケーションを作成してみます。
##接続するIoT Edgeデバイス
・RaspberryPi4+SCD30(Co2センサー)+GPS
・RaspberryPi OS buster 32bit (2021/05/07)
・Python3.7
・IoT Edge Ver1.1
・お好きなターミナルソフトウェア(WindowsTerminal等)
デバイスからセンサーデータをIoTHubに送信するようにプログラムしています。
IoT Edge開発の説明は省略。興味のある人は参考URLを参照してください。
それではIoT Centralアプリケーションを作成していきましょう。
##スタート
・IoTCentralサイトにアクセスして、有効なアカウントでサインインします。
・左側メニューの「マイアプリ」をクリックします。
・アプリケーション名は一意の名称を入力します。
・URLは一意のURLを入力します。入力できるのは小文字、数字、ハイフンが使えます。
・料金プランは無料を選択します。(1週間以上利用するならStandard2を選ぶといいでしょう。)
・ディレクトリ、Azureサブスクリプションは利用しているAzureサブスクリプション、ディレクトリを選びます。
・場所はどこでもいいですが、やはり一番近い「東日本」がいいでしょう。
・入力出来たら「作成」をクリックします。
・カスタムデバイステンプレートの「Azure IoT Edge」を選択してから「次へ:カスタマイズ」をクリックします。
・デバイステンプレート名を入力し、「参照」をクリックします。
・IoTEdgeモジュールのソースディレクトリ>config>deployment.xxxx.jsonを選択します。(xxxxはデバイスのアーキテクチャで変わります。)
・読み込んだデプロイマニュフェストに問題なければ「検証済み」と表示されます。次に「次:レビュー」をクリックします。
・モジュールに作成したカスタムモジュールの名前が表示されます。最後に作成ボタンをクリックします。
・モジュールに機能を追加します。(具体的にはデータを受け取る項目の設定をします。)
・「機能の追加」をクリックし、次の項目を入力します。
・入力する項目は「temperature」、「humidity」、「co2」、「tracking」になります。セマンティックは該当する内容を選択します。(「co2」は該当するものがないので空欄のままにします。)入力ができたら画面上部の保存をクリックします。
・次に「ビュー」をクリックして、「デバイスの視覚化」をクリックします。
「折れ線グラフ」タイルを右側にドラッグします。同様に「最後の既知の値(LKV)」タイル、「マップ(テレメトリ)」タイルもドラッグします。
・テレメトリの「+機能」をクリックして、「temperature」、「humidity」、「co2」を追加して「更新」をクリックします。「最後の既知の値(LKV)」には「temperature」、「humidity」、「co2」、「tracking」を追加します。「マップ(テレメトリ)」には「tracking」を追加します。
・デバイステンプレートが出来上がったので「↑公開」をクリックします。
・続いてデバイスの登録をします。左側メニューの「デバイス」をクリックして、画面上部の「+新規」をクリックします。
・デバイス名は自由に入力できます。省略するとデバイスIDと同じになります。
・デバイスIDは一意の値を入力します。
・デバイステンプレートは先ほど作成したテンプレートをリストから選択します。
・入力ができたら「作成」をクリックします。
・「IDスコープ」、「デバイスID」、「主キー」の各項目をメモしておきます。
・次にターミナルを起動して、IoTEdgeデバイスにログインします。
・「sudo nano /etc/iotedge/config.yaml」と入力します。
・開いたファイル内の「# DPS provisioning with symmetric key attestation」より後の行のコメントアウトを解除します。
・「scope_id」には先ほどメモした「IDスコープ」の値を入力します。
・「registration_id」には「デバイスID」を入力します。
・「symmetric_key」には「主キー」を入力します。
・入力が終了したらファイルを保存したのちエディタを終了します。
・「sudo systemctl restart iotedge」と入力しIoTEdgeランタイムを再起動します。
・IoTCentralに戻って、デバイスからデータが送信されていることを確認します。
以上がIoTCentralにIoTEdgeデバイスを登録する方法でした。
##参考URL
メモ:RaspberryPiにAzure IoTEdge ランタイムをインストール
メモ:RaspberryPi上のAzure IoTEdgeランタイムの設定
Azure IoT Edge カスタムモジュールの作成(RaspberryPi & Python)
今回のIoTEdgeデバイスのソースコード https://github.com/linyixian/IoTCentral_IoTEdge