/*
* html.cpp
*
* ESP8266 / ESP32 Environmental Sensor
*
* ----------------------------------------------------------------------------
* "THE BEER-WARE LICENSE" (Revision 42):
* \n");
message += F("Version: ");
message += ESP_ENV_VERSION;
message += F("\n ");
message += F("Reset reason: ");
message += ESP.getResetReason();
message += F(" ");
message += F("Free heap: ");
message += String(ESP.getFreeHeap() / 1024.0);
message += F("k \n");
if (found_bme1) {
message += F("BME280 Low:");
message += F("\n" ESP_PLATFORM_NAME " Environment Sensor
");
message += F("\n
\n");
message += F("Location: ");
message += SENSOR_LOCATION;
message += F("\n
\n");
message += F("ID: ");
message += SENSOR_ID;
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
message += F("\n
\n");
message += F("MAC: ");
message += WiFi.macAddress();
#endif
message += F("\n
");
message += F("Free heap: ");
message += String(ESP.getFreeHeap());
message += F(" (");
message += String(ESP.getHeapFragmentation());
message += F("% fragmentation)");
message += F("
");
message += F("Free sketch space: ");
message += String(ESP.getFreeSketchSpace());
message += F("
");
message += F("Flash chip real size: ");
message += String(ESP.getFlashChipRealSize());
if (ESP.getFlashChipSize() != ESP.getFlashChipRealSize()) {
message += F("
");
message += F("WARNING: sdk chip size (");
message += (ESP.getFlashChipSize());
message += F(") does not match!");
}
message += F("
");
message += F("Free sketch space: ");
message += String(ESP.getFreeSketchSpace() / 1024.0);
message += F("k
");
message += F("Flash chip size: ");
message += String(ESP.getFlashChipSize() / 1024.0);
message += F("k
");
#endif
message += F("\n
\n");
message += F("Temperature: ");
message += String(bme1_temp());
message += F("\n
\n");
message += F("Humidity: ");
message += String(bme1_humid());
message += F("\n
\n");
message += F("Pressure: ");
message += String(bme1_pressure());
message += F("\n
\n");
message += F("Offset: ");
message += String(config.bme1_temp_off);
message += F("\n
\n");
message += F("
\n");
if (found_bme2) {
message += F("BME280 High:");
message += F("\n
\n");
message += F("Temperature: ");
message += String(bme2_temp());
message += F("\n
\n");
message += F("Humidity: ");
message += String(bme2_humid());
message += F("\n
\n");
message += F("Pressure: ");
message += String(bme2_pressure());
message += F("\n
\n");
message += F("Offset: ");
message += String(config.bme2_temp_off);
message += F("\n
\n");
message += F("
\n");
if (found_sht) {
message += F("SHT21:");
message += F("\n
\n");
message += F("Temperature: ");
message += String(sht_temp());
message += F("\n
\n");
message += F("Humidity: ");
message += String(sht_humid());
message += F("\n
\n");
message += F("Offset: ");
message += String(config.sht_temp_off);
message += F("\n
\n");
message += F("
\n");
if (found_ccs1) {
message += F("CCS811 Low:");
message += F("\n
\n");
message += F("eCO2: ");
message += String(ccs1_eco2());
message += F("ppm");
message += F("\n
\n");
message += F("TVOC: ");
message += String(ccs1_tvoc());
message += F("ppb");
if (!ccs1_data_valid) {
message += F("\n
\n");
message += F("Data invalid (");
message += String(ccs1_error_code);
message += F(")!");
}
} else {
message += F("CCS811 (Low) not connected!");
}
message += F("\n
\n");
if (found_ccs2) {
message += F("CCS811 High:");
message += F("\n
\n");
message += F("eCO2: ");
message += String(ccs2_eco2());
message += F("ppm");
message += F("\n
\n");
message += F("TVOC: ");
message += String(ccs2_tvoc());
message += F("ppb");
if (!ccs2_data_valid) {
message += F("\n
\n");
message += F("Data invalid (");
message += String(ccs2_error_code);
message += F(")!");
}
} else {
message += F("CCS811 (High) not connected!");
}
message += F("\n
\n");
message += F("Sensor ");
message += String(i + 1);
message += F(":\n
\n");
message += F("Moisture: ");
message += String(moisture);
message += F(" / ");
message += String(moisture_max());
message += F("\n
\n"); message += F("No moisture sensors configured!"); message += F("\n
\n"); } ARDUINO_SEND_PARTIAL_PAGE(); #endif // FEATURE_MOISTURE #ifdef FEATURE_RELAIS message += F("\n\n");
for (int i = 0; i < relais_count(); i++) {
message += String(F("Relais ")) + String(i) + String(F(" On (")) + relais_name(i) + String(F(")
\n"));
message += String(F("Relais ")) + String(i) + String(F(" Off (")) + relais_name(i) + String(F(")
\n"));
}
message += String(F("All Relais On
\n"));
message += String(F("All Relais Off
\n"));
message += F("
"); message += F("Turned Relais "); message += (id < relais_count()) ? String(id) : String(F("1-4")); message += (mode ? String(F(" On")) : String(F(" Off"))); message += F("
\n"); } message += F("\n\n");
for (int i = 0; i < relais_count(); i++) {
message += String(F("Relais ")) + String(i) + String(F(" (")) + relais_name(i) + String(F(") = ")) + (relais_get(i) ? String(F("On")) : String(F("Off"))) + String(F("
\n"));
}
message += F("
New calibration value saved!
\n"); } #if ! defined(ARDUINO_ARCH_AVR) message += F(""); message += F("Try /update for OTA firmware updates!"); message += F("
"); message += F("Try /reset to reset ESP!"); message += F("
"); #endif message += F(""); #ifdef ENABLE_INFLUXDB_LOGGING message += F("InfluxDB: "); message += INFLUXDB_DATABASE; message += F(" @ "); message += INFLUXDB_HOST; message += F(":"); message += String(INFLUXDB_PORT); #else message += F("InfluxDB logging not enabled!"); #endif message += F("
"); message += F("Uptime: "); message += String(millis() / 1000); message += F(" sec.
"); #if ! defined(ARDUINO_ARCH_AVR) message += F("Debug Log:
"); message += F(""); message += debug.getBuffer(); message += F("
Resetting in 2s...
"); message += F("Auto redirect in 10s. Please retry manually on error.
"); message += F("Go back to start.
"); message += F(""); server.send(200, "text/html", message); delay(2000); ESP.restart(); } #endif