1.1.3.12. IoT機器設定・コード例を確認する¶
本項では、本システムの実装において必要なIoT機器での設定手順の説明およびPythonコード例を記載しています。
なお、本項の設定値の「< >」の表記については、ご利用の環境により各自入力いただく箇所となります("<"から">"までを設定値に置き換えてください)。
注釈
- 本項では「1.1.3.4. Node-AIの環境構築・学習モデルの作成・エクスポートをする」で利用する学習データの各要素を計測・送信しています。
前提条件を確認する¶
本項では、以下を前提条件としています。
- お客様環境下にて、IoT機器から予測に必要な各種データの計測と送信ができること
Things Cloud接続情報を確認する¶
IoT機器にて設定するにあたり、転送先クラウドサービスのThings Cloudの接続・設定情報を確認します。
事前に設定したThings Cloudについて、以下の情報が分からない場合は下記の手順でご確認ください。
- MQTT Client ID
- SmartRESTテンプレ―トID
ブラウザーにて以下のURLにアクセスし、Things Cloudにログインします。
- Things Cloudログインページ: https://<Things Cloudテナント名>.je1.thingscloud.ntt.com/
画面左上に「デバイス管理」と表示されていることを確認します。「デバイス管理」ではない場合、画面右上のメニューから[デバイス管理]をクリックしてください。
画面左のメニューより、[デバイス]>[すべてのデバイス]をクリックし、リスト中にIoTデバイスが表示されていることを確認します。
対象のIoTデバイスをクリックし、デバイスの詳細画面に移動します。
詳細画面中のメニューより、[識別子]をクリックし、遷移先画面の「外部ID」の値を確認・保存してください。こちらの値が「MQTT Client ID」です。
画面左のメニューより、[デバイス タイプ]>[SmartREST テンプレート]をクリックし、テンプレート一覧を表示し、対象のSmartRESTテンプレートの「ID」の値を確認・保存してください。こちらの値が「SmartRESTテンプレ―トID」です。
データ転送テストをする¶
Raspberry Piでのデータ転送¶
Raspberry Piのターミナルを開きます。
以下のコマンドを実行します。
$ mosquitto_pub --host an1.icgw.ntt.com --port 1883 --qos 0 --topic s/uc/<SmartRESTテンプレ―トID> -m ',<日時>,<人数>,<曜日>,<気温>,<天候>' -i <Things CloudでのMQTT Client ID>
ターミナル上に、以下のようなMQTT転送のステータスが表示されることを確認します。
Client xxxxx sending CONNECT Client xxxxx received CONNACK (0) Client xxxxx sending PUBLISH (d0, q0, r0, m1, 's/uc/xxxxx', ... (6 bytes)) Client xxxxx sending DISCONNECT
実行Pythonコードサンプルを確認する¶
各種データの取得およびThings Cloudへのデータ転送を繰り返し(※)実行するPythonコードのサンプルを掲載します。
注釈
- (※)本コードの実行を停止するには、「Ctrl」+「c」を入力します。
- センサーから取得・送信する値に関しましては、お客様の環境に読み替えて作成してください。
Pythonコード例
import time
import datetime
import subprocess
# Set Parameters
ADDR = "an1.icgw.ntt.com"
PORT = "1883"
TOPIC = "s/uc/<SmartRESTテンプレ―トID>"
QOS = "<QoS>"
ID = "<Things CloudでのMQTT Client ID>"
"""
センサーから計測データを取得
お客様が実際に計測・送信するデータに読み替えてください
"""
datetime = <日付(YY/MM/DD hh:mm)>
people = <人数>
week = <曜日>
temperature = <気温>
weather = <天候>
try:
while True:
#「" + str(<要素名>=<センサーから取得した情報>) + "」についてはお客様環境にて実際に計測した値に書き換えてご利用ください
cmd = "mosquitto_pub --host " + str(ADDR) +" --port "+ str(PORT) + " --qos " + str(QOS) + " --topic " + str(TOPIC) + " -m '," + str(datetime) + "," + str(people) + "," + str(week) + "," + str(temperature) + "," + str(weather) + "' -i " + str(ID)
proc = subprocess.run(cmd, shell = True)
#60秒間隔でデータ送信する
time.sleep(60)
except KeyboardInterrupt:
print("Cleanup")
print("Ended program by KeyboardInterrupt.")