AWS IoT Device SDK のサンプルbasicPubSub.pyでMQTT送受信する

RasPiなどをデバイスとしてAWS IoT CoreにMQTTでpublish、subscribeさせたい場合、
aws-iot-device-sdk-python のサンプルが手軽なのでインストール方法および使い方のメモです。

aws-iot-device-sdk-python

必要要件

  •   Python 2.7+ or Python 3.3+ via port 8883
  •   Python 2.7.10+ or Python 3.5+ via port 443
  •   OpenSSL version 1.0.1+ (TLS version 1.2)

古いRasPi B (Raspbian 7 Jessie)で試してみました。

pi@raspi ~ $ uname -a
Linux raspi 4.1.19+ #858 Tue Mar 15 15:52:03 GMT 2016 armv6l GNU/Linux

pi@raspi ~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
...

pi@raspi ~ $ python
Python 2.7.3 (default, Nov 24 2017, 21:13:24)
[GCC 4.6.3] on linux2

>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 1.0.1t 3 May 2016'
>>>

大丈夫な様です。

インストール

$ sudo pip install AWSIoTPythonSDK

サンプルをダウンロード
https://github.com/aws/aws-iot-device-sdk-python/blob/master/samples/basicPubSub/basicPubSub.py

AWS IoT Coreに対して接続するには次の情報と証明書ファイルが必要です。ファイルもbasicPubSub.pyと同じフォルダへコピーします。

例:
AWS IoT Coreのエンドポイント: xxxxxxxxxxxx.iot.us-west-1.amazonaws.com
ルート証明書ファイル: rootCA.pem
証明書ファイル: xxxxxxxx-certificate.pem.crt
プライベートKey: xxxxxxxx-private.pem.key

実行

以下のコマンドでデフォルトの自身でpublic、subscribeを実行し続けるbothモードで起動されます。

$python basicPubSub.py --endpoint xxxxxxxxxxxx.iot.us-west-1.amazonaws.com --rootCA ./rootCA.pem --cert ./xxxxxxxx.cert --key ./xxxxxxxx.private.key

実行例

...
Produced [message] event
2018-11-10 20:58:25,047 - AWSIoTPythonSDK.core.protocol.internal.workers - DEBUG - Dispatching [message] event
Received a new message:
{"message": "Hello World!", "sequence": 5}
from topic:
sdk/test/Python
--------------

特定のtopicをsubscribeのみ行う場合は一方だけ指定する場合は –topic [topic] –mode subscribe を追加して起動します。
例:

$python basicPubSub.py --endpoint ...<省略>... --topic 'mytopic/+' --mode subscribe

無事subscribeできました。

コメントを残す

メールアドレスが公開されることはありません。

nine + 10 =