Ajit
Ajit

Reputation: 1

NodeMCU Get data from webswerver and update value

I am using Nodenmcu with arduino IDE . I have used DHT11 IC to read temperature and humidity. Now i would like to add parameter in web page called set_temp . When Set_temp value being set to value the value should get updated when change icon has been pressed. Here is my code. My code is working till to enter the text from web but it wont update set_temp value

#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("");

}

My main doubt in this part of code where once i read it wont update.

 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);

If i use like this. it will display -1

Set_Temp=readString.indexOf(2);

I followed the method of get & post from HTTP https://www.w3schools.com/htmL/[Serial Out Here][web page]

How can i change my Set_Temp value from text box.

Upvotes: 0

Views: 1240

Answers (1)

V&#237;ctor Melgar
V&#237;ctor Melgar

Reputation: 71

Take a look to this article, I follow it to turn on and turn off a light in NodeMCU with Arduino IDE. The client in the web is written on 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);
}
?>

I hope this help you.

Regards

Upvotes: 1

Related Questions