Esp8266 Refreshing without page refreshing?

Hello, I'm trying to refresh a data without refreshing the whole webpage of the esp8266? I have a DS18B20 temperature sensor I'm trying to automatically refresh and update without having to refresh the page. So far no luck trying to find what I can use and adapt to make it work and my lack of coding skills are not advance enough still. Can someone please help me to figure this out. My code is below. I found some ethernet code That I could not make heads or tails of it.

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <OneWire.h>
 
// OneWire DS18S20, DS18B20, DS1822 Temperature Example
 
OneWire  ds(D4);  // on pin D4 (a 4.7K resistor is necessary)
// Replace with your network credentials
const char* ssid = "xxxxxxxx";  
const char* password = "xxxxxxxx";

ESP8266WebServer server(80);   //instantiate server at port 80 (http port)

void handleBody(){
  if (server.hasArg("data")== false){ //Check if body received
    String message = "Body not received";
    server.send(200, "text/plain", message);
    Serial.println(message);
    //return;
  }else{
    String message = "Body received:\n";
    message += server.arg("data");
    message += "\n";
    server.send(200, "text/plain", message);
    Serial.println(message);
  }
}

void handleRoot(){
     byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;
 
  if ( !ds.search(addr)) 
  {
    ds.reset_search();
    delay(250);
    return;
  }
 
 
  if (OneWire::crc8(addr, 7) != addr[7]) 
  {
      Serial.println("CRC is not valid!");
      return;
  }
  Serial.println();
 
  // the first ROM byte indicates which chip
  switch (addr[0]) 
  {
    case 0x10:
      type_s = 1;
      break;
    case 0x28:
      type_s = 0;
      break;
    case 0x22:
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  } 
 
  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end  
  delay(1000);
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad
 
  for ( i = 0; i < 9; i++) 
  {           
    data[i] = ds.read();
  }
 
  // Convert the data to actual temperature
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) 
    {
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } 
  else 
  {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
 
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
//  Serial.print("  Temperature = ");
 // Serial.print(celsius);
 // Serial.print(" Celsius, ");
 // Serial.print(fahrenheit);
//  Serial.println(" Fahrenheit");

  String message = "Your Temperature is:";
  message += "\n \n \n";
  message += (fahrenheit);
  message += "f";
//  String message = "What what";
  server.send(200, "text/plain", message);
  Serial.println(message);
}

void setup(void){
   
  delay(1000);
  Serial.begin(115200);
  WiFi.softAP(ssid, password); //begin WiFi access point
  Serial.println("");

  Serial.print("IP address: ");
  Serial.println(WiFi.softAPIP()); 
   
  server.on("/body", handleBody);

  server.on("/", handleRoot);
  
  server.begin();
  Serial.println("Web server started!");
}
 
void loop(void){

  server.handleClient();
}

Joseph

Ajax will help

you might want to see THIS

I'm looking at it now. Thank you I will post an update as soon as I can.

this might take me a while to figure out. Is there a simple way to refresh the whole page? I'm use to html and I know how to refresh the page but not with message += "\n \n \n"; type of code.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.