Top / Raspberry Pi / AWS IoT

AWS IoTは、ラズパイなどのハードウェアなどからAWSに接続して、AWSの様々なサービスを呼び出すためのプラットフォームです。デバイスの認証認可が行え、証明書を持たないデバイスからの通信は受け付けないとか、その辺がいい感じみたいですね。

AWS IoT の設定追加

ここまでで、topic/sns というTopicにメッセージを送信すると、所定のアドレスにそのメッセージがメールされるようになりました。

Mosquitto Clientsのインストール

ラズパイに MQTT をしゃべらせるためのライブラリを入れます。

sudo apt-get install mosquitto-clients

これでインストールは完了なんですが、どうも疎通確認をしたところバージョンが古くてダメらしく、、 Installing MQTT Broker(Mosquitto) on Raspberry Pi を参考にしながら最新版に差し替えました。

証明書の配置

さて、IoTの設定画面から

  • xxxx-certificate.pem.crt
  • xxxxx-private.pem.key

をダウンロードしてカレントディレクトリに配置しておきます。また Getting Started with AWS IoT on Raspberry Pi and the AWS IoT Device SDK for JavaScript - AWS IoT のDownload a root CA certificate from here から、CAの証明書をダウンロードして rootCA.pem として配置しておきます。

疎通

さいごに下記のコマンドで、メールが送られてくれば成功です。

mosquitto_pub --cafile rootCA.pem  --cert xxxx-certificate.pem.crt  
 --key xxxxx-private.pem.key -h xxxxxx.iot.ap-northeast-1.amazonaws.com 
 -p 8883 -q 1 -d -t topic/sns -m  '{"foo":"bar"}'

Pythonから呼び出し

SDKをインストールします

sudo pip install AWSIoTPythonSDK

つぎにGithubから

git clone https://github.com/aws/aws-iot-device-sdk-python.git
cd aws-iot-device-sdk-python
python setup.py install   ← もしくは sudo python3 setup.py install とか。

これでサンプルを疎通しようとしたのですが、具体的には

cd samples/basicPubSub/
sudo python3 basicPubSub.py ........

としようとしたところエラー。どうもpython3から実行するには、ImportError with Python 3 によると、basicPubSub?.py をすこしいじる必要があるっぽい。サイトの通りに変更したところ正しく動くようになりました。

さて実行したサンプルは以下の通り:

sudo python3 basicPubSub.py -e xxxxxx.iot.ap-northeast-1.amazonaws.com 
  -r /home/pi/aws-iot/rootCA.pem 
  -c /home/pi/aws-iot/xxx-certificate.pem.crt 
  -k /home/pi/aws-iot/xxxxx-private.pem.key

このサンプルは初期の状態では1秒に一回、Topicにメッセージを投げるようになっています。サンプルはTopic名が上記の topic/sns とは別なのでそれを変更すると、1秒に一回の頻度でバンバンメールを飛ばして来ちゃいます。loopの秒数は替えて実行したほうがよいですのでご注意を。

関連リンク


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 2  

Top / Raspberry Pi / AWS IoT

現在のアクセス:3757


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-03-18 (日) 21:55:35 (2220d)