#はじめに
ある日、兼業農家の友人から「土の中の温度を定期的に観測したいんやが」との相談が。
どうやら__種を植える時期を決めるためには土の中の温度が重要__らしい。
ということで__ラズパイを使って自宅から屋外の畑の土壌温度を可視化してみよう!__に取り組んでみました。
#想定したシステム
最初は自宅ベランダの家庭菜園で使用できればOKとのことだったので、ネットワークは自宅のWiFiを使用。屋外で使用するので防水ボックスの中に電装部品を納める構成としました。
バッテリーを長持ちさせるためESP8266のdeepsleepを利用して一定周期でラズパイをON/OFFするシステムとしています。
###構成部品
- タカチ防水ボックス:BCAPシリーズ
- 防水センサー DS18B20
- Raspberry Pi Zero WH
- ESP8266 開発ボード
- WayInTop リレーモジュール 1チャンネルDC5V
- ケーブルグランド
- ブレッドボード、ジャンパワイヤーなど
- USBケーブルなど
#1.ラズパイと温度センサーを繋ぐ
以下を参考にしました。特に問題なくDS18B20から温度データを取得できました。
Raspberry Piで水温を取得する。(DS18B20)
https://www.taneyats.com/entry/raspi-smart-aquarium-2
#2.温度データをAWS IoTに送信する
AWSを触るのがかなり久しぶりでしたが、ちょうどよいハンズオン資料がAmazonにありました。
AWS IOT CORE 初級ハンズオン
https://aws-iot-core-for-beginners.workshop.aws/
こちらの__phase3. AWS IoT Core のセットアップ__を参考に、DS18B20から取得した温度データをAWS IoTへ送信します。AWS IoTのテストから送信したtopicを指定してデータを確認、問題なく送信できていました。
#3.送信されたデータをDynamoDBに格納する
続いて以下を参考に、DynamoDBでテーブルを作成しAWS IoTに送られたデータを格納します。
データをAWS IoT経由でDynamoDBへ保存する
https://qiita.com/0_1geek311/items/93ac822b8561c6dbce3c
パーティションキーに【DEVICE_NAME】、ソートキーに【TIMESTAMP】を指定しテーブルを作成。DS18B20で取得した温度データが無事DynamoDBに格納されました。
#4.DynamoDBのデータをグラフ化(IoT.Tokyo VISの利用)
DS18B20の温度データがラズパイを経由してAWS IoTへ送信され、DynamoDBに格納される所まで実現できたので、次にDynamoDBの温度データのグラフ化を行います。いろいろ調べたところ、IoT.tokyo VISというサービスが簡単でかつやりたいことに近かったためこちらを利用することにしました。
IoT.tokyo VIS
https://iot.kyoto/
Amazon DynamoDBに保存したストリームデータからリアルタイムでグラフを描画
インターネットに接続できるIoTデバイスとAWS環境を用意すれば、簡単設定でWebブラウザにリアルタイムグラフを表示できます。
DynamoDBに格納されたデータをグラフ化してくれるというサービス。
登録するだけで無料で利用できるのでちょうどよさそうです。マニュアルに沿ってIAM AccessKeyの取得、アカウントを作成し、DynamoDBのデータをグラフ化してみました。
・・・めちゃくちゃ簡単にグラフ化できてしまった。最高すぎる。
我が家の室温を10分ごとに取得しているだけなのでグラフは横一直線ですが、ちゃんとDynamoDBの値をグラフ化してくれています。
ここまでで屋外に設置した温度センサ(DS18B20)の値をいつでも自宅から確認できるようになりました。
ただしこのままではラズパイを常時ONで運転する必要がありバッテリーが長持ちしませんので、次の記事ではESP8266のdeep sleepを用いたラズパイの定期起動に取り組んでみます。