#include <WiFi.h> // nacitanie kniznice pre Wi-Fi
#include <Wire.h>
#include <DHT.h> // použijeme Adafruit DHT knižnicu
#define DHTPIN 33 // pin, kde je pripojený senzor
#define DHTTYPE DHT11 // typ senzora
DHT MojSenzor(DHTPIN, DHTTYPE); // vytvorenie objektu DHT
const char* ssid = "xxxxxxxx";
const char* password = "xxxxxxxx";
WiFiServer server(80); // nastavenie web servera na port 80
String header;
unsigned long currentTime = millis();
unsigned long previousTime = 0;
const long timeoutTime = 2000;
void setup() {
Serial.begin(115200);
MojSenzor.begin();
bool status;
// pripojenie k sieti WiFI s idemtifikátor SSID a hesla
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Print local IP address and start web server
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
}
void loop(){
MojSenzor.read(33); // prečíta údaje zo senzoru DTH11 pripojeneho na pin G33
float teplota = MojSenzor.readTemperature(); // čítanie teploty
float vlhkost = MojSenzor.readHumidity(); // načítanie vlhkosti
WiFiClient client = server.available(); // sledovanie prichadzajucich klientov
if (client) { // Ak sa pripoji novy klient,
currentTime = millis();
previousTime = currentTime;
Serial.println("New Client."); // vypise spravu na seriovy post
String currentLine = ""; // vytvori String na ulozenie prichadzajucich dat od klienta
while (client.connected() && currentTime - previousTime <= timeoutTime) { // slucka, kym je client pripojeny
currentTime = millis();
if (client.available()) { // ak existuju byjty na citanie od klienta,
char c = client.read(); // precita sa bajt a
Serial.write(c); // vypise sa na seriovom monitore
header += c;
if (c == '\n') { // ak je bajt znakom noveho riadku
// ak je aktualny riadok prazdny, nasleduju za sebou dva znaky noveho riadku a
// to je koniec poziadavky od http klienta, preto sa posle odpoved
if (currentLine.length() == 0) {
// HTTP hlavicka vzdy zacina kodom odpovede (napr. HTTP/1.1 200 OK)
//a typom obsahu, aby klient vedel, co pride. Potom nasleduje prazny riadok:
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
// Zobrazenie webovej stranky HTML
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial- scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
// CSS styl tabulky
client.println("<style>body { text-align: center; font-family: \"Trebuchet MS\", Arial;}");
client.println("table { border-collapse: collapse; width:35%; margin-left:auto; margin-right:auto; }");
client.println("th { padding: 12px; background-color: #0043af; color: white; }");
client.println("tr { border: 1px solid #ddd; padding: 12px; }");
client.println("tr:hover { background-color: #bcbcbc; }");
client.println("td { border: none; padding: 12px; }");
client.println(".sensor { color:white; font-weight: bold; background-color: #bcbcbc; padding: 1px; }");
// Hlavicka webovej stranky
client.println("</style></head><body><h1>ESP32 with DHT11</h1>");
client.println("<table><tr><th>MEASUREMENT</th><th>VALUE</th></tr>");
client.println("<tr><td>Temp. Celsius</td><td><span class=\"sensor\">");
client.println(teplota);
client.println(" *C</span></td></tr>");
client.println("<tr><td>Temp. Fahrenheit</td><td><span class=\"sensor\">");
client.println(1.8 * teplota + 32);
client.println(" *F</span></td></tr>");
client.println("<tr><td>Humidity</td><td><span class=\"sensor\">");
client.println(vlhkost);
client.println(" %</span></td></tr>");
client.println("</body></html>");
// Odpoved http sa konci dalsim prazdnym riadkom
client.println();
// ukoncenie slucky while
break;
} else { // ak bol prijaty novy riadok, vymaze sa currentLine
currentLine = "";
}
} else if (c != '\r') { // ak bol prijaty iny znak, ako znak navratu, znak sa prida,
currentLine += c; // sa prida na koniec currentLine
}
}
}
// vymazanie premennej hlavicky
header = "";
// ukoncenie pripojenia
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}
}