Я работаю над проектом, который требует от меня сохранения данных влажности и температуры DHT11 в локальной базе данных MySQL.Я установил сервер XAMPP на свой компьютер и запустил сервер MySQL.Я написал скрипт .php в папке htdocs, который может вставлять данные в базу данных.Сценарий .php (dht.php) выглядит следующим образом:
<?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']);
}
?>
Я знаю, что этот сценарий работает нормально, поскольку следующая команда вставляет соответствующие значения в базу данных:
http://localhost/testcode/dht.php?temperature=34&humidity=75
Однако я не могу вставить данные из nodeMCU в базу данных MySQL.Мой код, как показано ниже:
#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);
}
}
Я не вижу никаких данных в базе данных при выполнении этой команды.Кто-то может указать, что не так?
Я пытался искать в Интернете, и хотя некоторые люди сталкивались с подобными проблемами, они не предоставили информацию о файле .php, поэтому я не могу понять, как решить эту проблему.проблема.
Я следую этому учебнику.