【未経験向け】CCNA(200-301)とは? NW未経験が1ヶ月で合格した際に使用した魔法の学習教材、サイトを紹介!!!

RaspberryPi を AWS IoT Core に接続する

電子工作

スポンサーリンク

概要

目標

Raspberry Pi上の出力データをAmazon IoTに送信する。

実行環境

  • Amazon Web Service(AWS)
  • Raspberry Pi Zero W
    • OS Raspbian GNU/Linux 10

AWS側での作業

IoT モノを作成

  1. AWSマネージメントコンソール を開きます。
     
  2. IoTコンソールへ遷移します。
     
  3. 左ペイン「管理」–> 「モノ」–>「Create Things」をクリックします。
  1. モノを作成 –> 作成するモノの数 –> 1つのモノを作成 にチェックを付け、「次へ」をクリック。
  1. 「モノのプロパティ」 –> 「モノの名前」 に モノの名前 を記入します。
    「Device Shadow」から シャドウがありません にチェックを付けます。
    画面右下「次へ」をクリックします。
  1. 「デバイス証明書」–>「新しい証明書を自動生成 (推奨)」にチェックを付け「次へ」をクリック。
  1. ポリシーは特に設定せず「モノを作成」をクリックします。
     
  2. 発行した証明書のダウンロード画面が表示されますので、全て ダウンロードします。
    ※この画面からしか証明書のダウンロードは出来ませんので忘れずにダウンロードしておきます
     
  3. モノ一覧にて モノ が作成されていることを確認します。

IoT ポリシーを作成

  1. IoTコンソール左ペイン「安全性」–> 「ポリシー」–>「ポリシーを作成」をクリックします。
     
  2. 「ポリシーのプロパティ」–>「ポリシー名」にて ポリシーの名前 を入力します。
    「ポリシードキュメント」にて ビルダー にチェックを付けます。
    ポリシー効果 で 許可 を選択します。
    ポリシーアクションで 全てのIoTアクション –> * を選択します。
    ポリシーリソースで * と入力します。
    上記パラメータを指定したら 作成 をクリックします。
  1. ポリシーが作成されたことを確認します。

IoT グループを作成

  1. IoTコンソール左ペイン「管理」–> 「モノのグループ」–>「グループを作成」をクリックします。
     
  2. 「モノのグループタイプ」にて、「モノの静的グループを作成」にチェックを付け、画面右下「次へ」をクリックします。
     
  3. 「モノのグループのプロパティ」–>「モノのグループ名」にってグループ名を入力し、画面右下「作成」をクリックします。
    ※ 他の設定はデフォルトのままで問題ありません。
     
  4. グループ一覧にて、グループが作成されたことを確認します。

各ロールの連携

  1. 作成したポリシーを証明書とグループにアタッチします。
  2. グループをモノにアタッチします。

RaspberryPi側での作業

開発モジュールのインストール

  1. RaspberryPi Zeroへssh接続します。
  2. Python およびその開発ツールをインストールします。
# Python 3 をインストール
sudo apt install python3

# pip3 をインストールします
sudo apt install python3-pip
  1. Python およびその開発ツールがインストールされたことを確認します。
# Python v3 がインストールされているか確認します
python3 --version

# pip3 がインストールされているか確認します
pip3 --version
  1. Gitをインストールします。
# Gitをインストールします
sudo apt-get install git
  1. Gitがインストールされたことを確認します。
# Git がインストールされているか確認します
git --version

必要モジュールのインストール

  1. 下記ツールをインストールします。
    • cmake
    • libssl-dev
    • awsiotsdk
    • AWSIoTPythonSDK
# 必要モジュールのインストール
sudo apt-get install -y cmake
sudo apt-get install -y libssl-dev
sudo python3 -m pip install awsiotsdk
sudo pip install AWSIoTPythonSDK

サンプルプログラムをダウンロード

AWSの提供しているAWS IoT接続用のサンプルプログラムをダウンロードします。

# サンプルアプリケーションのダウンロード
git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git

証明書をアップロード

AWS IoTモノ作成時に発行した証明書をRaspberryPi上にアップロードします。
上げ方は人それぞれやりかたがありますので省略します。

本記事では以下の通りにアップロードします。

$ pwd
/home/<USERPROFILE>/aws-iot-device-sdk-python-v2/samples
$ ls certs/
<ルート CA 証明書> <デバイス証明書> <プライベートキー>

サンプルプログラムを実行する

サンプルプログラムを実行し、Raspberry Pi から AWS IoT へサンプルデータを送信します。

# サンプルプログラムを実行
python3 pubsub.py --topic IotTopic-1 \
--cert ./certs/<識別子>-certificate.pem.crt \
--key ./certs/<識別子>-private.pem.key \
--endpoint <AWS IoTのエンドポイント>

下記の結果が出力されます。

Connecting to ・・・ with client ID 'test-e0fa8766-fad2-4f11-8d89-af5207aea381'...
Connected!
Subscribing to topic 'IotTopic-1'...
Subscribed with QoS.AT_LEAST_ONCE
Sending 10 message(s)
Publishing message to topic 'IotTopic-1': Hello World! [1]
Received message from topic 'IotTopic-1': b'"Hello World! [1]"'
Publishing message to topic 'IotTopic-1': Hello World! [2]
Received message from topic 'IotTopic-1': b'"Hello World! [2]"'
Publishing message to topic 'IotTopic-1': Hello World! [3]
Received message from topic 'IotTopic-1': b'"Hello World! [3]"'
Publishing message to topic 'IotTopic-1': Hello World! [4]
Received message from topic 'IotTopic-1': b'"Hello World! [4]"'
Publishing message to topic 'IotTopic-1': Hello World! [5]
Received message from topic 'IotTopic-1': b'"Hello World! [5]"'
Publishing message to topic 'IotTopic-1': Hello World! [6]
Received message from topic 'IotTopic-1': b'"Hello World! [6]"'
Publishing message to topic 'IotTopic-1': Hello World! [7]
Received message from topic 'IotTopic-1': b'"Hello World! [7]"'
Publishing message to topic 'topIotTopic-1c_1': Hello World! [8]
Received message from topic 'IotTopic-1': b'"Hello World! [8]"'
Publishing message to topic 'IotTopic-1': Hello World! [9]
Received message from topic 'IotTopic-1': b'"Hello World! [9]"'
Publishing message to topic 'IotTopic-1': Hello World! [10]
Received message from topic 'IotTopic-1': b'"Hello World! [10]"'
10 message(s) received.
Disconnecting...
Disconnected!

AWS IoT MQTT クライアントで接続確認

AWS IoT MQTT クライアントにて作成したトピック宛てにサンプルデータが送られているか確認します。

  1. AWSマネージメントコンソール を開きます。
     
  2. IoTコンソールへ遷移します。
     
  3. 左ペイン「テスト」–> 「MQTT テストクライアント」をクリックします。
     
  4. 「トピックをサブスクライブする」をクリックし、「サブスクリプション」から「IotTopic-1」が選択されていることを確認します。
     
  5. 下記の通りサンプルデータを受け取れていることを確認します。

参考

コメント

タイトルとURLをコピーしました