株式会社インデペンデンスシステムズ横浜システム開発エンジニアの西田五郎が運営しております。その他新規開発案件のご依頼をお待ちしております。温度・湿度・気圧データ編の2回目です。Piに温度・湿度・気圧データが測定出来るセンサモジュールのBME280を接続して値を取得しました。PiでIoT(温度・湿度・気圧データ編)の記事一覧です。今回は以下のデータ保存の流れで、右側のWebサーバ(データベース)の部分を構築します。構築したサーバにセンサーデータを送信します。送信処理は以下のデータ保存の流れで左側です。ここでの私のサーバ環境は、レンタルサーバ上で、ウェブサーバ:Apache、データベース:MYSQL、開発言語:PHPです。今時であれば他にもいろいろと選択肢があるとは思いますがこれでやってみました。Webサーバ(データベース)今回の作業手順は以下です。詳細の環境構築方法や、詳細のツールの使用法等は必ずしも書きませんので、実際に作業する場合はマニュアルサイト等を探してみて下さい。各プログラムは単なるテストプログラムです。動作保証は一切しておりません。phpMyAdminです。以下のCreate文のテーブルを作成しました。;以下のように出来ました。2.PHPプログラムの作成(Webサーバ上)以下のプログラムを作成しました。break;}?>このプログラムをインターネット上でもローカル環境でもいいですが、Webサーバ上にアクセス出来るように配置します。処理としては、HTTPのGETとPOSTの処理を実装しています。GETの場合は全レコードをJSON形式で返しています。POSTの場合は念のためidという項目が設定されていなかったら、追加レコードとしてINSERT文を実行します。PiからPython単体テスト送信ここでの作業、処理は以下の太字の部分です。PiのPythonのプログラムからまずは単体テスト的にPOSTします。以下のPythonプログラムを使用します。main()以下のように実行します。ここではweb.pyというファイル名で作成しています。この場合は、main()が呼ばれるので、温度:21.8、湿度:39.1、気圧:1020というテストデータをjsonデータでPOSTしています。作成したjsonデータとレスポンスを画面に表示しています。データベース側を、phpMyAdminで確認します。以下のように確認出来ました。PiからセンサーデータをPythonで送信いよいよ実際のセンサーデータを送信します。前回のようにしっかりとbme280センサーモジュールを接続します。前回のフォルダに上記のweb.pyを追加して、bme280Main.pyをbme280MyMain.pyに名称変更して、以下のファイル構成にします。(※すいません別にメインのファイル名は任意でいいです。好きなファイル名にして下さい。)bme280MyMain.pybme280_custom.pyweb.py以下のようになります。ここでbme280MyMain.py(メイン)を以下のように編集します。press#webへPOSTuploadSensorValues(temp,hum,press);以下のようにメインを実行します。endのレスポンスが確認出来ると思います。実際に保存したデータをブラウザでも確認します。ブラウザで以下のようにPHPのURLを指定します。http://youdomainOrIPAdress/subsub/sensvalues.php確かに、値が確認出来ますが、JSON形式のテキストで表示されただけです。この表示の続き等は次回に書きます。6.cronでの自動実行センサーデータを送信するプログラムをcronを使って自動実行します。以下で自動実行を設定します。-e編集状態で以下を追記します。これでセンサー送信プログラムが1分おきに実行されます。/home/pi/bme280/bme280MyMain.py前項の方法でブラウザで結果を確認します。ここではデータが増えているなという程度に分かればいいです。次回にデータの一覧表示、グラフ表示を作成します。今回のWebサーバ側構築とデータ送信では以下のような技術要素が出てきました。WebプラットフォームLAMPと呼ばれている環境を使いました。Linux(OS)、Apache(Webサーバ)、MYSQL(RDBMS)、PHP(プログラミング言語)の組み合わせです。最近は、MYSQLの後継としてMariaDBが出てきているようです。この環境をとりあずローカル環境で構築するのであれば、XAMPPも選択肢の一つだと思います。HTTP通信(TCP/IP)まずは、TCP/IPとはインターネットの通信プロトコル(通信規約)のことです。以下の記事で少し書きましたが、大きな特徴として他の類似の通信プロトコル(osi参照モデルとよく比較されます)と同様に「階層構造」になっていることです。Ethernetシールド(旧製品)を使ってみたTCP/IPの階層構造は以下です。Ethernet、Wifi等HTTPはWebブラウザでも利用されていますが、アプリケーションプロトコルの一つです。PiからPythonプログラムでこのHTTPのPOSTメソッドを使ってセンサーデータを送信しました。今回では使用していませんが、IoTでよく利用されるプロトコルにMQTTがあります。MQTTの特徴としてはシンプルで軽量なことです。どこかで取り上げたいと思っています。温度センサADT7410(その1)i2C通信とは温度センサのADT7410を使ってみます。ADT7410はアナログ・デバイセズ社の製品ですが、実際には以下の秋月さんのモジュールを使います。NTTコミュニケーションズ株式会社提供のリアルタイムコミュニケーションのためのプラットフォームであるSkyWayを使ってみます。Piの遠隔操作をしてみようという内容です。PiでAC100VのON/OFF制御を試してみました。今回そのために以下のソリッド・ステート・リレーキットを利用しました。...レーザーカッターでセンサーのケースを作ってみた前回のセンサー(温湿度センサーBME280)のケースをレーザーカッターで作ってみました。株式会社インデペンデンスシステムズ横浜システム開発エンジニアの西田五郎が運営しております。その他新規開発案件のご依頼をお待ちしております。