DS18B20センサー+Raspberry Piで取得した温度をAmazon Kinesis FirehoseからS3へ格納してAthenaでクエリーしたのをQuickSightで可視化する
JAWS DAYS 2017でやりますハンズオンの「[IoTハンズオン] Raspberry Pi + Athena + QuickSightで可視化」の事前検証をしました記録です。
こちらの個人ブログでは検証の記録をしているのみです。
ハンズオン当日は親切丁寧なQiitaの記事を見ながら、分からないところはメンターに質問してもらいながら進めていただきますのでご安心ください。
目次
Amazon Kinesis FirehoseのためのIAMユーザ
AmazonKinesisFirehoseFullAccessのポリシーを付与したユーザーを作成して、Access Key IDとSecret Access Keyを控えておくかユーザ作成時のCSVを保管します。
Amazon Kinesis Firehoseの設定
Desination : Amazon S3
Delivery stream name : 任意
S3 bucket : 任意
Buffer interval : 300
IAM role : Firehose delivery IAM role
Raspberry Pi
AWS CLIをインストールして設定
1 2 3 4 5 6 7 |
$ sudo pip install awscli $ aws configure AWS Access Key ID [None]: ************ AWS Secret Access Key [None]: ************ Default region name [None]: us-east-1 Default output format [None]: json |
1-wireモジュール用の設定
1 2 |
$ sudo vim /etc/modules |
一番下に2行追加
1 2 3 |
w1-gpio w1-therm |
次にbootconfigの設定ですが、念のためコピーを作成しておきます
1 2 3 |
$ sudo cp /boot/config.txt ~/config.txt_org $ sudo vim /boot/config.txt |
一番下に1行追加
1 2 |
dtoverlay=w1-gpio-pullup,gpiopin=4 |
DS18B20の接続
ここで1つ目の問題発生
通販でDS18B20を買ってとどいいたものをろくろく確認もせずにブレッドボードに挿していざ検証っとしたところでセンサーが熱くなってこげくさくなってバチバチに。
よく見るとLM35DZでした。
ちょうどVccが逆になるのですね。いかんですね。
しかたなくもう1種類購入していたDS18B20使用 防水型 温度センサーを使用。
ここで2つ目の問題が発生。
実際のケーブルの色と説明のケーブルの色が違う。。。。。。。
試しながらつないでみて、下記の結果でした。
赤=赤、青=黄、黒=灰
なので、抵抗を経由して、赤を3.3vに、黄をGPIO4に、灰をGNDに接続しました。
シェルスクリプトの作成
1 2 3 4 5 |
$ ls -l /sys/bus/w1/devices/ 合計 0 lrwxrwxrwx 1 root root 0 2月 14 21:39 28-0115905007ff -> ../../../devices/w1_bus_master1/28-0115905007ff lrwxrwxrwx 1 root root 0 2月 14 21:39 w1_bus_master1 -> ../../../devices/w1_bus_master1 |
「28-」から始まるディレクトリ名を確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/bin/bash # 「28-」から始まるディレクトリ名を設定 deviceid=28-0115905007ff # Kinensis Firehoseのストリーム名を設定 streamname=days-yama-2017 while [ 1 ] do ( time=`date '+%F %T'` temp=$(awk -F= 'END {print $2/1000}' < /sys/bus/w1/devices/$deviceid/w1_slave) payload='{\"time\":\"'$time'\", \"temperature\":'$temp'}' echo $payload aws firehose put-record --delivery-stream-name $streamname --record="{\"Data\":\"$payload\n\"}" ) & sleep 15 done |
実行!
S3確認
出来てます!
Athenaでクエリーテーブル作成
[add table]からデータベースとテーブルを作成しました。
- Database : Create new database
- Name : jawsdays2017
- Table Name : sensor
- Location of Input Data Set : s3://days-yama-2017/
-
Data Format : JSON
-
Column1 : time : timestamp
- Column2 : temperature : float
QuickSightで可視化
QuickSightではAthenaで作成しているS3にアクセス許可をしておきました。
[Manage QuickSight] – [Account Settings] – [Edit AWS permissions]
Athenaのデータセットを作成
New Data SetでAthenaを選択
データベースとテーブルを選択
Import to SPICEを選択
Analysisでごにょごにょ
Visual typesで折れ線グラフを選んで X axisにtime(HOUR),Valueにtemperature(AVERAGE)を設定してあっという間に気温遷移のグラフが完成です。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
【PR】 「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS Cost Anomaly Detectionでコストモニターを作成しました
[ご利用開始にあたって]を押下しました。 このあと画面を説明してくれるツアーがあ …
-
-
ヤマムギ vol.7 AWSアカウント作成 & 最初の設定ハンズオン 手順
ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …
-
-
SCPが影響しないサービスにリンクされたロールにEC2が引き受けるIAMロールは含まれないことを確認
ドキュメントで確認 サービスコントロールポリシーのユーザーガイドには、「SCPは …
-
-
AWS Organizationsで新規メンバー登録したアカウントを組織から離して解約
2021年現在ではこの方法しかないと認識していますので書き残します。 そのうち新 …
-
-
Amazon Linux2のCloud9でPython CDKのモジュールインストール
AMIがCloud9AmazonLinux2-2021-02-02T16-48の …
-
-
Extend Switch Roles(Chromeのアドオン)で6つ以上のスイッチロール履歴
最近アカウントIDを忘れたりすることも多くなったので、切り替えに手間取ることがあ …
-
-
AWSエンコードされたエラーメッセージをデコードするコマンドのメモ
Stdout: couldn’t create ENI: Unaut …
-
-
AWSのアカウントを新規作成と、最低限やっておいた方がいいMFAの設定
AWSのアカウントを新規作成する手順を書き出しておきます。 ※2017年8月6日 …
-
-
WordPressで画像アップロードができなくなった(AWS WAFでブロックしていた)
WordPressで画像がアップロードできなくなりました。 こんなメッセージです …
-
-
EC2インスタンスが到達不能になって復旧してMackerelで監視し始めた
きっとばりばり使っておられる方ならよくある事なんだろうけど、はじめて体験したので …