NodeMCU Получить данные с веб-сервера и обновить значение

Я использую Nodenmcu с Arduino IDE . Я использовал DHT11 IC для измерения температуры и влажности. Теперь я хотел бы добавить параметр на веб-странице с именем set_temp . Когда значение Set_temp устанавливается равным значению, оно должно обновляться при нажатии значка изменения. Вот мой код Мой код работает до тех пор, пока не будет введен текст из Интернета, но он не будет обновлять значение set_temp

#include <ESP8266WiFi.h>
#include "DHT.h"

static float Set_Temp;
DHT dht;
int value = LOW;

const char* ssid = "esp8266";
const char* password = "Test123456";

int ledPin = 13; // GPIO13
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);

  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  dht.setup(D3);   /* D1 is used for data communication */
  // Connect to 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");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");

}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }


// New code has been added 

 delay(dht.getMinimumSamplingPeriod());  /* Delay of amount equal to sampling period */

  float humidity = dht.getHumidity(); /* Get humidity value */
  float temperature = dht.getTemperature(); /* Get temperature value */

 // Serial.print(dht.getStatusString());  /* Print status of communication */

if(temperature>=Set_Temp)
{

  digitalWrite(ledPin, HIGH);
    value = HIGH;

}else
{
  digitalWrite(ledPin, LOW);
    value = LOW;
}




  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();

  // Match the request


 /* if (request.indexOf("/LED=ON") != -1)  {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }
  if (request.indexOf("/LED=OFF") != -1)  {
    digitalWrite(ledPin, LOW);
    value = LOW;
  }*/

// Set ledPin according to the request
//digitalWrite(ledPin, value);

  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");

  client.print("Relay_Turn_On_Status: ");

  if(value == HIGH) {
    client.print("On");
  } else {
    client.print("Off");
  }
 // client.println("<br><br>");
 // client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
//  client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");  
//  client.println("</html>");


client.print("</html>");
client.print("<head>");
client.print("<title>My Page</title>");
client.print("</head>");
client.print("<body>");
  client.print("<br><br>");
   client.print("Set_Temp: ");
    client.println("<input type=text name=textbox size=5 value=Enter_Temp_Here");
    client.println("<br><input type=submit value=Change ><br>");
    client.println("</div>");
     client.println("</body>");
     client.println("</html>");

Set_Temp:"<br><input type=submit value=Change ><br>";
//Set_Temp:"<input type=text name=textbox size=5 value=Enter_Temp_Here>";
Serial.println(Set_Temp);



client.println("<br><br>");
  client.println("DHT11_HumidityReading: ");
  client.println(humidity,1);
   client.println("<br><br>");
  client.println("DHT11_Temprature Reading: ");
  client.println(temperature,1);
   client.println("<br><br>");

  client.println("Set_Temp: ");
  client.println(Set_Temp);
   client.println("<br><br>");


  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");

}

Мое главное сомнение в этой части кода, где когда-то я прочитал его, не будет обновляться.

 Set_Temp:"<br><input type=submit value=Change ><br>";
    //Set_Temp:"<input type=text name=textbox size=5 value=Enter_Temp_Here>";
    Serial.println(Set_Temp);

Если я использую, как это. будет отображаться -1

Set_Temp=readString.indexOf(2);

Я использовал метод get & post из HTTP https://www.w3schools.com/htmL/[Serial Out Here ] [веб-страница]

Как я могу изменить свое значение Set_Temp из текстового поля.

1 ответ

Посмотрите на эту статью, я следую за ней, чтобы включить и выключить подсветку в NodeMCU с помощью Arduino IDE. Клиент в сети написан на PHP.

https://blog.nyl.io/esp8266-led-arduino/

<?php
$light = $_GET['light'];
if($light == "on") {
  $file = fopen("light.json", "w") or die("can't open file");
  fwrite($file, '{"light": "on"}');
  fclose($file);
} 
else if ($light == "off") {
  $file = fopen("light.json", "w") or die("can't open file");
  fwrite($file, '{"light": "off"}');
  fclose($file);
}
?>

Я надеюсь, что это поможет вам.

С уважением

Другие вопросы по тегам