1.1.3.12. IoT機器設定・コード例を確認する

本項では、本システムの実装において必要なIoT機器での設定手順の説明およびPythonコード例を記載しています。

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

注釈

前提条件を確認する

  • 本項では、以下を前提条件としています。

    • お客様環境下にて、IoT機器から予測に必要な各種データの計測と送信ができること

Things Cloud接続情報を確認する

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

事前に設定したThings Cloudについて、以下の情報が分からない場合は下記の手順でご確認ください。

  • MQTT Client ID
  • SmartRESTテンプレ―トID
  1. ブラウザーにて以下のURLにアクセスし、Things Cloudにログインします。

    • Things Cloudログインページ: https://<Things Cloudテナント名>.je1.thingscloud.ntt.com/
  2. 画面左上に「デバイス管理」と表示されていることを確認します。「デバイス管理」ではない場合、画面右上のメニューから[デバイス管理]をクリックしてください。

    Device Management
  3. 画面左のメニューより、[デバイス]>[すべてのデバイス]をクリックし、リスト中にIoTデバイスが表示されていることを確認します。

    Device List
  4. 対象のIoTデバイスをクリックし、デバイスの詳細画面に移動します。

  5. 詳細画面中のメニューより、[識別子]をクリックし、遷移先画面の「外部ID」の値を確認・保存してください。こちらの値が「MQTT Client ID」です。

    MQTT Client ID
  6. 画面左のメニューより、[デバイス タイプ]>[SmartREST テンプレート]をクリックし、テンプレート一覧を表示し、対象のSmartRESTテンプレートの「ID」の値を確認・保存してください。こちらの値が「SmartRESTテンプレ―トID」です。

    SmartREST Template

データ転送テストをする

Raspberry Piでのデータ転送

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

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

    $ mosquitto_pub --host an1.icgw.ntt.com --port 1883 --qos 0 --topic s/uc/<SmartRESTテンプレ―トID> -m ',<日時>,<人数>,<曜日>,<気温>,<天候>' -i <Things CloudでのMQTT Client ID>
    
  3. ターミナル上に、以下のような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.")