ชื่อโปรเจกต์: การบันทึกข้อมูลด้วย PHP + MySQL + ESP8266
ผมใช้ Blynk.cc มาหลายปีแล้ว สำหรับผมแล้ว มันยังคงดีที่สุดในโลกของ IoT หลังจากนั้นไม่นาน พวกเขาก็เปลี่ยนระบบทั้งหมด อัปเกรดและได้คุณสมบัติใหม่ที่น่าสนใจ...
...และระบบการชำระเงิน
ถ้าคุณอาศัยอยู่ในประเทศตะวันออกกลาง การจ่ายเงินเป็นดอลลาร์สำหรับงานอดิเรกของคุณนั้นเป็นเรื่องยากมาก น่าเสียดายจริงๆ... 1 USD = 14TL
เรื่องราวนี้ทำให้ผมมาที่นี่ ผมใช้วิธี GET แบบง่ายๆ เพื่อเรียก Link บน ESP8266 สำหรับรับและส่ง Data
มันไม่ได้เร็วมาก (ค่อนข้างช้า) ไม่ได้ใช้ง่ายสุดๆ แต่เกือบจะฟรีในการ Log Data คุณสามารถใช้ Free Hosting Services เช่น 000webhost.com ได้ พวกเขาให้บริการ MySQL, PHP, ftp และอื่นๆ อีกมากมาย

นอกจากนี้ คุณยังสามารถควบคุม Pins, อ่าน Sensors และอื่นๆ ได้ด้วย
บอร์ด ESP ส่ง Web Request ด้วยวิธี GET หลังจาก Request สำเร็จ บอร์ดจะส่ง Request ใหม่และดึง Body Data จากไฟล์ PHP Data นั้นมาจาก MySQL

ผมกำลังอัปเดต Interface ด้วย Bootstrap 5
เพียงแค่แบ่ง Values ออกเป็นข้อมูลแยกกันด้วยฟังก์ชัน Substring หลังจาก Substring เราสามารถประมวลผลข้อมูลนี้ในเงื่อนไข if else ได้
โปรเจกต์นี้ยังคงอยู่ระหว่างการพัฒนา ผมจะเพิ่ม Features บางอย่างสำหรับผม ดังนั้นผมจึงรอความคิดเห็นของคุณ
รายการที่ต้องทำ
- แปลชื่อไฟล์เป็นภาษาอังกฤษ - เสร็จสิ้น
- ปรับปรุงคุณภาพโค้ด - ยังคงดำเนินต่อไป
- mysqli_real_escape_string - เสร็จสิ้น
- เพิ่มชื่อ Device และตัวเลือก Filter Device - เสร็จสิ้น
- หมายเลขหน้า Data - ยังไม่ได้เริ่ม
- Sleep Mode - เสร็จสิ้น (อย่าลืมเชื่อมต่อ rst และ D0)
- Excel export - เสร็จสิ้น (ผมใช้โค้ด php5 และแปลงเป็น php 7 ด้วย mysqli)
- นับจำนวนครั้งที่พยายาม Log - เสร็จสิ้น
- Google Chart - เสร็จสิ้น
- Fancy Notifications - เสร็จสิ้น
- Auto Refresh - เสร็จสิ้น
- ASC / DESC Data order - เสร็จสิ้น
- กอบกู้โลก
-ทำ วิดีโอ คำแนะนำ - เสร็จสิ้น
ไฟล์ PHP - กำลังดำเนินการ...
นี่คือ espget.php ไฟล์สำหรับดึงข้อมูลจากบอร์ด
<?php
include 'db.php';
if(!empty($_GET['temp']) && !empty($_GET['hum']) && !empty($_GET['probe']) && !empty($_GET['charge']) && !empty($_GET['device']))
{
$temp = mysqli_real_escape_string($conn, $_GET['temp']);
$hum = mysqli_real_escape_string($conn, $_GET['hum']);
$probe = mysqli_real_escape_string($conn, $_GET['probe']);
$charge = mysqli_real_escape_string($conn, $_GET['charge']);
$device = mysqli_real_escape_string($conn, $_GET['device']);
\t $sql = "INSERT INTO espdata (temp, hum, probe, charge, device)
\t\t
\t\tVALUES ('".$temp."', '".$hum."', '".$probe."', '".$charge."', '".$device."')";
\t\tif ($conn->query($sql) === TRUE) {
\t\t} else {
\t\t echo "Error: " . $sql . "<br>" . $conn->error;
\t\t}
\t}
$sql = "SELECT * FROM espset WHERE id='1'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row["slp"];
echo $row["pin1"];
echo $row["pin2"];
echo $row["pin3"];
echo $row["interv"];
}
} else {
echo "0 results";
}
\t$conn->close();
?>นี่คือ index.php ไฟล์สำหรับแสดง Data และควบคุมบอร์ด
<?php include "db.php";
require "logincheck.php";
if ($_SESSION["active"])
{
if (isset($_SESSION["device"]))
{
$device = $_SESSION["device"];
}
else
{
$device = 1;
}
if (isset($_SESSION["records"]))
{
$records = $_SESSION["records"];
}
else
{
$records = 20;
}
if (isset($_SESSION["ascdesc"]))
{
$ascdesc = $_SESSION["ascdesc"];
}
else
{
$ascdesc = "ASC";
}
//------------------------------------------
$sql = "SELECT * FROM espset WHERE id='1'";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
while ($row = $result->fetch_assoc())
{
$pin1Stat = $row["pin1"];
$pin2Stat = $row["pin2"];
$pin3Stat = $row["pin3"];
$pageint = $row["interv"];
if ($row["slp"] == 1)
{
$sleepStat = "Enabled";
}
else
{
$sleepStat = "Disabled";
}
}
}
else
{
echo "0 results";
ข้อมูล Frontmatter ดั้งเดิม
title: "Data Logging with PHP + MySQL + ESP8266"
description: "This is simple alternative for Blynk, Cayenne, Thingspeak etc. This is not MQTT project. Works with PHP GET method to get and send data."
author: "yilmazyurdakul"
category: ""
tags:
- "php"
- "iot"
- "get"
- "mysql"
- "pin control"
- "data"
- "web control"
- "logging"
views: 12222
likes: 2
price: 2450
difficulty: "Intermediate"
components:
- "1x DHT11 Temperature & Humidity Sensor (3 pins)"
- "1x NodeMCU ESP8266 Breakout Board"
- "1x ESP8266 ESP-01"
- "1x Adafruit Waterproof DS18B20 Digital temperature sensor"
tools: []
apps:
- "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "7f80aca5226e709b40f678f2840813aa38f8d37b50386169bf48620b6044403b"
encryptedPayload: "U2FsdGVkX19SSiFpzUTcwsyyrSiYBwBhaF5sG7MXH/7lWlyrVOpucqMHZBDPyCxqQp2vaIw3gumqYTis3tYNcMuZUK16evt/5rvzExZMEWQ="
seoDescription: "Learn Data Logging with PHP, MySQL, and ESP8266. A simple alternative to Blynk or Thingspeak using PHP GET method. No MQTT required."
videoLinks:
- "https://www.youtube.com/embed/PwkwUIg5Lh4"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/data-logging-with-php-mysql-esp8266-a33ab0_cover.jpg"
lang: "th"