Live Sensor Data Display 🌐 Creating a free Sub-Domain & Hosting

<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json");

$dataFile = __DIR__ . '/sensor-data.json';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $temperature = $_POST['temperature'] ?? null;
    $humidity = $_POST['humidity'] ?? null;

    if ($temperature !== null && $humidity !== null) {
         $data = $ temperature . "," . $ humidity;
        file_put_contents($dataFile, json_encode([
            'temperature' => $temperature,
            'humidity' => $humidity,
            'timestamp' => date('Y-m-d H:i:s')
        ]));
        file_put_contents("sensor-data.txt", $data);
        echo json_encode(['status' => 'success']);
    } else {
        echo json_encode(['status' => 'error', 'message' => 'Missing fields']);
    }
    exit;
}

if (file_exists($dataFile)) {
    echo file_get_contents($dataFile);
} else {
    echo json_encode(['temperature' => null, 'humidity' => null]);
}
temperatureĀ      : " null "
humidityĀ Ā Ā Ā Ā Ā Ā Ā  : " null "
<div id="sensor">
  <p> Temp: <span id="temp">--</span> °C</p>
  <p> Humidity: <span id="hum">--</span> %</p>
  <p>Last updated: <span id="time">--</span></p>
</div>

<script>
async function loadSensorData() {
  try {
    const res = await fetch('/wp-content/sensor- sensor-data.txt ');
    const data = await res.json();
    document.getElementById("temp").textContent = data.temperature;
    document.getElementById("hum").textContent = data.humidity;
    document.getElementById('time').textContent = data.timestamp;
  } catch (e) {
    console.error("Error fetching sensor data:", e);
  }
}
setInterval(loadSensorData, 1);
loadSensorData();
</script>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include <DHT.h>

// WiFi credentials
const char* ssid = "YourWiFiName";
const char* password = "YourWiFiPassword";

// Your server URL
const char* serverUrl = "http://YourDomain.atwebpages.com/wp-content/phpName.php"; 

// DHT11 settings
#define DHTPIN 2     // GPIO2 of ESP01
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Create a WiFiClient
WiFiClient client;
void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  dht.begin();

  Serial.println("Connecting to WiFi...");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    float humidity = dht.readHumidity();
    float temperature = dht.readTemperature();

    if (isnan(humidity) || isnan(temperature)) {
      Serial.println("Failed to read from DHT sensor!");
      return;
    }
    Serial.printf("Temperature : %.2f °C \r\n", temperature);
    Serial.printf("Humidity : %.2f %% \r\n", humidity);
    HTTPClient http;
    http.begin(client, serverUrl);
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");

    // Build the POST data
    String postData = "temperature=" + String(temperature, 1) + "&humidity=" + String(humidity, 1);

    int httpResponseCode = http.POST(postData);

    if (httpResponseCode > 0) {
      Serial.print("HTTP Response code: ");
      Serial.println(httpResponseCode);
      Serial.println(http.getString());
    } else {
      Serial.print("Error on sending POST: ");
      Serial.println(httpResponseCode);
    }

    http.end(); // Free resources
  } else {
    Serial.println("WiFi Disconnected, trying to reconnect...");
    WiFi.begin(ssid, password);
  }

  delay(10000); // Send data every 10 seconds
}