DHT11/12網路監測-ESP32


              

ESP32 溫溼度顯示計

  
    
溫度
    %TEMP% °C     
濕度
    %HUMI% %   

)===”;


其中有兩個函式一個是readTemp()和readHumi()是讀取溫度和濕度

String readTemp(){
  dht.temperature().getEvent(&event);
  if (isnan(event.temperature)) {
    Serial.println(F("Error reading temperature!"));
    return "--";
  }
  else {
    Serial.print(F("Temperature: "));
    Serial.print(float(event.temperature));
    Serial.println(F("°C"));
    return String(float(event.temperature));
  }
}

String readHumi(){
  dht.humidity().getEvent(&event);
  if (isnan(event.relative_humidity)) {
    Serial.println(F("Error reading humidity!"));
    return "--";
  }
  else {
    Serial.print(F("Humidity: "));
    Serial.print(float(event.relative_humidity));
    Serial.println(F("%"));
    return String(float(event.relative_humidity));
  }
}

這個函式意指如果讀到網頁請求的字串是TEMP就回傳readTemp()裡的溫度數值以字串回傳

如果網頁請求的字串是HUMI就回傳readHumi()裡的濕度數值並以字串回傳

String tmplProcessor(const String & var){
  if (var == "TEMP"){
    return readTemp();
  }else if (var == "HUMI"){
    return readHumi();
  }
  return String();
}

在void stup(){ }裡

先把esp32連到基地台的設制寫好

Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, password); Serial.print("基地台名稱: "); Serial.println(ssid);
while (WiFi.status() != WL_CONNECTED){
   delay(1000);
   Serial.println(".");
}
Serial.print("IP: "); Serial.println(WiFi.localIP());

剩下就是伺服器的回應方式

server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", indexHtml, tmplProcessor);
});

server.on("/TEMP", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", readTemp().c_str());
  });

server.on("/HUMI", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", readHumi().c_str());
  });
server.begin();

程式碼上傳後可以看在顯示的ip打開瀏覽器就會呈現如下:


文章作者: blairan
版權聲明: 本博客所有文章除特別聲明外,均採用 CC BY 4.0 許可協議。轉載請註明來源 blairan !
评论
  目錄