Trong dự án này, bạn sẽ xây dựng một client ESP32 hoặc ESP8266 thực hiện một yêu cầu POST HTTP đến một script PHP để chèn dữ liệu (đọc dữ liệu từ cảm biến) vào cơ sở dữ liệu MySQL.
- Cây lưỡi hổ hợp mệnh gì? Kỵ mệnh nào và những lưu ý cần biết
- Thiết kế đồ chơi và đồ dùng dạy học – Kỹ năng cần có của giáo viên mầm non
- Biến định tính, biến định lượng trong xử lý dữ liệu là gì?
- Cách dùng try to và trying trong tiếng Anh chuẩn không cần chỉnh!
- Thiết kế phần mềm theo yêu cầu – Lập trình / viết phần mềm riêng chuyên nghiệp
Cập nhật vào ngày 26 tháng 3 năm 2023
Bạn đang xem: ESP32/ESP8266 Insert Data into MySQL Database using PHP and Arduino IDE
Bạn cũng sẽ có một trang web hiển thị các đọc dữ liệu từ cơ sở dữ liệu, thời gian đọc và thông tin khác. Bạn có thể xem dữ liệu của mình từ bất kỳ nơi nào trên thế giới bằng cách truy cập vào máy chủ của bạn.
Ví dụ, chúng ta sẽ sử dụng cảm biến BME280 được kết nối với bo mạch ESP32 hoặc ESP8266. Bạn có thể chỉnh sửa mã để gửi dữ liệu từ cảm biến khác hoặc sử dụng nhiều bo mạch.
Để tạo và xây dựng dự án này, bạn sẽ sử dụng các công nghệ sau:
Contents
1. Đăng ký tên miền và máy chủ của bạn
Mục tiêu của dự án này là bạn có tên miền riêng và tài khoản máy chủ cho phép bạn lưu trữ các đọc dữ liệu từ ESP32 hoặc ESP8266. Bạn có thể xem các đọc dữ liệu từ bất kỳ nơi nào trên thế giới bằng cách truy cập vào tên miền máy chủ của riêng bạn. Đây là một tổng quan cấp cao:
Chúng tôi khuyên bạn nên sử dụng một trong hai dịch vụ lưu trữ sau đây có thể đáp ứng tất cả các yêu cầu dự án:
- Bluehost (dễ sử dụng với giao diện cPanel): nhận miễn phí tên miền khi bạn đăng ký gói 3 năm. Chúng tôi đề nghị lựa chọn tùy chọn các trang web vô hạn;
- Digital Ocean: máy chủ Linux bạn quản lý qua dòng lệnh. Chúng tôi chỉ đề nghị tùy chọn này cho người dùng nâng cao.
Hai dịch vụ này là những dịch vụ chúng tôi sử dụng và đề nghị cá nhân, nhưng bạn có thể sử dụng bất kỳ dịch vụ lưu trữ nào khác. Bất kỳ dịch vụ lưu trữ nào cung cấp PHP và MySQL đều hoạt động với hướng dẫn này. Nếu bạn chưa có tài khoản lưu trữ, chúng tôi đề nghị đăng ký Bluehost.
Đăng ký Tên miền và máy chủ với Bluehost »
Khi mua một tài khoản lưu trữ, bạn cũng phải mua tên miền. Điều này làm cho dự án này thú vị: bạn sẽ có thể truy cập vào tên miền của riêng bạn (https://example-domain.com) và xem các đọc dữ liệu từ ESP32 hoặc ESP8266.
Nếu bạn thích các dự án của chúng tôi, bạn có thể xem xét đăng ký một trong các dịch vụ lưu trữ được đề nghị, vì bạn sẽ giúp chúng tôi hoạt động.
Lưu ý: bạn cũng có thể chạy một máy chủ LAMP (Linux, Apache, MySQL, PHP) trên Raspberry Pi để truy cập dữ liệu trong mạng nội bộ của bạn. Tuy nhiên, mục đích của bài hướng dẫn này là xuất bản các đọc dữ liệu trên tên miền riêng của bạn để bạn có thể truy cập dễ dàng từ bất kỳ đâu trên thế giới. Điều này giúp bạn dễ dàng truy cập vào các đọc dữ liệu từ ESP mà không phụ thuộc vào nền tảng IoT của bên thứ ba.
2. Chuẩn bị Cơ sở dữ liệu MySQL của bạn
Sau khi đăng ký một tài khoản lưu trữ và thiết lập tên miền, bạn có thể đăng nhập vào cPanel hoặc bảng điều khiển tương tự. Sau đó, làm theo các bước sau để tạo cơ sở dữ liệu, tên người dùng, mật khẩu và bảng SQL của bạn.
2.1 Tạo cơ sở dữ liệu và người dùng
- Gõ “database” vào thanh tìm kiếm và chọn “MySQL Database Wizard”.
- Nhập tên cơ sở dữ liệu mong muốn. Trong trường hợp của tôi, tên cơ sở dữ liệu là esp_data. Sau đó, nhấp vào nút “Bước tiếp theo”.
Lưu ý: sau này, bạn sẽ phải sử dụng tên cơ sở dữ liệu với tiền tố mà máy chủ của bạn cung cấp cho bạn (tiền tố cơ sở dữ liệu của tôi trong ảnh chụp màn hình trên đã bị mờ đi). Từ nay trở đi, tôi sẽ đề cập đến nó là example_esp_data.
- Nhập tên người dùng cơ sở dữ liệu và đặt mật khẩu. Bạn phải lưu tất cả các chi tiết đó, vì bạn sẽ cần chúng sau này để thiết lập kết nối cơ sở dữ liệu với mã PHP của bạn.
Đó là tất cả! Cơ sở dữ liệu và người dùng mới của bạn đã được tạo thành công. Bây giờ, hãy lưu tất cả các chi tiết của bạn vì bạn sẽ cần chúng sau này:
- Tên cơ sở dữ liệu: example_esp_data
- Tên người dùng: example_esp_board
- Mật khẩu: mật khẩu của bạn
2.2 Tạo bảng SQL
Sau khi tạo cơ sở dữ liệu và người dùng của bạn, quay trở lại bảng điều khiển cPanel và tìm kiếm “phpMyAdmin”.
Trong thanh bên trái, chọn tên cơ sở dữ liệu của bạn (example_esp_data) và mở tab “SQL”.
Quay trở lại thanh bên trái và chọn tên cơ sở dữ liệu của bạn (example_esp_data) và mở tab “SQL”.
Sao chép truy vấn SQL trong đoạn mã sau:
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 )
Dán nó vào trường truy vấn SQL (được làm nổi bật bằng hình chữ nhật màu đỏ) và nhấp vào nút “Go” để tạo bảng của bạn:
Sau đó, bạn sẽ thấy bảng mới tạo của bạn được gọi là SensorData trong cơ sở dữ liệu example_esp_data như được hiển thị trong hình dưới đây:
3. Scripts PHP – Chèn Dữ liệu vào Cơ sở dữ liệu MySQL
Xem thêm : Lý thuyết Công nghệ 11 Bài 2 (Kết nối tri thức): Vật nuôi và phương thức chăn nuôi
Trong phần này, chúng ta sẽ tạo một script PHP để nhận các yêu cầu gửi từ ESP32 hoặc ESP8266 và chèn dữ liệu vào cơ sở dữ liệu MySQL.
Nếu bạn đang sử dụng một nhà cung cấp lưu trữ có cPanel, bạn có thể tìm kiếm “File Manager”:
Sau đó, chọn tùy chọn public_html và nhấn nút “+ File” để tạo một tệp .php mới.
Tạo một tệp mới trong /public_html với tên và phần mở rộng sau: post-esp-data.php
Chỉnh sửa tệp vừa được tạo (post-esp-data.php) và sao chép đoạn mã sau:
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 . "
" . $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;
}
Trước khi lưu tệp, bạn cần sửa đổi biến $dbname, $username và $password với các chi tiết duy nhất của bạn:
// Your Database name
$dbname = "example_esp_data";
// Your Database user
$username = "example_esp_board";
// Your Database user password
$password = "YOUR_USER_PASSWORD";
Sau khi thêm tên cơ sở dữ liệu, tên người dùng và mật khẩu, hãy lưu lại tệp và tiếp tục với hướng dẫn này. Nếu bạn cố gắng truy cập vào tên miền của mình trong đường dẫn URL tiếp theo, bạn sẽ thấy sau:
https://example-domain.com/post-esp-data.php
4. Scripts PHP – Hiển thị Nội dung Cơ sở dữ liệu
Tạo một tệp PHP khác trong thư mục /public_html sẽ hiển thị toàn bộ nội dung cơ sở dữ liệu trên một trang web. Đặt tên tệp mới của bạn là esp-data.php
Chỉnh sửa tệp mới được tạo (esp-data.php) và sao chép mã sau:
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 '
ID
Sensor
Location
Value 1
Value 2
Value 3
Timestamp
';
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 '
' . $row_id . '
' . $row_sensor . '
' . $row_location . '
' . $row_value1 . '
' . $row_value2 . '
' . $row_value3 . '
' . $row_reading_time . '
';
}
$result->free();
}
$conn->close();
?>
Sau khi thêm $dbname, $username và $password, hãy lưu lại tệp và tiếp tục với dự án này.
// Your Database name
$dbname = "example_esp_data";
// Your Database user
$username = "example_esp_board";
// Your Database user password
$password = "YOUR_USER_PASSWORD";
Nếu bạn cố gắng truy cập vào tên miền của mình trong đường dẫn URL sau, bạn sẽ thấy sau:
https://example-domain.com/esp-data.php
Đó là tất cả! Nếu bạn thấy bảng trống được in ra trong trình duyệt của bạn, nghĩa là mọi thứ đã sẵn sàng. Trong phần tiếp theo, bạn sẽ tìm hiểu cách chèn dữ liệu từ ESP32 hoặc ESP8266 của bạn vào cơ sở dữ liệu.
5. Thiết lập ESP32 hoặc ESP8266
Dự án này tương thích với cả bo mạch ESP32 và ESP8266. Bạn chỉ cần lắp ráp một mạch đơn giản và tải lên mã cung cấp để chèn nhiệt độ, độ ẩm, áp suất và nhiều hơn nữa vào cơ sở dữ liệu của bạn mỗi 30 giây. Mã sẽ khác nhau một chút cho mỗi bo mạch.
5.1 Các linh kiện cần thiết
Đối với ví dụ này, chúng ta sẽ lấy đọc dữ liệu từ cảm biến BME280. Đây là danh sách các linh kiện bạn cần để xây dựng mạch cho dự án này:
- Bo mạch ESP32 (đọc danh sách các bo mạch phát triển ESP32 tốt nhất)
- Bo mạch ESP8266 (đọc danh sách các bo mạch phát triển ESP8266 tốt nhất)
- Cảm biến BME280
- Dây nối
- Breadboard
Bạn có thể sử dụng các liên kết trước đó hoặc truy cập MakerAdvisor.com/tools để tìm tất cả các phần cho dự án của bạn với giá tốt nhất!
5.2 Sơ đồ mạch
Mô-đun cảm biến BME280 chúng ta sử dụng giao tiếp qua giao thức truyền thông I2C, vì vậy bạn cần kết nối nó với các chân I2C của ESP32 hoặc ESP8266.
5.2 Sơ đồ mạch
Mô-đun cảm biến BME280 chúng ta sử dụng giao tiếp qua giao thức truyền thông I2C, vì vậy bạn cần kết nối nó với các chân I2C của ESP32 hoặc ESP8266.
5.2.1 Kết nối BME280 với ESP32
Các chân I2C của ESP32 là:
- GPIO 22: SCL (SCK)
- GPIO 21: SDA (SDI)
Vì vậy, lắp ráp mạch của bạn như được hiển thị trong sơ đồ mạch dưới đây (đọc Hướng dẫn ESP32 với BME280 đầy đủ).
5.2.2 Kết nối BME280 với ESP8266
Các chân I2C của ESP8266 là:
- GPIO 5 (D1): SCL (SCK)
- GPIO 4 (D2): SDA (SDI)
Xem thêm : Search code, repositories, users, issues, pull requests…
Lắp ráp mạch của bạn như trên sơ đồ mạch dưới đây nếu bạn đang sử dụng bo mạch ESP8266 (đọc Hướng dẫn ESP8266 với BME280 đầy đủ).
5.3 Cài đặt Thư viện
Chúng ta sẽ lập trình ESP32/ESP8266 bằng Arduino IDE, vì vậy bạn phải cài đặt bổ sung ESP32/ESP8266 trong Arduino IDE của bạn. Làm theo một trong các hướng dẫn tiếp theo tùy thuộc vào bo mạch bạn đang sử dụng:
- Cài đặt ESP32 trong Arduino IDE – bạn cũng cần cài đặt Thư viện BME280 và thư viện Adafruit_Sensor
- Cài đặt ESP8266 trong Arduino IDE – bạn cũng cần cài đặt Thư viện BME280 và thư viện Adafruit_Sensor
5.4 Mã ESP32
Theo dõi phần này nếu bạn đang sử dụng ESP32. Đối với ESP8266, hãy kiểm tra phần trên.
Sau khi cài đặt các bổ sung và thư viện cần thiết, sao chép mã sau vào Arduino IDE của bạn, nhưng đừng tải lên nó ngay bây giờ. Bạn cần thực hiện một số thay đổi để nó hoạt động cho bạn.
/* 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.
*/
#include
#include
#include
#include
#include
#include
// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
// REPLACE with your Domain name and URL path or IP address with path
const char* serverName = "https://example.com/post-esp-data.php";
// Keep this API Key value to be compatible with the PHP code provided in the project page.
// If you change the apiKeyValue value, the PHP file /post-esp-data.php also needs to have the same key
String apiKeyValue = "tPmAT5Ab3j7F9";
String sensorName = "BME280";
String sensorLocation = "Office";
/*#include
#define BME_SCK 18
#define BME_MISO 19
#define BME_MOSI 23
#define BME_CS 5*/
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
// (you can also pass in a Wire library object like &Wire2)
bool status = bme.begin(0x76);
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring or change I2C address!");
while (1);
}
}
void loop() {
//Check WiFi connection status
if(WiFi.status()== WL_CONNECTED){
WiFiClientSecure *client = new WiFiClientSecure;
client->setInsecure();
//create an HTTPClient instance
HTTPClient https;
// Your Domain name with URL path or IP address with path
https.begin(*client, serverName);
// Specify content-type header
https.addHeader("Content-Type", "application/x-www-form-urlencoded");
// Prepare your HTTP POST request data
String httpRequestData = "api_key=" + apiKeyValue + "&sensor=" + sensorName
+ "&location=" + sensorLocation + "&value1=" + String(bme.readTemperature())
+ "&value2=" + String(bme.readHumidity()) + "&value3=" + String(bme.readPressure()/100.0F) + "";
Serial.print("httpRequestData: ");
Serial.println(httpRequestData);
// You can comment the httpRequestData variable above
// then, use the httpRequestData variable below (for testing purposes without the BME280 sensor)
//String httpRequestData = "api_key=tPmAT5Ab3j7F9&sensor=BME280&location=Office&value1=24.75&value2=49.54&value3=1005.14";
// Send HTTP POST request
int httpResponseCode = https.POST(httpRequestData);
// If you need an HTTP request with a content type: text/plain
//https.addHeader("Content-Type", "text/plain");
//int httpResponseCode = https.POST("Hello, World!");
// If you need an HTTP request with a content type: application/json, use the following:
//http.addHeader("Content-Type", "application/json");
//int httpResponseCode = https.POST("{"value1":"19","value2":"67","value3":"78"}");
if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
// Free resources
https.end();
}
else {
Serial.println("WiFi Disconnected");
}
//Send an HTTP POST request every 30 seconds
delay(30000);
}
Sau khi sửa mã bằng các thông tin mạng của riêng bạn, tải mã lên board của bạn.
Lưu ý: Hầu hết các máy chủ yêu cầu bạn thực hiện các yêu cầu HTTPS. Mã trên thực hiện các yêu cầu HTTPS để tuân thủ yêu cầu của hầu hết các máy chủ đám mây hiện nay.
Máy chủ của bạn không hỗ trợ HTTPS? Hãy sử dụng mã này.
Hãy tìm hiểu thêm về các yêu cầu HTTPS với ESP32: Yêu cầu HTTPS ESP32 (Arduino IDE).
5.4 Mã ESP8266
Theo dõi phần này nếu bạn đang sử dụng ESP8266. Đối với ESP32, hãy kiểm tra phần trên.
Sau khi cài đặt các bổ sung và thư viện cần thiết, sao chép mã sau vào Arduino IDE của bạn, nhưng đừng tải lên nó ngay bây giờ. Bạn cần thực hiện một số thay đổi để nó hoạt động cho bạn.
/* 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.
*/
#include
#include
#include
#include
#include
#include
// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
// REPLACE with your Domain name and URL path or IP address with path
const char* serverName = "https://example.com/post-esp-data.php";
// Keep this API Key value to be compatible with the PHP code provided in the project page.
// If you change the apiKeyValue value, the PHP file /post-esp-data.php also needs to have the same key
String apiKeyValue = "tPmAT5Ab3j7F9";
String sensorName = "BME280";
String sensorLocation = "Office";
/*#include
#define BME_SCK 18
#define BME_MISO 19
#define BME_MOSI 23
#define BME_CS 5*/
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
// (you can also pass in a Wire library object like &Wire2)
bool status = bme.begin(0x76);
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring or change I2C address!");
while (1);
}
}
void loop() {
//Check WiFi connection status
if(WiFi.status()== WL_CONNECTED){
std::unique_ptrclient(new BearSSL::WiFiClientSecure);
// Ignore SSL certificate validation
client->setInsecure();
//create an HTTPClient instance
HTTPClient https;
// Your Domain name with URL path or IP address with path
https.begin(*client, serverName);
// Specify content-type header
https.addHeader("Content-Type", "application/x-www-form-urlencoded");
// Prepare your HTTP POST request data
String httpRequestData = "api_key=" + apiKeyValue + "&sensor=" + sensorName
+ "&location=" + sensorLocation + "&value1=" + String(bme.readTemperature())
+ "&value2=" + String(bme.readHumidity()) + "&value3=" + String(bme.readPressure()/100.0F) + "";
Serial.print("httpRequestData: ");
Serial.println(httpRequestData);
// You can comment the httpRequestData variable above
// then, use the httpRequestData variable below (for testing purposes without the BME280 sensor)
//String httpRequestData = "api_key=tPmAT5Ab3j7F9&sensor=BME280&location=Office&value1=24.75&value2=49.54&value3=1005.14";
// Send HTTP POST request
int httpResponseCode = https.POST(httpRequestData);
// If you need an HTTP request with a content type: text/plain
//http.addHeader("Content-Type", "text/plain");
//int httpResponseCode = http.POST("Hello, World!");
// If you need an HTTP request with a content type: application/json, use the following:
//http.addHeader("Content-Type", "application/json");
//int httpResponseCode = http.POST("{"value1":"19","value2":"67","value3":"78"}");
if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
// Free resources
https.end();
}
else {
Serial.println("WiFi Disconnected");
}
//Send an HTTP POST request every 30 seconds
delay(30000);
}
Sau khi sửa mã bằng các thông tin mạng của riêng bạn, tải mã lên board của bạn.
Lưu ý: Hầu hết các máy chủ yêu cầu bạn thực hiện các yêu cầu HTTPS. Mã trên thực hiện các yêu cầu HTTPS để tuân thủ yêu cầu của hầu hết các máy chủ đám mây hiện nay.
Máy chủ của bạn không hỗ trợ HTTPS? Hãy sử dụng mã này.
Hãy tìm hiểu thêm về các yêu cầu HTTPS với ESP8266: Yêu cầu HTTPS ESP8266 NodeMCU (Arduino IDE).
5.5 Demo
Sau khi hoàn thành tất cả các bước, hãy để bo mạch ESP của bạn thu thập một số đọc dữ liệu và xuất bản chúng lên máy chủ của bạn.
Nếu mọi thứ đúng, đây là những gì bạn sẽ thấy trong Serial Monitor của Arduino IDE của bạn:
Nếu bạn mở tên miền của riêng bạn trong đường dẫn URL này:
https://example-domain.com/esp-data.php
Bạn sẽ thấy tất cả các đọc dữ liệu được lưu trữ trong cơ sở dữ liệu của bạn. Làm mới trang web để xem các đọc dữ liệu mới nhất:
Bạn cũng có thể truy cập vào phpMyAdmin để quản lý dữ liệu được lưu trữ trong bảng SensorData của bạn. Bạn có thể xóa nó, chỉnh sửa, v.v…
6. Kết luận
Trong hướng dẫn này, bạn đã học cách xuất bản dữ liệu từ cảm biến vào cơ sở dữ liệu trong tên miền máy chủ riêng của riêng bạn cho phép bạn truy cập từ bất kỳ đâu trên thế giới. Điều này đòi hỏi bạn phải có máy chủ riêng và tên miền (bạn có thể sử dụng Raspberry Pi để truy cập cục bộ).
Ví dụ đã cung cấp càng đơn giản càng tốt để bạn có thể hiểu được cách mọi thứ hoạt động. Sau khi hiểu ví dụ này, bạn có thể thay đổi diện mạo của bảng, xuất bản các đọc dữ liệu khác, xuất bản từ nhiều bo mạch ESP và nhiều hơn nữa.
Nguồn: https://ispacedanang.edu.vn
Danh mục: Học tập