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)を設定してあっという間に気温遷移のグラフが完成です。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
AWS WAFをSIEM on Amazon OpenSearch Serviceで可視化
SIEM on Amazon OpenSearch Serviceを構築の環境に …
-
Lambda関数で自分自身の環境変数を更新する
Twitterでツイート検索するAPIを試してみるでツイートの取得を重複させない …
-
AWS SSOのIDソースをAD Connectorにしました
オンプレミス想定のActive DirectoryにVPN接続して、AD Con …
-
Amazon Connectで電話を転送する
かかってきた電話を転送するようにしました。 問い合わせフローで[終了/転送]から …
-
QuickSightのVisualizeをダッシュボード化して定期メール
「Backlogの実績工数をAmazon QuickSightで可視化してわかっ …
-
CloudFormation Lambda-backedカスタムリソースチュートリアルをやりました
チュートリアル: Amazon マシンイメージ ID を参照するの手順に従ってや …
-
AWS Managed Microsoft ADを構築してユーザー追加まで
事前準備 DNSホスト名と名前解決を有効にしたVPCを作成して、2つのAZにパブ …
-
Amazon EMR 「Hadoop を使用してビッグデータを分析」チュートリアルをやってみました
AWS認定データアナリティクス受験準備の一環で、Amazon EMRのチュートリ …
-
「JAWS-UG in AWS Cloud Roadshow 2017 大阪」で運営をしました
AWS Cloud Roadshow 2017 大阪のナイトイベントで、「JAW …
-
AWS Global Acceleratorでアクセラレーターを作成する
バージニア北部、東京、大阪のEC2インスタンスをエンドポイントにして作成してみま …