前回の記事でAWSに関する設定を行いました。
https://lifetime-engineer.com/pc-aws-iot-connection-part1/
今回でAWS IoTへ接続を行ったりしたいと思います。
使用する言語はPythonです。
AWS IoT Device SDK for Pythonのインストール
以下のコマンドを入力し、AWS IoT Device SDK for Pythonをインストールしてください。
pip install AWSIoTPythonSDK
GitHubに詳しい情報が載っています。
https://github.com/aws/aws-iot-device-sdk-python
メッセージの送信
以下のコードでメッセージが送信できます。
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
myMQTTClient = AWSIoTMQTTClient('myClientID')
myMQTTClient.configureEndpoint('YOUR.ENDPOINT', 8883) # 設定画面のエンドポイントの値
myMQTTClient.configureCredentials("YOUR/ROOT/CA/PATH", "PRIVATE/KEY/PATH", "CERTIFICATE/PATH")
myMQTTClient.configureOfflinePublishQueueing(-1) # Infinite offline Publish queueing
myMQTTClient.configureDrainingFrequency(2) # Draining: 2 Hz
myMQTTClient.configureConnectDisconnectTimeout(10) # 10 sec
myMQTTClient.configureMQTTOperationTimeout(5) # 5 sec
myMQTTClient.connect()
myMQTTClient.publish("myTopic", "myPayload", 0)
myMQTTClient.disconnect()
エンドポイントの入力
こちらの情報は、設定画面にエンドポイントの値があるので入力します。
myMQTTClient.configureEndpoint('YOUR.ENDPOINT', 8883) # 設定画面のエンドポイントの値
証明書の入力
AWSの設定時にダウンロードした証明書のパスをそれぞれ入力します。
myMQTTClient.configureCredentials("YOUR/ROOT/CA/PATH", "PRIVATE/KEY/PATH", "CERTIFICATE/PATH")
テストを行う
IoT Coreに戻り、「テスト」を選択します。
トピックのサブスクリプションに「myTopic」と入力し、「トピックのサブスクライブ」を選択します。
以下の画面が表示されたと思います。
プログラムを実行すると、メッセージが送信されていることが確認できます。
メッセージの受信
以下のコードでメッセージが受信できます。
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
import time
def customCallback(client, userdata, message):
print('Received a new message: ')
print(message.payload)
print('from topic: ')
print(message.topic)
print('--------------\n\n')
myMQTTClient = AWSIoTMQTTClient('myClientID')
myMQTTClient.configureEndpoint('YOUR.ENDPOINT', 8883) # 設定画面のエンドポイントの値
myMQTTClient.configureCredentials("YOUR/ROOT/CA/PATH", "PRIVATE/KEY/PATH", "CERTIFICATE/PATH")
myMQTTClient.configureOfflinePublishQueueing(-1) # Infinite offline Publish queueing
myMQTTClient.configureDrainingFrequency(2) # Draining: 2 Hz
myMQTTClient.configureConnectDisconnectTimeout(10) # 10 sec
myMQTTClient.configureMQTTOperationTimeout(5) # 5 sec
myMQTTClient.connect()
while True:
myMQTTClient.subscribe("myTopic", 1, customCallback)
time.sleep(1)
テストを行う
プログラムを実行しておきます。
送信時と同様に「テスト」を選択します。
発行の欄に「myTopic」と入力し、「トピックに発行」を選択します。
メッセージが受信できたことを確認できました。
ラズパイがなくても簡単にAWS IoTを触れることができました。
こちらの記事を参考にさせていただいています。