mirror of
https://github.com/lsdlsd88/JC4827W543.git
synced 2026-05-05 00:20:13 +01:00
165 lines
4.4 KiB
C++
165 lines
4.4 KiB
C++
/********************************************
|
||
----深圳市晶彩智能有限公司----
|
||
File name:40.WIFI Web Servers LED.ino
|
||
Version:V2.0
|
||
说明:WIFI Web Server DHT11Temperature and humidity sensor experiment
|
||
********************************************/
|
||
#include <WiFi.h>
|
||
#include <ESPAsyncWebServer.h>
|
||
#include <Adafruit_Sensor.h>
|
||
#include <DHT.h>
|
||
|
||
// Enter your WIFI account and password
|
||
const char* ssid = "CMCC-404";
|
||
const char* password = "12345678";
|
||
|
||
#define DHTPIN 27 // Digital pins to connect the DHT sensor
|
||
|
||
// Uncomment the sensor type in use:
|
||
#define DHTTYPE DHT11 // DHT 11
|
||
|
||
|
||
DHT dht(DHTPIN, DHTTYPE);
|
||
|
||
// Create AsyncWebServer object on port 80
|
||
AsyncWebServer server(80);
|
||
|
||
String readDHTTemperature() {
|
||
// The sensor reading can also be up to 2 seconds "old" (this is a very slow sensor)
|
||
// Read temperature in degrees Celsius (default)
|
||
float t = dht.readTemperature();
|
||
// Read temperature as Fahrenheit (isFahrenheit = true)
|
||
// float t = dht.readTemperature(true);
|
||
// Check if any reads failed and exit early (try again).
|
||
if (isnan(t)) {
|
||
Serial.println("Failed to read from DHT sensor!");
|
||
return "--";
|
||
}
|
||
else {
|
||
Serial.println(t);
|
||
return String(t);
|
||
}
|
||
}
|
||
|
||
String readDHTHumidity() {
|
||
// The sensor reading can also be up to 2 seconds "old" (this is a very slow sensor)
|
||
float h = dht.readHumidity();
|
||
if (isnan(h)) {
|
||
Serial.println("Failed to read from DHT sensor!");
|
||
return "--";
|
||
}
|
||
else {
|
||
Serial.println(h);
|
||
return String(h);
|
||
}
|
||
}
|
||
|
||
const char index_html[] PROGMEM = R"rawliteral(
|
||
<!DOCTYPE HTML><html>
|
||
<head>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
|
||
<style>
|
||
html {
|
||
font-family: Arial;
|
||
display: inline-block;
|
||
margin: 0px auto;
|
||
text-align: center;
|
||
}
|
||
h2 { font-size: 3.0rem; }
|
||
p { font-size: 3.0rem; }
|
||
.units { font-size: 1.2rem; }
|
||
.dht-labels{
|
||
font-size: 1.5rem;
|
||
vertical-align:middle;
|
||
padding-bottom: 15px;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<h2>ESP32 DHT11 Server</h2>
|
||
<p>
|
||
<i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
|
||
<span class="dht-labels">Temperature</span>
|
||
<span id="temperature">%TEMPERATURE%</span>
|
||
<sup class="units">°C</sup>
|
||
</p>
|
||
<p>
|
||
<i class="fas fa-tint" style="color:#00add6;"></i>
|
||
<span class="dht-labels">Humidity</span>
|
||
<span id="humidity">%HUMIDITY%</span>
|
||
<sup class="units">%</sup>
|
||
</p>
|
||
</body>
|
||
<script>
|
||
setInterval(function ( ) {
|
||
var xhttp = new XMLHttpRequest();
|
||
xhttp.onreadystatechange = function() {
|
||
if (this.readyState == 4 && this.status == 200) {
|
||
document.getElementById("temperature").innerHTML = this.responseText;
|
||
}
|
||
};
|
||
xhttp.open("GET", "/temperature", true);
|
||
xhttp.send();
|
||
}, 10000 ) ;
|
||
|
||
setInterval(function ( ) {
|
||
var xhttp = new XMLHttpRequest();
|
||
xhttp.onreadystatechange = function() {
|
||
if (this.readyState == 4 && this.status == 200) {
|
||
document.getElementById("humidity").innerHTML = this.responseText;
|
||
}
|
||
};
|
||
xhttp.open("GET", "/humidity", true);
|
||
xhttp.send();
|
||
}, 10000 ) ;
|
||
</script>
|
||
</html>)rawliteral";
|
||
|
||
// Replace placeholders with DHT values
|
||
String processor(const String& var){
|
||
//Serial.println(var);
|
||
if(var == "TEMPERATURE"){
|
||
return readDHTTemperature();
|
||
}
|
||
else if(var == "HUMIDITY"){
|
||
return readDHTHumidity();
|
||
}
|
||
return String();
|
||
}
|
||
|
||
void setup(){
|
||
// Serial port for debugging
|
||
Serial.begin(115200);
|
||
|
||
dht.begin();
|
||
|
||
// Connect to a wireless network
|
||
WiFi.begin(ssid, password);
|
||
while (WiFi.status() != WL_CONNECTED) {
|
||
delay(1000);
|
||
Serial.println("Connecting to WiFi..");
|
||
}
|
||
|
||
// Print ESP32 local IP address
|
||
Serial.println(WiFi.localIP());
|
||
|
||
// The root/page of the route
|
||
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
|
||
request->send_P(200, "text/html", index_html, processor);
|
||
});
|
||
server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){
|
||
request->send_P(200, "text/plain", readDHTTemperature().c_str());
|
||
});
|
||
server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){
|
||
request->send_P(200, "text/plain", readDHTHumidity().c_str());
|
||
});
|
||
|
||
// Start the server
|
||
server.begin();
|
||
}
|
||
|
||
void loop(){
|
||
|
||
}
|