1.1.4.6. 動作確認をする

注釈

  • 本ページに記載の画像・設定項目は、2022年5月時点の情報です。Microsoft Azureの仕様変更により、内容が変更となる場合がありますのでご注意ください。

本項では、「構成C: Azure IoT Hub・温湿度センサー利用」における動作確認方法について記載しています。

なお、本書中の設定値の「< >」の表記については、ご利用の環境により各自入力いただく箇所となります("<"から">"までを設定値に置き換えてください)。

Release Pipelineコード実行確認

  1. 作成したAzure DevOpsのプロジェクトページにアクセスします。

  2. 画面左のメニューより、「Pipelines」>「Releases」をクリックします。

    Release Pipelines 1
  3. 1.1.3.4. Azure DevOpsでのコード作成手順 で作成したRelease PipelineコードのStageを選択します。

    Release Pipelines 2

注釈

初回実行時、Terraform実行に必要なファイルが存在しないというエラーが表示されますが、コード実行に合わせて自動作成されるため、エラーは無視していただいて問題ありません。

Release Pipelines 3

Azure IoT Hubの設定確認

Release Pipelineコード実行により、Azure IoT Hubが作成されていること、デバイスが登録されていることを確認します。

  1. 作業端末のブラウザーにて、以下のURLにアクセスし、Azure Portalにログインします。

  2. 画面上部の検索窓にて「IoT Hub」と検索し、検索結果中の「IoT Hub」をクリックします。

    IoT Hub at Menu
  3. IoT Hubリストより、Azure IoT Hubが作成されていることを確認し、クリックしてください。

    Select IoT Hub
  4. 詳細画面左側のメニューより、「デバイス」をクリックします。

    Select IoT Hub Device
  5. 表示されたデバイスリストより、IoTデバイスが作成されていることを確認してください。

    Device List

Azure IoT Hub接続情報確認

IoT機器にて設定するにあたり、転送先クラウドサービスのAzure IoT Hubの接続・設定情報を確認する必要があります。

事前に作成したAzure IoT HubとIoT Hubデバイスについて、以下の情報が分からない場合は下記の手順でご確認ください。

  • Azure IoT Hub名
  • Azure IoT Hubに登録したデバイスのデバイスID
  1. 作業端末のブラウザーにて、以下のURLにアクセスし、Azure Portalにログインします。

  2. 画面上部の検索窓にて「IoT Hub」と検索し、検索結果中の「IoT Hub」をクリックします。

    IoT Hub at Menu
  3. IoT Hubリストより、作成したAzure IoT Hubをクリックします。

    Select IoT Hub
  4. 表示された詳細画面左側のメニューより、「プロパティ」をクリックします。

    Select IoT Hub Property
  5. 表示されたプロパティ画面より、項目「名前」を確認・保存してください。こちらの値が「Azure IoT Hub名」です。

    Copy IoT Hub Name
  6. 詳細画面左側のメニューより、「デバイス」をクリックします。

    Select IoT Hub Device
  7. 表示されたデバイスリストより、作成したIoTデバイスをクリックします。

    Device List
  8. 表示されたデバイス詳細画面にて、項目「デバイスID」を確認・保存してください。こちらの値が「Azure IoT Hubに登録したデバイスのデバイスID」です。

    Copy Device ID

データ転送テスト

Azure IoT Hubでのデータ受信準備

  1. 作業端末のブラウザーにて、以下のURLにアクセスし、Azure Portalにログインします。

  2. Azure Portal画面左上のCloud Shellマーク(下の画像を参照)をクリックし、Cloud Shellを開きます。

    Azure Cloud Shell
  3. 表示されたターミナル画面にて、以下のコマンドを実行します。

    > az iot hub monitor-events --hub-name <Azure IoT Hub名> --properties app
    

    注釈

    • 「The command requires the extension azure-iot. Do you want to install it now? The command will continue to run after the extension is installed. (Y/n):」と表示された場合は、「Y」を入力し、「Enter」を押してください。
    • 「Dependency update (uamqp 1.2) required for IoT extension version: 0.13.0.Continue? (y/n) ->」と表示された場合は、「y」を入力し、「Enter」を押してください。
    Azure Cloud Shell - Install
  4. 以下の表示となることを確認します。

    Starting event monitor, use ctrl-c to stop...
    
    Azure Cloud Shell - Command

Raspberry Piでのデータ転送

  1. Raspberry Piのターミナルを開きます。

  2. 以下のコマンドを実行します。

    $ mosquitto_pub --host an1.icgw.ntt.com --port 1883 --qos 0 --topic devices/<Azure IoT HubのデバイスID>/messages/events -m ',25,60' -i <Azure IoT HubのデバイスID>
    
  3. ターミナル上に、以下のようなMQTT転送のステータスが表示されることを確認します。

    Client xxxxx sending CONNECT
    Client xxxxx received CONNACK (0)
    Client xxxxx sending PUBLISH (d0, q0, r0, m1, 'devices/xxxxx/messages/events', ... (6 bytes))
    Client xxxxx sending DISCONNECT
    

Azure IoT Hubでのデータ受信確認

  1. あらかじめ表示しておいたAzure Cloud Shell画面に、以下のように転送データが表示されることを確認します。
{
        "event": {
                "origin": "<Azure IoT HubのデバイスID>",

                ...(省略)...

                "properties" {
                        "application": {
                                "imsi": "<使用SIMのIMSI>",
                                "imei": "<使用デバイスのIMEI>",
                                "deviceName": "<ICGWで設定した使用SIM名>"
                        }
                },
                "payload": "25,60"
        }
}

実行Pythonコードサンプル

温湿度データの取得およびAzure IoT Hubへのデータ転送を繰り返し(※)実行するPythonコードのサンプルを掲載します。

注釈

  • (※)実行を停止するには、「Ctrl」+「c」を入力します。

Temp-Hum_Azure.py

import RPi.GPIO as GPIO
import dht11
import time
import datetime
import subprocess

# Set Parameters
ADDR = "an1.icgw.ntt.com"
PORT = "1883"
DEVICE = "<Azure IoT HubのデバイスID>"
TOPIC = "devices/" + DEVICE + "/messages/events"
QOS = "<MQTT送信のQoS>"

# initialize GPIO
GPIO.setwarnings(True)
GPIO.setmode(GPIO.BCM)

# read data using pin 14
temp_sensor = dht11.DHT11(pin=14)

try:
        while True:
                result = temp_sensor.read()
                if result.is_valid():
                        print("Last valid input: " + str(datetime.datetime.now()))

                        cmd = "mosquitto_pub --host " + str(ADDR) +" --port "+ str(PORT) + " --qos " + str(QOS) + " --topic " + str(TOPIC) + " -m '" + str(result.temperature) + "," + str(result.humidity) + "' -i " + str(DEVICE)
                        proc = subprocess.run(cmd, shell = True)

                        print("Temperature: %-3.1f C" % result.temperature)
                        print("Humidity: %-3.1f %%" % result.humidity)

except KeyboardInterrupt:
        print("Cleanup")
        GPIO.cleanup()

        print("Ended program by KeyboardInterrupt.")