Хранение данных NodeMCU в базе данных MySQL - PullRequest
1 голос
/ 21 сентября 2019

Я работаю над проектом, который требует от меня сохранения данных влажности и температуры 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, поэтому я не могу понять, как решить эту проблему.проблема.

Я следую этому учебнику.

...