ESP32 Insert data SHT20 to Database Mysql Menggunakan PHP di Arduino IDE

Dalam proyek ini, kita akan membuat klien ESP32 untuk mengirim permintaan HTTP POST ke skrip PHP kemudian memasukkan data  pembacaan sensor  SHT20 ke dalam basis data MySQL.

esp32 to mysql

kita juga akan membuat webpage untuk menampilkan pembacaan sensor, waktu pembacaan waktu, dan informasi lain yang ada didalam database mysql.kemudian kita juga bisa memvisualisasikan data sensor menggunakan website dan bisa diakses dari mana saja

Sebagai contoh, kami akan menggunakan sensor SHT20 yang terhubung ke ESP32 board. dan untuk percobaan ini kita bisa memodifikasi code yang bisa diimplementasikan diboard esp32 lainya.

Bahan dan peralatan yang perlu disediakan
  1. ESP32 + Arduino IDE
  2. Hosting dan domain
  3. PHP
  4. Mysql
Blok diagaram sistem

blok diagram

Kami menggunakan share hosting untuk menyimpan data-data dari hasil pengukuran yang dilakukan oleh sensor SHT20.Share hosting yang kami gunakan adalah niagahoster.co.id

Cara membuat database mysql di cpanel share hosting

Setelah mendaftar akun hosting dan membuat nama domain, Anda dapat masuk ke cPanel atau dasboard cpanel. Setelah itu, ikuti langkah-langkah berikut untuk membuat database, username, password, dan tabel SQL.

Membuat database dan user:

  • Ketik “database” pada kolom pencarian diatas dan pilih “MySQL Database Wizard”.

create database

  • Masukkan nama database yang diinginkan. Dalam contoh ini, nama database adalah esp_data. Kemudian, tekan tombol “Next Step”.

database wizard

  • Ketik atau buat database username dan password. Simpan semua detail tersebut, karena Anda akan membutuhkannya nanti untuk membuat koneksi database dengan PHP.

username n password

Database dan username baru Anda telah berhasil dibuat. Sekarang, simpan semua detail tersebut karena Anda akan membutuhkannya nanti:

  • Nama basis data: esp_data
  • Nama pengguna: example_esp_board
  • Kata sandi: kata sandi Anda
Cara Membuat table SQL

Setelah membuat database dan username, kembali ke dasbor cPanel dan cari “phpMyAdmin”.

phpmyadmin

Di sidebar kiri, pilih nama database Anda, esp_data, dan buka tab “SQL”.

mysql_database

kemudian copy querry SQL dibawah ini

CREATE TABLE SensorData (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    sensor VARCHAR(30) NOT NULL,
    location VARCHAR(30) NOT NULL,
    value1 VARCHAR(10),
    value2 VARCHAR(10),
    value3 VARCHAR(10),
    reading_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

paste querry SQL diatas kedalam textbox (ditandai dengan persegi panjang merah) dan tekan tombol “Go” untuk membuat tabel Anda.

sql querry

Setelah itu, kita seharusnya melihat tabel baru yang dibuat dengan nama SensorData di database esp_data seperti yang ditunjukkan pada gambar di bawah ini:

table create

PHP Script HTTP POST – Insert Data to Mysql Database

Pada bagian ini, kita akan membuat skrip PHP yang bertugas menerima data sensor dari ESP32dan memasukkan data ke dalam database MySQL.

Jika anda menggunakan share hosting maka bisa langsung masuk ke cpanel kemudian cari menu file manager

file manager

Kemudian, pilih opsi public_html dan tekan tombol “+ File” untuk membuat file .php baru.

public html

Buat file baru di /public_html dengan nama dan ekstensi yang tepat: post-esp-data.php.

code post-esp-data.php

<?php

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-mysql-database-php/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

$servername = "localhost";

// REPLACE with your Database name
$dbname = "REPLACE_WITH_YOUR_DATABASE_NAME";
// REPLACE with Database user
$username = "REPLACE_WITH_YOUR_USERNAME";
// REPLACE with Database user password
$password = "REPLACE_WITH_YOUR_PASSWORD";

// Keep this API Key value to be compatible with the ESP32 code provided in the project page. 
// If you change this value, the ESP32 sketch needs to match
$api_key_value = "tPmAT5Ab3j7F9";

$api_key= $sensor = $location = $value1 = $value2 = $value3 = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $api_key = test_input($_POST["api_key"]);
    if($api_key == $api_key_value) {
        $sensor = test_input($_POST["sensor"]);
        $location = test_input($_POST["location"]);
        $value1 = test_input($_POST["value1"]);
        $value2 = test_input($_POST["value2"]);
        $value3 = test_input($_POST["value3"]);
        
        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        
        $sql = "INSERT INTO SensorData (sensor, location, value1, value2, value3)
        VALUES ('" . $sensor . "', '" . $location . "', '" . $value1 . "', '" . $value2 . "', '" . $value3 . "')";
        
        if ($conn->query($sql) === TRUE) {
            echo "New record created successfully";
        } 
        else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
    
        $conn->close();
    }
    else {
        echo "Wrong API Key provided.";
    }

}
else {
    echo "No data posted with HTTP POST.";
}

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
PHP Script display data konten database

Buat file PHP lainnya di direktori /public_html yang akan menampilkan seluruh isi basis data di halaman web. Beri nama file baru Anda: esp-data.php.

code esp-data.php

<!DOCTYPE html>
<html><body>
<?php
/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-mysql-database-php/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

$servername = "localhost";

// REPLACE with your Database name
$dbname = "REPLACE_WITH_YOUR_DATABASE_NAME";
// REPLACE with Database user
$username = "REPLACE_WITH_YOUR_USERNAME";
// REPLACE with Database user password
$password = "REPLACE_WITH_YOUR_PASSWORD";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT id, sensor, location, value1, value2, value3, reading_time FROM SensorData ORDER BY id DESC";

echo '<table cellspacing="5" cellpadding="5">
      <tr> 
        <td>ID</td> 
        <td>Sensor</td> 
        <td>Location</td> 
        <td>Value 1</td> 
        <td>Value 2</td>
        <td>Value 3</td> 
        <td>Timestamp</td> 
      </tr>';
 
if ($result = $conn->query($sql)) {
    while ($row = $result->fetch_assoc()) {
        $row_id = $row["id"];
        $row_sensor = $row["sensor"];
        $row_location = $row["location"];
        $row_value1 = $row["value1"];
        $row_value2 = $row["value2"]; 
        $row_value3 = $row["value3"]; 
        $row_reading_time = $row["reading_time"];
        // Uncomment to set timezone to - 1 hour (you can change 1 to any number)
        //$row_reading_time = date("Y-m-d H:i:s", strtotime("$row_reading_time - 1 hours"));
      
        // Uncomment to set timezone to + 4 hours (you can change 4 to any number)
        //$row_reading_time = date("Y-m-d H:i:s", strtotime("$row_reading_time + 4 hours"));
      
        echo '<tr> 
                <td>' . $row_id . '</td> 
                <td>' . $row_sensor . '</td> 
                <td>' . $row_location . '</td> 
                <td>' . $row_value1 . '</td> 
                <td>' . $row_value2 . '</td>
                <td>' . $row_value3 . '</td> 
                <td>' . $row_reading_time . '</td> 
              </tr>';
    }
    $result->free();
}

$conn->close();
?> 
</table>
</body>
</html>
Setting ESP32 to Sensor SHT20

Proyek ini dapat digunakan dengan  ESP32 board untuk memasukkan data suhu, kelembapan, tdan lainnya ke dalam database untuk detilnya silahkan klik esp32 to SHT20

 

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *