Raspberry PiからmosquittoでとりあえずAWS IoT叩く-AWS側準備編(後編)&Rasberry Pi側準備編&実行編

投稿者: | 2017-02-11

概要

前回記事の続きです。

今回の参考記事はコチラ

Code Zine AWS IotとRaspberry PiではじめるIoT超入門

IoT News AWS IoTを使って、IoT Buttonを自作してみた-①


15.続きです。次はデバイスからAWS IoTの操作を許可するためのPolicyを作成します。Security > Policies > Createしてください

16.名前をつけます。許可範囲も決めます。今回は、あらゆるiot:以下のアクションと全てのresourceの使用を許可します。よってActionにはiot:*, Resource ARNには*を入力します。EffectはAllowでCreate。

17.デバイスに登録する証明書を作ります。Security > Certificates > Create > One Click~でささっとできます

18.できたものから秘密鍵と証明書をダウンロードしてください

19.画面下部にあるrootCAも保存してください。名前はrootCA.pemとします。各種必要なファイルを保存したらActivate。

20.最初の画面に戻り、Security > Certificates で先ほど作った証明書のチェックボックスにチェックを入れ、Actions > Attach policyで作成した証明書とポリシーを関連づけます。

21.同様にして、Attach thingでモノと証明書を関連づけます。

22.Registry > Thingsで作成したモノをクリックすると詳細をみる画面に移行します。

23.左側メニューのInteractを選択し、Rest API Endpointをメモしておきます。このURLは後ほど必要になります

24.AWS側準備完了

25.ラズパイ側を準備します。ネットに繋げてかつssh通信できるものを用意します

26. 18,19で保管した証明書と鍵をscpコマンドで送ります。私は適当なフォルダにまとめて一気に送りました。-rオプションで送れます。

$ scp -r フォルダへのパス ラズパイユーザネーム@ラズパイIPアドレス:保存先パス

27.ラズパイ側でセットアップします。まずmosquittoを入れます。

ここで

$ sudo apt-get install mosquitto-clients

したいところですが、このまま進めると問題が発生します。ここが今回の私の詰みポイントでした。

このままインストールするとmosquitto_pubコマンドを実行した時にめっちゃ怒られました。

OpenSSL Error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

と言われます。一応 –insecureオプションを追加すると無視できますが健全な感じがしません。そこで2つめの参考記事がとても役立ちました。解決策に辿りつくまでにかなりの時間がかかって辛さがマックスでした。手順をそのまま引用させていただきます。

最初にmosquitto.orgのgpg keyをインストールします

wget  http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

# apt-key add mosquitto-repo.gpg.key

aptのsource listを追加します。

wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

# cp mosquitto-wheezy.list /etc/apt/sources.list.d/

mosquitto-clientsをインストールします。

# apt-get update

# apt-get install mosquitto-clients

これを行うと問題なく通るようになります。

28.鍵と証明書があるディレクトリに移動して以下を実行します

mosquitto_pub --cafile rootCA.pem \
--cert **********-certificate.pem.crt \
--key **********-private.pem.key \
-h さっきチェックしたエンドポイント \
-p 8883 -q 1 -d -t topic/sns \
-m '{"message":"ゴリラ"}'

-qオプションはメッセージに対するQoSを設定できます。詳しくは一つ目の参考記事を読んでください。-dオプションをつけるとデバッグメッセージを出力します。

29.登録したメールアドレスに届いてるか確認しましょう

来てました。


結果

一回接続できてしまえばこっちのもんです。あとはラズパイにボタンつけるなりセンサ類つけるなりして一定間隔でAWS IoTにデータ送ってうんぬん…と色々できることでしょう。色々できるようになるために勉強したいです。本来今回やった作業は30分程度でできるはずなのですが、いざmosquitto_pub実行!ってところでつまづいてしまいました。まあ解決はできたのでよかったです。PythonやNode.js用のSDKもあるらしいので触って見たいですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です