Details:
AWS IoT Core連携
INTAconnection Trial Packageをダウンロードいただき、誠にありがとうございます。ILCの永坂と申します。
本ポストではMQTT FunctionBoxとSenseHAT FunctionBoxを組み合わせた、Raspberry PiとAmazon Web ServiceのAWS IoT Coreとの連携を行うサンプルフローについて紹介します。
このフローでは、Raspberry Pi SenseHATから取得される温度、湿度、ジャイロのX軸とY軸の値を、AWS IoTに送信しています。
【Raspberry Pi側の準備】
1.I2Cを有効にしてください。
sudo raspi-config
上記のコマンドで表示される設定から、「Interfacing Options」→「P5 I2C」を選択し、Enableにします。
スタートメニューの「設定」→「Raspberry Piの設定」→「インターフェイス」→「I2C」で有効にすることも可能です。
【Amazon Web Service側の準備】※1
1.AWSにログインし、コンソールのホームからIoT Coreを開いてください。
画面左上の「サービス」から、「IoT」→「IoT Core」を選択してください。
2.AWS IoT Coreの左側のメニュー一覧から「設定」を開き、エンドポイントのURIをメモに残してください。
INTAconnection EditorでMQTTブローカーの接続先を指定する際に、入力にこのエンドポイントを使用します。
3.AWS IoT Coreの左側のメニュー一覧から、管理の「すべてのデバイス」→「モノ」を開いてください。
4.「モノを作成」を押し、各種プロパティを設定する。
4-1.モノのプロパティを指定
モノの名前の設定をしてください。
DeviceShadowを1つ作成してください。名前付きであるか、名前のないシャドウかは問いません。
4-2.デバイス証明書を設定
新しい証明書の作成を選択します。
4-3.証明書にポリシーをアタッチ
AWS IoTリソースへのアクセスを許可/拒否するポリシーを適用します。
ポリシーが無い場合は「ポリシーを作成」を押して新規に作成してください。
ここでは、ポリシー効果は許可(Allow)、ポリシーアクションとポリシーリソースは「*」としています。
4-4.証明書とキーのダウンロード
AWSに接続するために必要なデバイス証明書、キーファイル、ルートCA証明書をすべてダウンロードしてください。
Connected PLCでデバイス証明書、キーファイル、ルートCA証明書 CA1を使用します。
※1 2024/2/9現在の手順です。今後更新される可能性があるため、最新の手順に従ってください。
【Connected PLCにAWSの証明書を適用する】
Connected PLCに、AWSのモノを作成した際に得たデバイス証明書、キーファイル、ルートCA証明書を適用します。
1.Raspberry Piの/etc/ConnectedPLC (ConnectedPLC.bashが置かれているディレクトリ)に、デバイス証明書、キーファイル、ルートCA証明書 CA1を配置してください。
2.ConnectedPLCconfig/name.iniを開いてください。
3.ConnectedPLCconfig/name.iniのうち、以下の項目を記述してください。
MqttCACertificate=AmazonRootCA1.pem
MqttClientCertificate=デバイス証明書(certificate.pem.crt)
MqttPrivateKey=プライベートキーファイル(private.pem.key)
MqttPrivateKeyPassword=任意のパスワード。パスワードがない場合は記載なし。
4.自動起動しているConnected PLCを以下のコマンドを使用して停止させ、再度起動してください。
sudo systemctl stop connectedplc.service
sudo systemctl start connectedplc.service
【INTAconnection EditorのフローとAWS MQTTテストクライアントの設定を変更する】
添付したサンプルフローの入力とプロパティ、およびAWS IoT CoreのMQTTテストクライアントの設定を変更します。変更する箇所は添付画像の赤い丸で囲ったFunctionBoxです。
1.AWS IoT CoreのMQTTテストクライアントを開いてください。
2.「クライアント ID を入力または生成」から、任意の23文字以内の文字列を入力してクライアントIDを設定してください。
3.「接続」を押して、MQTTテストクライアントを起動してください。
4.添付したフローをINTAconnection Editorに読み込んでください。
5.「MQTT_BasicOptions」のプロパティ「クライアントID」に、手順2で設定したクライアントIDを入力してください。
6.「MQTT_Publish」の入力端子2「Endpoint address and port number」に、「エンドポイントURI:8883(ポート番号)」を設定してください。
7.「MQTT_Publish」の入力端子3「Topic」を、「data/(「モノを作成」で設定したモノの名前)」に変更してください。
例:trial_test/sensor_data
8.「プログラム書込み」を押して、Connected PLCにプログラムを書き込んでください。
9.INTAconnection Editorの右上にある三本線から「表示」→「入出力端子のモニタ」のチェックボックスを有効にしてください。
10.「トピックをサブスクライブする」から、トピックのフィルターに手順7で設定したTopic名を入力してください。
11.サブスクライブを押して、サブスクリプションに以下の形式の文字列が表示されたら成功です。
{
"TEMPERATURE": 34,
"HUMIDITY": 27,
"GYRO_Y": -2.0147010000000001,
"GYRO_X": 0.26070199999999999
}