LoginSignup
1
1

More than 1 year has passed since last update.

ラズパイで消費電力を取得する(3)完結

Posted at

目的

Raspberry Pi4とCTセンサーを用いて、消費電力を取得し、AWS IoT Core経由で、ElasticSearchに流し込むこと。
前回の記事はこちら。

方法

ざっくりの流れは以下の通りです。

  1. ハードウェアの構築
  2. 消費電力取得プログラムの作成
  3. AWS環境の構築

3.AWS環境の構築

計測した消費電力を可視化するために、AWSのサービスをいくつか組み合わせて環境を構築します。
ざっくりいうと 「IoT Core → ElasticSearch → kibana」 という構成、フローとなっており、IoT Coreでエッジデバイスのセンシングデータを収集、ElasticSearchのエンジンを使ってデータベース化、ElasticSearchと紐付いたkibanaで可視化というイメージです。

3.1.IoT Coreの設定

3.1.1.AWS IoT のエンドポイント確認

1.AWS IoT Coreのコンソール画面を開く
2.左のサイドメニューの下にある設定を選択
3.表示されたエンドポイントをコピーしておく
図1.png

3.1.2.AWS IoT のログの設定

1.同画面下にあるログから、ログの管理を押す
図2.png

2.ロールを作成を押してロールを新規作成
図3.png

3.ロールを作成をした場合、ロール名を入力
4.作成を押す
図4.png

5.ログレベルで情報を選択
6.更新を押す
図5.png
次のような表示ができていれば完了
図6.png

3.1.3.IoT ポリシーの作成

1.左のサイドメニューの安全性からポリシーを選択
2.ポリシーの作成を押す
図7.png

3.名前を入力する
4.アクションにiot:* を入力
5.リソースARNに * を入力
6.効果で 許可 を設定する
7.作成を押す
図8.png

3.1.4.モノの作成

1.左のサイドメニューの管理からモノを選択
2.モノの作成を押す
図9.png

3.1つのモノを作成を選択
4.次へを押す
図10.png

5.モノのプロパティを指定で名前を入力 ※入力した名前は後ほど使用するためメモをしておく
6.次へを押す
図11.png

7.新しい証明書を自動生成 (推奨) を選択
8.次へを押す
図12.png

9.先程作成したポリシーにチェックを入れる
10.モノの作成を押す
図13.png
11.ポップアップ表示された画面で、
・デバイス証明書
・プライベートキーファイル
について、それぞれダウンロードをクリック

12.完了を押す
図14.png

この作業が完了すると、モノの一覧の画面が表示され、画面上部に「モノが正常に作成されました」と表示される

3.1.5.証明書をラズパイにアップロード

1.証明書をダウンロードしたPCから操作を行う

2.(Macの場合)ターミナルを開き、下記コマンドを実行※<デバイス証明書のパス> 、 <プライベートキーのパス> はぞれぞれ調べて入れる

scp <デバイス証明書のパス> <プライベートキーのパス>pi@raspberrypi.local:./dummy_client/certs/

3.パスワードを求める表示が出るので、パスワードを入力

100%と表示されていれば完了

3.1.6.ルート証明書のダウンロード

1.ラズパイで以下のコマンドを実行

pi@raspberrypi:~ $ cd ~/dummy_client/certs/
pi@raspberrypi:~ /dummy_client/certs/$ wget https://www.amazontrust.com/repository/AmazonRootCA1.pem -O AmazonRootCA1.pem

2.ラズパイの~/dummy_client/certs/の中にルート証明書、デバイス証明書、プライベートキーが正しくアップロードされているか確認する

3.1.7.Device SDK を使ったデバイスの起動

1.下記コマンド実行する
※ここでサンプルコードではなく自分のコードを使用する場合はdecice_main.pyのところを自分のコードのファイル名に変える

pi@raspberrypi:~ $ sudo -H pip3 install awsiotsdk
pi@raspberrypi:~ $ cd /dummy_client
pi@raspberrypi :/dummy_client$ python3 device_main.py --device_name <モノの名前> --endpoint <エンドポイント> 

2.次のような結果が返ってくるのでこの一番下の topic をメモする
図15.png

3.1.8.疎通テスト

1.AWS IoT Coreのコンソール画面を開く
2.左のサイドメニューの テスト から MQTT テストクライアントを選択
3.トピックをサブスクライブするのトピックのフィルターのテキストボックスに先程メモした topicを入力
4.サブスクライブをクリック
図16.png

画面下部のサブスクリプションから送信されたデータを確認できれば、成功

3.2.ElasticSearch Service(現:Open Search Service)の作成

3.2.1.ドメインの作成

1.Amazon OpenSearch Service の画面を開く
2.新しいドメインの作成 を選択
3.デプロイタイプ で 開発及びテストを選択
4.バージョン は 7.10 を選択
5.次へを押す
図17.png

6.ドメイン名 を入力
7.インスタンスタイプ は t3.small.search を選択
8.次へを押す
図18.png

9.こちらのサイトにブラウザでアクセスし、IPアドレスをメモする
10.ネットワーク構成 で パブリックアクセスを選択
11.きめ細かなアクセスコントロールで細かいアクセスコントロールを有効化を外す
12.ドメインアクセスポリシーでカスタムアクセスポリシーを選択
・タイプを選択 で IPv4 アドレスを選択
・プリンシパルを入力に先ほどメモしたIPアドレスを入力
・アクションは許可を選択
図19.png

13.次へを選択
図20.png

14.タグの追加 - オプションで、次へを選択
図21.png

15.確認画面で確認を押す
図22.png

起動し使用できるようになるまで10分程度時間がかかる

3.3.2.IoTルールの作成

1.AWS IoT Coreのコンソール画面を開く

2.画面左のメニューのACTからルール を選択

3.ルールの作成 を選択

4.名前を入力

5.ルールクエリステートメント に以下を入力

select parse_time(“yyyy-MM-dd‘T’HH:mm:ss.SSSZ”, timestamp()) as timestamp, * from ‘<ここにtopicを入れる>'

6.アクションの追加を押す
図23.png

7.actionBuilder.select.openSearchを選択

8.アクションの設定を選択
図24.png

9.先ほど作成した Elasticsearch Service のドメインをプルダウンリストから選択

10.IDに${newuuid()}を入力

11.索引に timestampを入力

12.タイプにtimestampを入力
図25.png

13.ロールを作成 を選択

14.Create role を押す

15.Create a new role ダイアログでのNameを入力

16.Create role を押す
図26.png

17.アクションの追加を押す
図27.png

18.アクションを作成すると元の画面に戻るので、ルールの作成を押す
図28.png

これで IoT Core から Elasticsearch Service にデータ転送するためのルールを作成完了

3.3.3.Kibana を開く

1.ドメインのステータスがアクティブになると、KibanaのURLが表示されるのでアクセスする
図29.png

2.Explore on my ownを選択
図30.png

3.左のメニューバーからDiscover を選択
図31.png

4.create an index pattern をクリック
図32.png

5.index pattern に timestamp と入力

6.Success と表示されることを確認

7.Next step を押す
図33.png

8.Time Filter field name で TIMESTAMP を選択

9.Create index pattern を押す
図34.png

下図のようにIndex pattern が表示される
図35.png

3.3.4.Timezoneの設定

1.Homeに戻り、ManageからAdvanced Settingを選択
図36.png

2.Timezone for data formatting をUTCに変更

3.Save Changesをクリック
図37.png

3.3.5.データの確認

1.Kibana のDiscoverを選択

2.下記のようなエラーが出た場合は、日付のところをTodayに変更すると改善される
図38.png

3.次のようにデータが登録されていることを確認する
図39.png

3.3.6.グラフ化

1.OpenSearch ダッシュボード / Kibana のトップ画面で Visualize を選択

2.Create a visualization を押す
図40.png

3.グラフ選択画面で、Line を選ぶ
図41.png

4.New Line / Choose a source で timestamp を選択
図42.png

5.Y-Axis をクリック
・Aggregation: Average を選択
・Field: TEMPERATURE を選択※ここで自分のコードを使用した際には自分が取得したデータがYに入る
・Custom Label: TEMPERATURE と入力

6.Metrics の Add をクリック
図43.png

7.Y-Axis を選択し
・Aggregation: Average を選択
・Field: HUMIDITY を選択
・Custom Label: HUMIDITYを入力

8.Buckets の X-Axis をクリック
・Aggregation: Date Histogram を選択
・Field: TIMESTAMP を選択
・Minimum interval: Auto を選択
・Custom Label: TIMESTAMP を入力
図44.png
9.Updateボタン をクリック
図45.png

次のように消費電力量の可視化ができました!
図46.png

まとめ

今回は、取得した消費電力を可視化するために、各種AWSサービスの設定を行いました。無事にRaspberry PiのCTセンサーから計測した値を可視化することができました。今回の記事で、消費電力量の可視化は完結です。これまでお付き合いくださり、誠にありがとうございました。

参考サイト

macだけでRaspberry Piに接続してみた
メモ:macからラズパイに簡単にファイル転送する方法(scp)
Windows10からRaspberryPiにカンタンSSH接続
Windows10標準のSSHクライアントで簡単・手軽にSSH接続!使い方を紹介
とにかく便利!Raspberry Pi をWindowsから利用するVNCの簡単インストール
SSH を使って Raspberry Pi に接続 〜Windows編〜
AWS IoT Coreハンズオン

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1