ESP8266上传数据到MYSQL通过PHP服务器

ESP8266 直接连接 MySQL 创客自己做一些传感器数据采集是通常的应用。搜一下,往往都是 物联网平台、自己搭建MQTT服务器,或 PHP 网页转存 MySQL。其实吧,ESP8266 直接连接 MySQL 就可以的。 阅读详情

ESP8266上传数据到MYSQL通过PHP服务器

关键点说明:

原文地址:

ESP32/ESP8266 Insert Data into MySQL Database using PHP and Arduino IDE

完成项目的步骤:

软件部分:
1,使用phpstudu_pro架构建立php+mysqlh服务器
2,使用ARDUINO IDE在ESP8266或ESP12F上编写WIFICLIENT
硬件部分:
ESP8266/ESP32/ESP12F等带数据线

DO IT:

具体方案如图所示
服务器制作部分这里就不再赘述了,这个得自己弄,简单点的就用phpstudy_pro,很快就搞定了。
我们说说ESP这边。

#include <ESP8266WiFi.h>
const char* ssid     = "your-ssid";
const char* password = "your-password";
const char* host = "your host ip address";
const String apiKeyValue = "tPmAT5Ab3j7F9";
const String sensorName = "BME280";
const String sensorLocation = "Office";
const int httpPort = 80;
const String url = "/replace with your serve page location that post-html-data.php";
void setup() {
  Serial.begin(115200);
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}
int value = 0;
int value1 = 23;
int value2 = 45;
int value3 = 1023;
void loop() {
  delay(1000);
  ++value;
  Serial.print("connecting to ");
  Serial.println(host);
  
  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }
  if(value1<45){
    value1++;
    value2++;
    value3++;    
    }
    else{
      value1 = 23;
      value2 = 45;
      value3 = 1023;      
      }
  // We now create a URI for the request 
  String httpRequestData = "api_key=" + apiKeyValue + "&sensor=" + sensorName
                          + "&location=" + sensorLocation + "&value1=" + String(value1)
                          + "&value2=" + String(value2) + "&value3=" + String(value3) + "";
  //adress that your server page had locate

  // This will send the request to the server
  client.print(String("GET ") + url + "?" + httpRequestData+ " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" + 
               "Connection: close\r\n\r\n");
  unsigned long timeout = millis();
  while (client.available() == 0) {
    if (millis() - timeout > 5000) {
      Serial.println(">>> Client Timeout !");
      client.stop();
      return;
    }
  }
  // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
}

修改const参数后就可以使用了

服务器端口,两个文件,一个是post-esp-data.php


```php
<?php
$servername = "replac with your server ip";
// REPLACE with your Database name
$dbname = "REPLACE with your Database name";
// REPLACE with Database user
$username = "REPLACE with Database user";
// REPLACE with Database user password
$password = "EPLACE with Database user 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 = "";
//you can use GET OR POST to receive and send accord esp8266
if ($_SERVER["REQUEST_METHOD"] == "GET") {
    $api_key = test_input($_GET["api_key"]);
    if($api_key == $api_key_value) {
        $sensor = test_input($_GET["sensor"]);
        $location = test_input($_GET["location"]);
        $value1 = test_input($_GET["value1"]);
        $value2 = test_input($_GET["value2"]);
        $value3 = test_input($_GET["value3"]);

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }
        $reading_time=date("Y-m-d H:i:s");
        //$id=200;
        //$sql = "UPDATE `sensordata` SET `sensor`='".$sensor."',`location`='".$location."',`value1`='".$value1."',`value2`='".$value2."',`value3`='".$value3."',`reading_time`='".$reading_time."' WHERE `id` like '$id'";
        $sql1="INSERT INTO `sensordata` (sensor, location, value1, value2, value3)
        VALUES ('" . $sensor . "', '" . $location . "', '" . $value1 . "', '" . $value2 . "', '" . $value3 . "')";
        if ($conn->query($sql1) === TRUE) {
            echo $sensor."|".$location."|".$value1."|".$value2."|".$value3."|".$reading_time;
        }
        else {
            echo "Error: " . $sql1 . "<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
<!DOCTYPE html>
<html><body>
<?php
$servername = "REPLACE with your Database ip";
// REPLACE with your Database name
$dbname = "REPLACE with your Database name";
// REPLACE with Database user
$username = "REPLACE with Database user";
// REPLACE with Database user password
$password = "REPLACE with Database user 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 border= border-padding="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>

服务器部分

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
)

数据正常输入
数据正常读取
先连起来,咱们再分析,充满斗志!!!
ESP12F正常运行
DO IT

ESP8266上传数据到MySQL数据库(附资料下载链接) 思路:ESP8266通过串口助手将数据上传储存在MySQL数据库中,通过浏览器访问PHP文件来显示数据库中的数据。 准备工具: ESP8266模块 普通安卓数据线 预装好的MySQL数据库 wamp集成开发环境 PHP实现的网页 串口助手 第一步通过给ESP8266烧写AT指令固件 第二步配置ESP8266,指令如下 AT+CWMODE=3:设置工作模式(STA,AP模式) A... 阅读详情

相关推荐

手把手教你用ESP32+Arduino+PHP,把传感器数据实时推送到网页(附完整代码)

本文详细介绍了如何使用ESP32开发板搭配Arduino和PHP,实现传感器数据的实时采集与网页可视化。通过完整的代码示例,展示了从硬件连接、数据传输到MySQL数据库存储,再到PHP+JavaScript构建动态仪表盘的全流程,为物联网开发者提供实用指南。

weixin_42522575的博客 382

ESP8266采集多个传感器数据通过WIFI上传到本地数据库(风速、风向、CO、颗粒物)

ESP8266采集多个传感器数据通过WIFI上传到本地数据库(风速、风向、CO 、颗粒物),简单串口采集参照上一篇

weixin_57246604的博客 6314

基于ESP32/ESP8266与LAMP栈构建低成本分布式物联网传感系统

物联网数据采集的核心在于将物理世界的信号通过传感器数字化,并经由网络可靠传输至中心节点进行存储与分析。其基本原理是通过微控制器连接传感器,利用无线通信协议将数据发送至服务器。这项技术的价值在于实现了对环境或设备状态的远程、实时、低成本监控,是工业自动化、智慧农业、环境监测等领域数字化转型的基础。在实际工程中,ESP32与ESP8266因其极低的功耗和内置Wi-Fi,成为构建此类低功耗传感节点的理想硬件选择。通过结合LAMP(Linux, Apache, MySQL, PHP)这一成熟稳定的服务器栈,可以快速

weixin_31309419的博客 356

ESP8266 学习 十 客户端向服务器发送数据信息

ESP8266客户端向服务器发送数据信息;客户端向服务器请求数据信息

qq_52785624的博客 2664

开源环境监测系统:Arduino与Python Kivy实现辐射数据采集与可视化

物联网系统通过传感器感知物理世界,将数据经嵌入式处理与网络传输,最终实现可视化呈现,是连接硬件与软件的核心技术架构。其原理在于利用微控制器采集传感器信号,通过无线模块上传至服务器,再经由应用程序进行数据分析与展示,在环境监测、工业控制等领域具有重要价值。本文聚焦于一个具体的应用场景:基于Arduino和ESP8266构建的辐射监测系统,并详细介绍了如何使用Python Kivy框架开发跨平台桌面应用,实现数据的实时显示与历史图表分析。该系统涵盖了盖革计数器信号处理、I2C通信协议、HTTP数据传输等关键技术

weixin_31858171的博客 549

ESP8266上传数据到MySQL数据库.zip

实现ESP8266访问MySQL数据库 参考博客 https://blog.youkuaiyun.com/wangpan0330/article/details/101920930#comments

ESP8266上传数据到MySQL数据库

思路:ESP8266通过串口助手将数据上传储存在MySQL数据库中,通过浏览器访问PHP文件来显示数据库中的数据。 准备工具: ESP8266模块 普通安卓数据线 预装好的MySQL数据库 wamp集成开发环境 PHP实现的网页 串口助手 第一步通过给ESP8266烧写AT指令固件 第二步配置ESP8266,指令如下 AT+CWMOD...

ba_wang_mao的专栏 3814

Arduino_ESP8266-MySQL-Connector:适用于基于Arduino和ESP8266的开发板MySQL连接器库

ESP8266 MySQL连接器库。 版权所有:copyright:2012、2015 Oracle和/或其分支机构。 版权所有。 该程序是免费软件; 您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它; 许可证的版本2。 分发该程序是希望它会有用,但是没有任何保证; 甚至没有对适销性或特定用途适用性的暗示保证。 有关更多详细信息,请参见GNU通用公共许可证。 您应该已经与该程序一起收到了GNU通用公共许可证的副本; 如果没有,请写信给自由软件基金会公司,美国马萨诸塞州波士顿,第五层,富兰克林街51号,马萨诸塞州02110-1301 适用于Arduino AVR开发板,SAM(Due)开发板,SAMD(零)开发板和ESP8266 Wifi模块。 提交问题之前,请彻底阅读页面。 “重要说明”页面上有关于库要求的重要信息。 下载并安装 MySQL Connector 1.0.5

一种基于Wemos(ESP8266)将数据通过MQTT上传至EMQX服务器并转存到MySQL的方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 物联网这边与软件那边对接需要我们先去采集数据,上传至云端后,再将数据转存到MySQL中,方便后台人员去调取数据,本文采用的方法是一种使用Wemos(ESP8266)将采集到的数据通过MQTT协议上传至EMQX服务器,再由EMQX服务器将数据转存至MySQL。这样就可以让后端人员很方便的去调取所需要的数据内容。 提示:以下是本篇文章正文内容,下面案例可供参

weixin_43757283的博客 4221

模糊综合评价模型

一.引子 1.数学归纳法:同高中知识 2.秃子悖论:秃子悖论 这俩个例子都是类似于“量变引起质变”的道理,而在数学中我们把这类问题的性质叫做“模糊性”,在生活中我们也经常能遇到一些模糊的概念,比如年轻、帅、很少很多… 二.概述 模糊综合评价法是一种基于模糊数学的综合评价方法。该综合评价法根据模糊数学的隶属度理论把定性评价转化为定量评价,即用模糊数学对受到多种因素制约的事物或对象做出一个总体的评价。它具有结果清晰,系统性强的特点,能较好地解决模糊的、难以量化的问题,适合各种非确定性问题的解决。——来自百度百

The__Tyche的博客 2万+

PyTorch模型生产部署:ONNX/Triton导出与高可用架构实战

机器学习模型部署本质是训练环境与生产环境之间的运行时契约建立过程,涉及序列化协议、推理引擎兼容性、动态批处理及资源隔离等核心问题。ONNX凭借标准化算子集和跨框架支持,成为平衡兼容性、性能与可维护性的首选导出格式;Triton Inference Server则通过原生多框架支持、动态batching和热加载能力,显著提升GPU利用率与服务SLA保障水平。在金融风控、电商推荐等高要求场景中,基于ONNX+Triton+K8s的分层架构可稳定支撑千级QPS与毫秒级P95延迟,同时满足模型热更新、可观测性与版本

weixin_33857679的博客 448

Arduino-ESP8266传感器获取温度湿度[联网版]

基础配置 数据库:Mysql 服务器:Linux 后端:php 前端:html,css,echar 开发板:esp8266 传感器:温湿度传感器,型号不会看 成品演示 esp8266把传感器的数据上传到服务器, 手机上访问网址就能看到当前的温度湿度。 接口设计 简单安全考虑,增加一个密钥验证, 防止被恶意写入乱七八糟数据; 接口:http://zxyoyo.com/sky/iot123.php 传输方式:GET 参数: token:"123abc" //安全参数,随意设置 temp: 22.6 //温

qwe1314225的博客 3676

保姆级教程:用Protege 5.5.0从零构建你的第一个知识图谱(附实战案例文件)

本文提供了一份详细的Protege 5.5.0使用指南,从零开始构建知识图谱。涵盖环境配置、本体结构设计、实例填充到可视化展示的全流程,特别适合初学者快速掌握知识建模技术。通过实战案例演示,帮助读者理解如何定义类、属性及建立实例关系,是学习知识图谱构建的实用教程。

weixin_42548816的博客 554

基于ESP8266的联网温度监测点

通过8266采集温度传感器的温度数据,上传到服务器。监测详细的温度可以作为其他自动化控制的数据基础,检测统计的数据能够反应小环境的温度背景。访问网站即可查询记录的传感器数据。

pinyinshuru的博客 2896

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。作为测试环境,本次使用 Registry2 搭建了私有镜像仓库,实际生产环境建议使用 Harbor;创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。

Heartsuit的博客 2462

零基础做完YOLOv8船只检测系统:HRSC2016数据集 + 完整UI,稳过答辩

亲爱的同学,通过这篇教程,你已经掌握了“基于YOLOv8的HRSC2016微小船只检测系统”从数据集处理、模型训练到Tkinter界面开发的全流程。这个课题既贴合“海事智能化”的产业战略,又涵盖了“目标检测、深度学习、界面开发”等多个毕设评分点,非常适合作为计算机或海事工程专业的毕业设计。在实践中,你可能会遇到“海面背景复杂导致船只漏检”“微小船只识别精度不足”“UI与模型推理同步卡顿”等挑战——别担心,这些都是技术成长的必经之路。

FJN110的博客 108

实现Wemos将DHT11采集的温湿度数据通过MQTT上传至EMQ X服务器并转存到MySQL的数据持久化实验

项目目的 本项目利用Wemos将DHT11采集的温湿度数据通过MQTT协议上传至EMQ X服务器,进而将EMQ X指定主题下且满足条件的消息存储到 MySQL 数据库。 硬件准备 1、Wemos * 1 2、DHT11 * 1 3、杜邦线若干 4、USB转串口数据线 * 1 软件准备 1、Arduino IDE 2、腾讯云 3、宝塔Linux面板 4、EMQ X 5、MySQL 项目过程 1、云服务器 阿里云、腾讯云、华为云等云服务器均可 (本项目用的是腾讯云服务器,系统为Ubuntu18.04) 2

jzqs_的博客 1617

黑猫带你学eMMC协议第9篇:eMMC初始化过程(initial)

本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 文章为个人辛苦整理,付费内容,禁止私自转载。 文章所在专栏:《黑猫带你学:eMMC协议详解》 1 什么是emmc的初始化 对于小白来说,可能不太明白什么是emmc初始化。举个栗子:当你拿到一个电脑,接上电源,是不是就立马可以用了呢?并不是吧,你还需要去开机,等待电脑启动,配置完各种参数,等出现了电脑桌面,你才能用。那么同样,对于emmc芯片来说,也不是提供电源就能用了,需要输入各种命令后,让其进入到tran state后,才能正.

黑猫奥利奥的博客 6742

基于STM32+ESP8266的物联网环境监测系统设计

STM32+UCOSII+ESP8266 参考链接:https://blog.youkuaiyun.com/qq_38410730/article/details/86538288 参考资料:朱有鹏老师网络编程部分教程、正点原子官方资料、百度查询 因为很早之前就一直想做一套...

ZQ960822的博客 1万+

微信浏览器input[file]拍照点确认后强刷新解决

微信浏览器input强刷新,input h5强刷新,微信浏览器上传图片后刷新,h5表单强刷新,h5调用拍照后返回首页,h5调用拍照后刷新,微信浏览器强制刷新,iOS上微信浏览器input强刷新,iOS上微信浏览器上传图片后强刷新,ios微信浏览器上传图片后页面刷数据,h5在ios浏览器闪频,h5在ios微信打开时强制刷新,ios手机上调用相机后页面刷新,ios手机上调用相机后页面后重置,ios拍照后刷新,ios拍照完页面大刷新

江拥羡橙的博客 1350

★教程1:matlab学习教程入门100例目录

★基础入门 1.为什么要学习MATLAB 2.MATLAB安装 持续更新....... ★MATLAB基础编程语言熟悉

FPGA/MATLAB学习教程/源码/项目合作开发 4万+

从世界任何地方控制ESP32和ESP8266 GPIO

在本项目中,您将学习如何在世界任何地方控制ESP32或ESP8266 GPIO。这对于远程控制继电器,恒温器或任何其他设备非常有用。 这个项目也非常灵活。通过您的云仪表板,您可以轻松控制更多输出(而无需将新代码上传到主板),甚至可以将多个主板连接到服务器。 以前,我们已经将传感器读数存储到数据库中,并且我们使用了不同的方法在以下位置显示传感器读数: 表 图表 量规 现在,我创建了这个新项目,您可以...

跨学科知识视角展现 652

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ESP8266无线数据上传实战:HTTP POST与Serverless云函数构建极简物联网管道

在物联网项目中,数据传输是连接设备与云端的关键环节。其核心原理是通过网络协议将传感器采集的数据发送至服务器进行存储与处理。对于资源受限的嵌入式设备,选择一种简单、可靠且低功耗的通信技术至关重要,它能显著降低开发门槛,提升项目落地效率。HTTP POST协议因其通用性、无状态特性和广泛的库支持,成为实现单向数据上报的理想选择,尤其适合电池供电的传感器节点。结合Serverless云函数作为接收端,开发者无需管理服务器基础设施,即可实现数据的自动接收、处理和入库,在成本与灵活性间取得平衡。这种架构广泛应用于环境

weixin_34050005的博客 387

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

AIoT 传感器收集数据到EMQX的规则引擎处理并存储

一般在做物联网相关项目的时候,物联网与软件对接的时候,需要先采集数据,将数据上传至云端后,再将数据转存到MySQL中,方便后台人员去调取数据,本文采用的方法是一种使用Wemos(ESP8266)将采集到的数据通过MQTT协议上传至EMQX服务器,再由EMQX服务器将数据转存至MySQL。这样就可以让后端人员很方便的去调取所需要的数据内容。 一、项目准备 1、硬件准备 硬件 数量 Wemos 1 DHT11.

专注基础架构领域 2037

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: windows 系统中对mosquitto.conf配置
下一篇: ARDUINO IDE 中搭建 ESP32 开发环境
selfceo
博客等级 码龄6年 22粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值