ESP32からMariaDBにデータをとばす
センサからのデータもとれるようになり、Wi-Fiにつながり、NTPで時計の補正もできるようになりました。
IoTを進める中で必要なのはデータベースにひたすらデータを放り込み、その中で、異常のあるデータをいかに早く見つけ出すかが重要になります。このため、今回はデータベースにMariaDBを用い、ESP32からデータをPHPにPOSTしデータベースに取り込む一連の流れを紹介します。
まずはデータベースを作成します。MariaDBのインストールその他は省略しまして、既にesp_dataというデータベースを作成してあるところから始めます。phpMyAdminを使用してデータベース中にSensorDataというテーブルを作ります。次のSQL文をphpMyAdminのSQLクエリを実行し、テーブルを作ります。今回テストの都合でMACadd列は省略してあります。
1 2 3 4 5 6 7 8 |
CREATE TABLE SensorData ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, // MACadd VARCHAR(30) NOT NULL, value1 VARCHAR(10), value2 VARCHAR(10), value3 VARCHAR(10), reading_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) |
テーブルが出来上がったら、適当にデータを入れてみます。
1 |
INSERT INTO `SensorData`(`value1`, `value2`, `value3`) VALUES (12.3,23.4,35.3) |
実行を押すとSQL文が実行され、行が挿入されます。ここまで確認したら、次はMicroPython上でjsonを用いたPOST文を作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import ujson import urequests dict = { "data_value":"12.4", "temp_value":"23.4", "humi_value":"35.2" } response = urequests.post( 'http://**url**/postrcv.php', data=ujson.dumps(dict).encode("utf-8"), headers={'Content-Type': 'application/json'} ) print (response.text) |
MicroPythonではpythonで使用するjsonとrequestsの頭にuをつける形になります。この形でpostできます。
次にデータを受けるphp側を作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php $in = json_decode(stripslashes(file_get_contents('php://input')),true); $data_value = $in["data_value"]; $temp_value = $in["temp_value"]; $humi_value = $in["humi_value"]; $servername = "localhost"; $dbname = "esp_data"; $username = "username"; $password = "password"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql="INSERT INTO `SensorData`(`value1`, `value2`, `value3`) VALUES ($data_value,$temp_value,$humi_value)"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?> |
コマンドラインからampyを用いて上記MicroPythonのプログラムを走らせた結果が次です。
1 2 |
C:\Users\>ampy -p com4 run c:\micropython\posttest.py New record created successfully |