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.
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
- ESP32 + Arduino IDE
- Hosting dan domain
- PHP
- Mysql
Blok diagaram sistem
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”.
- Masukkan nama database yang diinginkan. Dalam contoh ini, nama database adalah esp_data. Kemudian, tekan tombol “Next Step”.
- Ketik atau buat database username dan password. Simpan semua detail tersebut, karena Anda akan membutuhkannya nanti untuk membuat koneksi database dengan PHP.
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”.
Di sidebar kiri, pilih nama database Anda, esp_data, dan buka tab “SQL”.
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.
Setelah itu, kita seharusnya melihat tabel baru yang dibuat dengan nama SensorData di database esp_data seperti yang ditunjukkan pada gambar di bawah ini:
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
Kemudian, pilih opsi public_html dan tekan tombol “+ File” untuk membuat file .php baru.
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;
}