1.1.4.4. 動作確認をする(実行コード例)

本項では、「構成B: Things Cloud・GPSセンサー利用」における動作確認方法・実行コード例について記載しています。

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

Things Cloud接続情報確認

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

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

  • MQTT Client 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

データ転送テスト

Raspberry Piでのデータ転送

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

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

    $ mosquitto_pub --host an1.icgw.ntt.com --port 1883 --qos 0 --topic s/us -m ',43.0000,141.0000' -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
    

Things Cloudでのデータ受信確認

  1. ブラウザーにて以下のURLにアクセスし、Things Cloudにログインします。

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

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

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

  5. 詳細画面中のメニューより、「位置」をクリックし、遷移先画面の地図上に位置情報(緯度:北緯43度、経度:東経141度)が表示されていることを確認します。

    Temp Result

データ転送テストの手順は以上です。

実行Pythonコードサンプル

位置情報データの取得およびThings Cloudへのデータ転送を繰り返し(※)実行するPythonコードのサンプルを掲載します。

注釈

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

GPS_TC.py

import time
import subprocess
from gps3 import gps3

# Set Parameters
ADDR = "an1.icgw.ntt.com"
PORT = "1883"
TOPIC = "s/us"
QOS = "0"
ID = "10000000b524bfa7"


socket = gps3.GPSDSocket()
data_stream = gps3.DataStream()
socket.connect()
socket.watch()

try:
    for gps_data in socket:
        if gps_data:
            data_stream.unpack(gps_data)

            now = data_stream.TPV['time']
            lat = data_stream.TPV['lat']
            lon = data_stream.TPV['lon']

            if (now != 'n/a' and lat != 'n/a' and lon != 'n/a'):
                cmd = "mosquitto_pub --host " + str(ADDR) + " --port " + str(PORT) + " --qos " + str(QOS) + " --topic " + str(TOPIC) + " -m '" + str(lat) + "," + str(lon) + "' -i " + str(ID)
                proc = subprocess.run(cmd, shell = True)

                print('Time: ', now)
                print('Lat:  ', lat)
                print('Lon:  ', lon)

        # every 1 seconds
        #time.sleep(1)

except KeyboardInterrupt:
    print("Ended program by KeyboardInterrupt.")
    quit()
except StopIteration:
    socket = None
    print("GPSD has terminated.")