ESP8266からPHPにPOSTしてmySQLを更新する
サイトが引っ越しました。→https://scombu.com
約1秒後に自動的にリダイレクトします。切り替わらない場合はリンクをクリックしてください。
概要
1、PHPでPOSTデータを受け取れるようにコーディングする。例えば温度データを受け取るとか
その中で該当テーブルにSQLを投げてレコードを追加する。
2、ESP8266から上記phpにポストする。
その他 データベースのテーブルカラムは以下の感じでIDをオートインクリメント、時間はレコード作成時間
にしておくと楽。(何も考えてない・・・w)
テーブルはこんな感じで!↓
/* #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> /* Set these to your desired credentials. */ const char *ssid = "SSID"; //ENTER YOUR WIFI SETTINGS const char *password = "パスワード"; //Web/Server address to read/write from //const char *host = "xxxxxxxx.さくら.net"; //https://circuits4you.com website or IP address of server //======================================================================= // Power on setup //======================================================================= void setup() { delay(1000); Serial.begin(115200); WiFi.mode(WIFI_OFF); //Prevents reconnection issue (taking too long to connect) delay(1000); WiFi.mode(WIFI_STA); //This line hides the viewing of ESP as wifi hotspot WiFi.begin(ssid, password); //Connect to your WiFi router Serial.println(""); Serial.print("Connecting"); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } //If connection successful show IP address in serial monitor Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); //IP address assigned to your ESP } //======================================================================= // Main Program Loop //======================================================================= void loop() { HTTPClient http; //Declare object of class HTTPClient String postData,watasuData; //int adcvalue=analogRead(A0); //Read Analog value of LDR //ADCData = String(adcvalue); //String to interger conversion //station = "A"; //Post Data int watasuValue = 54; watasuData = String(watasuValue); //postData = "status=" + ADCData + "&station=" + station ; postData = "ondoDataPara=" + watasuData ; http.begin("http://xxxxxx.さくら.ne.jp/ほにゃらら.php?"); //Specify request destination http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //Specify content-type header int httpCode = http.POST(postData); //Send the request String payload = http.getString(); //Get the response payload Serial.println("*****"); Serial.println(httpCode); //Print HTTP return code Serial.println("*****"); Serial.println(payload); //Print request response payload Serial.println("*****"); http.end(); //Close connection delay(10000); //Post Data at every 5 seconds } //=======================================================================
<?php $uketoriOndo = $_POST['ondoDataPara']; // データベースに接続するために必要なデータソースを変数に格納 // mysql:host=ホスト名;dbname=データベース名;charset=文字エンコード $dsn = 'mysql:host=mysqlxxxx.db.xxxxx.ne.jp;dbname=データベース名;charset=utf8'; // データベースのユーザー名 $user = 'データベースアクセスユーザー名'; // データベースのパスワード $password = 'アクセスパスワード'; // tryにPDOの処理を記述 try { // PDOインスタンスを生成 $dbh = new PDO($dsn, $user, $password); // エラー(例外)が発生した時の処理を記述 } catch (PDOException $e) { // エラーメッセージを表示させる echo 'データベースにアクセスできません!' . $e->getMessage(); // 強制終了 exit; } // SELECT文を変数に格納 $sql = "INSERT INTO テーブル名 (temperatureField) VALUES ($uketoriOndo)"; // SQLステートメントを実行し、結果を変数に格納 $stmt = $dbh->query($sql); ?>