#include #include #include #include #include #include // ================== CHANGE THESE ================== const char* ssid = "Bertovic"; const char* password = "18072019"; const char* mdnsName = "myhome"; const char* ntpServer = "pool.ntp.org"; const long gmtOffset_sec = 3600; const int daylightOffset_sec = 0; // BMP180 I2C pins (recommended ESP32 defaults) #define SDA_PIN 7 #define SCL_PIN 6 // ================================================== WebServer server(80); Adafruit_BMP085 bmp; bool bmpOk = false; float tempC = NAN; float press_hPa = NAN; unsigned long lastRead = 0; // ---------- TIME ---------- String getTimeString() { struct tm t; if (!getLocalTime(&t)) return "--:--:--"; char b[16]; strftime(b, sizeof(b), "%H:%M:%S", &t); return String(b); } String getDateString() { struct tm t; if (!getLocalTime(&t)) return ""; char b[64]; strftime(b, sizeof(b), "%A, %d %B %Y", &t); return String(b); } // ---------- SENSOR ---------- void updateSensor() { if (!bmpOk) return; if (millis() - lastRead < 1000) return; lastRead = millis(); tempC = bmp.readTemperature(); press_hPa = bmp.readPressure() / 100.0f; } String getTemp() { updateSensor(); if (!bmpOk || isnan(tempC)) return "--.- °C"; char b[16]; snprintf(b, sizeof(b), "%.1f °C", tempC); return String(b); } String getPress() { updateSensor(); if (!bmpOk || isnan(press_hPa)) return "----.- hPa"; char b[20]; snprintf(b, sizeof(b), "%.1f hPa", press_hPa); return String(b); } // ---------- WEB ---------- void handleRoot() { String page = R"rawliteral( ESP32 Ambient
Indoor climate
--.- °C
----.- hPa
--:--:--
Details
Temperature
Pressure
Time
Date
)rawliteral"; server.send(200,"text/html",page); } void setup(){ Serial.begin(115200); Wire.begin(SDA_PIN,SCL_PIN); bmpOk = bmp.begin(); WiFi.begin(ssid,password); while(WiFi.status()!=WL_CONNECTED) delay(500); MDNS.begin(mdnsName); configTime(gmtOffset_sec,daylightOffset_sec,ntpServer); server.on("/",handleRoot); server.on("/time",[](){server.send(200,"text/plain",getTimeString());}); server.on("/date",[](){server.send(200,"text/plain",getDateString());}); server.on("/temp",[](){server.send(200,"text/plain",getTemp());}); server.on("/press",[](){server.send(200,"text/plain",getPress());}); server.begin(); } void loop(){ server.handleClient(); updateSensor(); }