C++ 将NodeMCU数据存储到MySQL数据库中
我正在从事一个项目,该项目要求我将DHT11湿度和温度数据存储到本地MySQL数据库中。我已经在我的计算机上安装了XAMPP服务器并启动了MySQL服务器。我在htdocs文件夹中编写了一个.php脚本,可以将数据插入数据库。.php脚本(dht.php)如下所示:C++ 将NodeMCU数据存储到MySQL数据库中,c++,http,nodemcu,C++,Http,Nodemcu,我正在从事一个项目,该项目要求我将DHT11湿度和温度数据存储到本地MySQL数据库中。我已经在我的计算机上安装了XAMPP服务器并启动了MySQL服务器。我在htdocs文件夹中编写了一个.php脚本,可以将数据插入数据库。.php脚本(dht.php)如下所示: <?php class dht11{ public $link=''; function __construct($temperature, $humidity){ $this->connect(); $th
<?php
class dht11{
public $link='';
function __construct($temperature, $humidity){
$this->connect();
$this->storeInDB($temperature, $humidity);
}
function connect(){
$this->link = mysqli_connect('localhost','root','') or die('Cannot connect to the DB');
mysqli_select_db($this->link,'temphumid') or die('Cannot select the DB');
}
function storeInDB($temperature, $humidity){
$query = "insert into dht11 set humidity='".$humidity."', temperature='".$temperature."'";
$result = mysqli_query($this->link,$query) or die('Errant query: '.$query);
}
}
if($_GET['temperature'] != '' and $_GET['humidity'] != ''){
$dht11=new dht11($_GET['temperature'],$_GET['humidity']);
}
?>
#include "DHT.h"
#define DHTTYPE DHT11
#define dht_dpin 0
DHT dht(dht_dpin, DHTTYPE);
// Connecting to WiFi
#include<ESP8266WiFi.h>
#include <WiFiClient.h>
#include<ESP8266HTTPClient.h>
const char* ssid = "XXXX";
const char* password = "XXXXX";
const char* serverName = "http://192.168.X.X/testcode/dht.php";
void setup() {
dht.begin();
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
delay(700);
Serial.print("Connecting to ");
Serial.print(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi Connected");
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level
// but actually the LED is on; this is because
// it is active low on the ESP-01)
delay(1000); // Wait for a second
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH
// delay(1000); // Wait for two seconds (to demonstrate the active low LED)
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Current humidity = ");
Serial.print(h);
Serial.print("% ");
Serial.print("Temperature = ");
Serial.print(t);
Serial.println("C ");
delay(1000);
//MYSQL CODE HERE
if (WiFi.status() == WL_CONNECTED){
Serial.println("Making request HTTP");
HTTPClient http;
http.begin(serverName);
http.addHeader("Content-Type", "text/plain");
int responseCode = http.POST("/testcode/dht.php/temperature=33&humidity=77");
Serial.println(responseCode);
}
}
但是,我无法将nodeMCU中的数据插入MySQL数据库。我的代码如下:
<?php
class dht11{
public $link='';
function __construct($temperature, $humidity){
$this->connect();
$this->storeInDB($temperature, $humidity);
}
function connect(){
$this->link = mysqli_connect('localhost','root','') or die('Cannot connect to the DB');
mysqli_select_db($this->link,'temphumid') or die('Cannot select the DB');
}
function storeInDB($temperature, $humidity){
$query = "insert into dht11 set humidity='".$humidity."', temperature='".$temperature."'";
$result = mysqli_query($this->link,$query) or die('Errant query: '.$query);
}
}
if($_GET['temperature'] != '' and $_GET['humidity'] != ''){
$dht11=new dht11($_GET['temperature'],$_GET['humidity']);
}
?>
#include "DHT.h"
#define DHTTYPE DHT11
#define dht_dpin 0
DHT dht(dht_dpin, DHTTYPE);
// Connecting to WiFi
#include<ESP8266WiFi.h>
#include <WiFiClient.h>
#include<ESP8266HTTPClient.h>
const char* ssid = "XXXX";
const char* password = "XXXXX";
const char* serverName = "http://192.168.X.X/testcode/dht.php";
void setup() {
dht.begin();
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
delay(700);
Serial.print("Connecting to ");
Serial.print(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi Connected");
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level
// but actually the LED is on; this is because
// it is active low on the ESP-01)
delay(1000); // Wait for a second
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH
// delay(1000); // Wait for two seconds (to demonstrate the active low LED)
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Current humidity = ");
Serial.print(h);
Serial.print("% ");
Serial.print("Temperature = ");
Serial.print(t);
Serial.println("C ");
delay(1000);
//MYSQL CODE HERE
if (WiFi.status() == WL_CONNECTED){
Serial.println("Making request HTTP");
HTTPClient http;
http.begin(serverName);
http.addHeader("Content-Type", "text/plain");
int responseCode = http.POST("/testcode/dht.php/temperature=33&humidity=77");
Serial.println(responseCode);
}
}
#包括“DHT.h”
#定义DHT类型DHT11
#在0中定义dht_DPU
DHT DHT(DHT_dpin,DHT类型);
//连接到WiFi
#包括
#包括
#包括
常量字符*ssid=“XXXX”;
const char*password=“XXXXX”;
常量字符*服务器名=”http://192.168.X.X/testcode/dht.php";
无效设置(){
dht.begin();
序列号开始(115200);
引脚模式(LED_内置,输出);//将LED_内置引脚初始化为输出
延迟(700);
串行打印(“连接到”);
串行打印(ssid);
WiFi.begin(ssid,密码);
while(WiFi.status()!=WL_已连接){
延迟(500);
连续打印(“.”);
}
Serial.println(“”);
Serial.println(“WiFi连接”);
}
//循环函数永远反复运行
void循环(){
digitalWrite(LED_BUILTIN,低);//打开LED(注意,低是电压电平
//但实际上LED是亮着的,这是因为
//它在ESP-01上处于低激活状态)
延迟(1000);//等一下
digitalWrite(LED内置,高);//通过使电压高来关闭LED
//延迟(1000);//等待两秒钟(以显示激活的低电平LED)
浮动h=dht.read湿度();
浮点数t=dht.readTemperature();
串行打印(“当前湿度=”);
连续打印(h);
连续打印(“%”);
串行打印(“温度=”);
连续打印(t);
序列号。打印号(“C”);
延迟(1000);
//这里是MYSQL代码
如果(WiFi.status()==WL_已连接){
Serial.println(“生成请求HTTP”);
HTTPClient-http;
http.begin(serverName);
addHeader(“内容类型”、“文本/普通”);
int responseCode=http.POST(“/testcode/dht.php/temperature=33&湿度=77”);
Serial.println(响应代码);
}
}
执行此命令时,我在数据库中看不到任何数据。有人能指出什么地方不对吗
我试着在网上查找,虽然有些人遇到过类似的问题,但他们没有提供.php文件信息,所以我无法找到解决这个问题的方法
我遵循教程。< /P>,你的PHP文件工作,所以问题是用你的C++代码。BTW,你必须做一个HTTP GET请求,而不是一个POST。嗯,你的PHP文件工作,所以问题是用你的C++代码。BTW,你必须作出一个HTTP GET请求,而不是一个帖子。