1.1.5.4. 動作確認をする(実行コード例)¶
本項では、「構成C: Azure IoT Hub・温湿度センサー利用」における動作確認方法・実行コード例について記載しています。
なお、本書中の設定値の「< >」の表記については、ご利用の環境により各自入力いただく箇所となります("<"から">"までを設定値に置き換えてください)。
Azure IoT Hubの接続情報を確認する¶
IoT機器にて設定をするにあたり、転送先クラウドサービスのAzure IoT Hubの接続・設定情報を確認する必要があります。
事前に作成したAzure IoT HubとIoT Hubデバイスについて、以下の情報が分からない場合は下記の手順でご確認ください。
- Azure IoT Hub名
- Azure IoT Hubに登録したデバイスのデバイスID
作業端末のブラウザーにて、以下のURLにアクセスし、Azure Portalにログインします。
画面上部の検索窓にて「IoT Hub」と検索し、検索結果中の[IoT Hub]をクリックします。
IoT Hubリストより、作成したAzure IoT Hubをクリックします。
表示された詳細画面左側のメニューより、[プロパティ]をクリックします。
表示されたプロパティ画面より、項目「名前」を確認・保存してください。こちらの値が「Azure IoT Hub名」です。
詳細画面左側のメニューより、[デバイス]をクリックします。
表示されたデバイスリストより、作成したIoTデバイスをクリックします。
表示されたデバイス詳細画面にて、項目「デバイスID」を確認・保存してください。こちらの値が「Azure IoT Hubに登録したデバイスのデバイスID」です。
データ転送テストをする¶
Azure IoT Hubにてデータ受信準備をする¶
作業端末のブラウザーにて、以下のURLにアクセスし、Azure Portalにログインします。
Azure Portal画面右上の[Cloud Shell]アイコン(下の画像を参照)をクリックし、Cloud Shellを開きます。
表示されたターミナル画面にて、以下のコマンドを実行します。
> 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」を押してください。
以下の表示となることを確認します。
Raspberry Piにてデータ転送をする¶
Raspberry Piのターミナルを開きます。
以下のコマンドを実行します。
$ 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>
ターミナル上に、以下のような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にてデータの受信確認をする¶
- あらかじめ表示しておいた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.")