ラズパイでIoT 温度データを取得してMySQLに保存しよう。

前回の記事Raspberry Piで温度と湿度を取得する!HDC1000用のプログラムつき!でラズパイから温度データを取得できるようになりました。

今回は定期的にそのデータをMySQLに登録できるようにしたいと思います。

今回行いたいこと!

今回行いたいことを整理しておきます(ง°̀ロ°́)ง


今回行うことの整理💡
  • MySQLに温度データを登録できるようにする。
  • 定期的に温度取得用のプログラムを実行してMySLQLにデータを登録する。

どうやって温度データをMySQLに登録するの?

MySQLへのデータ登録するためのライブラリが公開されているのでそのライブラリを使ったMySQLへデータを登録できるクラスを作ろうと思います。

前回作製したHDC1000のクラスでは温度を取得できるようになりました。
こちらと組み合わせて、温度を取得し同時にMySQLにデータを登録するプログラムを作製したいと思います。

どうやって定期的にプログラムを実行するの?

作製するプログラムは実行ファイル形式なので定期的に呼んで上げる必要があります。
ラズパイはLinuxなのでLinuxでスケジュール実行に良く利用されるcrontabを使うと良さそうです。

Crontab – Quick Reference

こちらで実装しているサンプルも後ほどご紹介します。

温度データをMySQLに登録するプログラム

メイン関数

クラスHdc1000/MySqlInterfaceを作って使っています。
オプションはデバック用に色々作って見ました。ここでは “-add”がMySQLにデータを登録しています。

MySqlInterfaceのRegisterメソッドで実際登録しています。その際にはHdc1000クラスからGetTemperature/GetHumidityメソッドで取得した温度と湿度データを登録します。

MySQLのガスケットクラス

MySqlInterfaceのクラスはこちらです。

HDC1000のプログラム

HDC1000のプログラムはすでにご紹介していますが、ここにも一応貼っておきます。

Makefile

これでmakeを実行してください。

プログラムを定期的に実行しよう

プログラムができたのでスケジュール実行をしたいと思います。

こちらに詳しく書いてあるので簡単にまとめますね。

Crontab – Quick Reference

crontabってなに?

そもそもcronですが、unixやLinuxなどでcron daemonを使いバックグラウンドで一定間隔で自動的に実行されることを許されているタスクです
Crontab(CRON TABle)はcronタスクを持つファイルで、このファイルに記載することでcronタスクは実行されます。

cronタスク(job / schedule)には設定、日付、時間を設定できます。

Crontabのコマンド

crontab -e crontabファイルを編集します。
crontab -l cronタスクを確認できます。
crontab -r cronのファイルを削除します。

crontabの記載方法

crontab -e
でcrontabファイルを編集します。

crontabファイルの記載方法についてご紹介します。
crontabファイル5つの6つフィールドがあります。分、時間、月の日、月、曜日、最後に実行したいコマンドです。

* * * * * command to be executed
– – – – –
| | | | |
| | | | +—– day of week (0 – 6) (Sunday=0)
| | | +——- month (1 – 12)
| | +——— day of month (1 – 31)
| +———– hour (0 – 23)
+————- min (0 – 59)

*がワイルドカードとして使うことができます。

crontabのサンプル

hdc1000WithSqlというプログラムを作製して、/usr/local/binに置きました。
毎時間ごとに実行したいのでminのフィールドに00を設定しています。引数 “-add”で SQLに登録する設定です。

00 * * * * /usr/local/bin/hdc1000WithSql -add

crontabの設定例

おわりに

MySQLに温度データを定期的に実行できるようになりました。次回は登録したデータをブラウザ経由でインタラクティブに表示できるようにしたいと思います。

記事を読んでいただいてありがとうございます。この記事がいいなと思ったら下記のSNSボタンのクリックをお願いします。励みになります😁