【自作IoT】自作のECメーターをIoT化で見える化します。自宅で野菜を水耕栽培。メニュートップページ水耕栽培初心者におすすめ!自作ノウハウご紹介!【全て自動制御】ポンプとLEDを使う自作の水耕栽培装置を細かく紹介!【お手軽自作】ちょっと自作したい人におすすめ。!まめちしきサイトマップEnglish自分でつくる。自宅で野菜を水耕栽培。TOP自作のノウハウ【自作IoT】自作のECメーターをIoT化で見える化します。【自作IoT】自作のECメーターをIoT化で見える化します。自作のノウハウツイート【完全自作】ECメーターを自作しよう。回路とプログラムを詳しく解説。ECメーターの回路は一応完成しました。回路が少し複雑なので基板化しているところです。時間があるのでその間になんでもできるラズパイを使ってリモートでECメーターの値を取れるようにしたいと思います。いう内容で手元にある温度計をブラウザから見れるようにしたのですが同じことをしたいと思います。今回実装する方法の特徴ブラウザでECと温度のデータをグラフを見れるようにします。インタラクティブにできるJavaScriptでグラフを描画します。グラフの元データはPHP経由でMySQLに登録されているデータを使います。JSでやっちゃうと元データのクエリ方法が見らてしまいます。ExeファイルがCrontabのスケジュールで動いてMySQLにECと温度を登録します。C++からMySQLを使う方法もご紹介しますよー!最終的にはこんなものができます。EC値と温度が表示されています。⚠️EC値の補正はしていませんまずはMySQLにデータが登録できないとしょうがないので、その方法を簡単にご紹介します。MySQLでどうやってデータを取得できるかをご紹介しますね(〃’ω’)C++のコードにMySQLへのアクセスを追加します。【完全自作】ECメーターを自作しよう。回路とプログラムを詳しく解説。EC値は取得できるようになりました。取得したデータは保存しておかないともったいないですね。いうことでMySQLのデータベースにデータを保存して活用できるようにします。MySQLをC++で使うための事前準備。MySQLをラズパイにインストールしないことには何もできません。いうことでC++でMySQLを使うために必要なライブラリをインストールしましょう。C++まずはapt-getを使ってクライアントマネージャーをインストールします。次に開発用のライブラリをインストールします。libmysqlclient-dev12345まずはapt-getを使ってクライアントマネージャーをインストールします。mysql-client次に開発用のライブラリをインストールします。libmysqlclient-dev次にC++のコードにMySQLへのアクセス部分を追加します。C++でMySQLにデータを登録できるクラスを追加ライブラリがインストールできたので、あとは実際に呼び出してあげましょう。新しいクラスMySqlInterfaceがSQLへのアクセスを担当します。コードの変更点メイン関数に新しくMySqlInterfaceクラスのmySqlを作りますMySQLのユーザーネーム、パスワード、使用するデータベース、使用するテーブルの名前で初期化します。ECの値や温度をRegisterメソッドで登録します。ConnectメソッドでMySQLへのソケットができたらデータを登録します。そんなMySqlInterfaceを使って拡張したメイン関数がこちら。たいしたことはしていないです。0;}新しく作ったMySqlInterfaceクラスを簡単に解説します。メイン関数からの呼び出しは簡単でしたね。簡単にMySqlInterfaceのメソッドを説明します。mysql/mysql.hというライブラリを使います。MySqlInterfaceのクラスConnectメソッドのmysql_real_connect関数が実際にMySQLとの接続を確率します。Registerメソッドのmysql_queryで第二引数のメッセージが送られます。VALUES(%s)の部分です。ライブラリのフォーマットにあうように文字列を整形しているだけになります。0;}MySqlInterface::~MySqlInterface(){}これでEC値とその時の温度が取得できるようになりました。次はこのプログラムが定期的に実行されるようにします。crontabでプログラムを定期的に実行ECの値の取得のためにプログラムをずっと稼働しているのはあまりよくなさそうです。いうことでプログラム自体はデータをワンショットでとる仕様にして、定期的に実行する方法をとりたいと思います。TABle)はcronタスクを持つファイルで、このファイルに記載することでcronタスクは実行されます。daemonを使いバックグラウンドで一定間隔で自動的に実行されることを許されているタスクです。crontabを使ったスケジュールを設定しましょう。それではcrontabを使ってスケジュールを設定しましょう。schedule)には設定、日付、時間を設定できます。こちらがよく使うコマンドです。これらを使いながら設定しましょう。-ecrontabファイルを編集します。-lcronタスクを確認できます。-rcronのファイルを削除します。crontabファイルを編集します。crontabファイル5つの6つフィールドがあります。実行したいコマンドです。59)*をワイルドカードとして使うことができます。最小の単位はminなので1分ごとのスケジュール実行ができます。サンプルやフォーマットの説明はこちらにありました。今回は毎時間ごとに実行したいのでminのフィールドに00します。MeasureECというプログラムを作製して、/usr/local/binに置いた場合の記載方法はこんな感じです。/usr/local/bin/MeasureECここではcrontabでの設定方法を簡単にご紹介しました。スケジュール管理はこのプログラムにお任せでいいのかなと思います。次は登録されたMySQLのデータをclient(User)側から取得してみましょう。applicationを動かすためにはウェブサーバーソフトを入れる必要があります。世界でもっとも使われているウェブサーバーソフトのApacheのインストールとPHPの設定をまとめます。インストール作業インストール作業がたくさん続きます。Apache2とPHPをインストールします。C++まずはデータベースを最新のものにしましょう。それではApache2をインストールします。次にPHPをインストールします。PHPからMySqlにアクセスするために追加のモジュールをインストールします。今ラズパイにインストールしているのはPHP7なのでphp7.0-mysqlをインストールします。設定を反映させるためにapacheを再起動しましょう。Apacheをシステム起動時に起動するようにしておきましょう。defaults12345678910111213141516171819まずはデータベースを最新のものにしましょう。updateそれではApache2をインストールします。apache2次にPHPをインストールします。php7.0PHPからMySqlにアクセスするために追加のモジュールをインストールします。今ラズパイにインストールしているのはPHP7なのでphp7.0-mysqlをインストールします。php7.0-mysql設定を反映させるためにapacheを再起動しましょう。restartApacheをシステム起動時に起動するようにしておきましょう。defaultsApacheとPHPがちゃんとインストールされたかを確認します。Apacheがうまくインストールされたかどうかの確認は簡単です。へご自身のスマホやPCからアクセスしてみてください。Your_RaspberryPi_IP-AddressはラズパイのIPアドレスです。うまくアクセスできれば下記画面が表示されます。PHPがインストールされたかも確認しましょう。PHPが正しくインストールされたかはコマンドラインから確認できます。php7.0-mysqlがインストールされたかも確認しましょう。とアクセスしてみてください。info</title></head><body><?phpphpinfo();?></body></html>表示されたPDOの項目をご覧ください。valueと表示されます。これで必要なインストールや設定は終わりました。applicationを書いていきます。ブラウザからEC値と温度を取得します。applicationの実装のみです。サンプルのプログラムec-measure-web_sampleはこちらです。こちらをラズパイの/var/www/html/の配下においてください。とアクセスすればデータが見えるようになります。MySQLのユーザー、パスワード、テーブル等はDbManager.phpに設定してください。ここでは内容を簡単に説明します。PHPからMySQLにアクセスしてデータを取得しようPHPからMySQLのデータを取得しますDAY/WEEK/MONTHオプションがあります。1日の変化が見たかったり、月の変化が見たかったりしますよね。呼び出し元のコードからPOSTデータを取得して把握します。DbManager.phpのGetDbメソッドでPHPからMySQLへのソケットを開けます。DAY/WEEK/MONTHでqueryのoptionが変わります。WEEK/MONTHでは平均のデータを使うようにします。formatで返します。chartsを使うことを想定しています。ChartsはJSONフォーマットのデータに対応しているのでこの形にしました。$ret;}?>JavaScriptからPHPを呼んでグラフを描画しようここまでくればあとはデータを描画するだけです。Chartsを使ってインタラクティブなグラフを描画しましょう。ChartsのLineChartを使っています。データはjQueryのajax()関数からPHPを呼んでJSONフォーマットのリスポンスを受け取ります。PHPを呼ぶときにはDAY/WEEK/MONTHをPOSTデータとして渡します。JavaScript内でjQueryのajax()関数を使いURLにアクセスしてそのリスポンスを受け取っています。URLに先ほどのPHPのコードを指定してPHP内で動かしたMySQLのクエリ結果をリスポンスの形で受け取ることができます。ちなみにレスポンスはJSONフォーマットに整形しているのでその値をデータとして使うだけです。false}).responseText;全体のプログラムです。EC値と温度があるので、Y軸を2軸にしています。id="chart_div"></div></body></html>まとめ自作のECメーターをWebでインタラクティブに見れるようにしました。やることは多いですが、一度作っちゃえば応用が効くのかなという印象です。記事を読んでいただいてありがとうございます。この記事がいいなと思ったら下記のSNSボタンのクリックをお願いします。ECメーターを自作しよう。回路とプログラムを詳しく解説。“【自作IoT】自作のECメーターをIoT化で見える化します。(EC)、水温、湿度、LED、ポンプの5種類を同時に制御できればいいと思ったのですが知恵をお借りできたらと思いコメントしました。AMsetuさんこんにちは。ご質問内容ですと同時に3種のパラメータ(EC値、水温、湿度)を取得し、2種のパラメータ(LED、ポンプ)を制御するものと理解しました。今私も画策している最中ですが可能です。今ご紹介できることはすべて電子工作の知識が必要です。AMありがとうございますなんとなくですがまずはラズベリーパイ購入してから順番ということっぽいですね。AMそうですね、ラズパイがあるといろいろできます。【自作IoT】自作のECメーターをIoT化で見える化します。【完全自作】ECメーターを自作しよう。回路とプログラムを詳しく解説。ADコンバーターMCP3004をラズパイで動かそう。WiringPiを使います。ADCを2chで動かして自作のEC計を作ってみよう。電気分解対策!自作のEC計の回路変更。PV数ランキング【お手軽自作】ちょっと自作したい人におすすめ。LED照明の自作方法。(23,793pv)マイナス電源の簡単な作り方は?自作回路を作って検証してみました。Piで制御できるACコンセント。(16,924pv)簡単にできる自動給水の方法はある?3つの水耕栽培器への給水方法。(13,617pv)JavaScriptからPHP経由でMySQLのデータを表示。formatを使います。(28)ブログ村に参加しています。ブログランキングに参加しています。自宅で野菜を水耕栽培。