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.")