#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include "Adafruit_BMP280.h"
#include "Adafruit_HTU21DF.h"
// **************************************************************
//
// ESP-12E(LoLin) BMP280
//
// 3V --- VCC
// G --- GND
// D1 --- SDA
// D2 --- SCL
//
// **************************************************************
// EPS-01 SDA - GPIO2(D ), SCL - GPIO3(RX)
// EPS-12 SDA - GPIO5(D1), SCL - GPIO4(D2)
#define SDA 5
#define SCL 4
#define BMP280_ADRESA (0x77)
Adafruit_BMP280 bmp;
Adafruit_HTU21DF htu;
// Wi-Fi Settings
const char* ssid = "REPLACE_WITH_YOUR_SSID"; // Nahradte vasim jmenem site SSID
const char* password = "REPLACE_WITH_YOUR_PASSWORD"; // Nahradte heslem do vasi site
#define TIME_INTERVAL 1000
#define nadmorskaVyska 510
#define korekce (nadmorskaVyska / 8.3)
float Temperature, Pressure, Humidity;
ESP8266WebServer server(80);
//*********************************************************************
String html = "";
void GenerateHTML()
{
html="";
html+= "<!DOCTYPE html>\n";
html+= "<html>\n";
html+= "<head>\n";
html+= "<meta http-equiv='content-type' content='text/html; charset=utf-8'>\n";
html+= "<title>IoT</title>\n";
html+= "<style>\n";
html+= " html, body {height: 100%; font:100 12px/1.3 Helvetica, Arial, sans-serif; padding-bottom:10px;}\n";
html+= " table {font-size: 32px; margin: 10px; border-collapse:collapse; border: solid 1px black;}\n";
html+= " td, th {padding: 10px;}\n";
html+= " th {background-color: lightgray;}\n";
html+= " .r {text-align: right;}\n";
html+= "</style>\n";
html+= "</head>\n";
html+= "\n";
html+= "<body>\n";
html+= "<table>\n";
html+= "<tr><th colspan=3>Lipnice nad Sázavou</th></tr>\n";
html+= (String)"<tr><td>Teplota: </td><td class=r>"+Temperature+"</td><td>°C</td></tr>\n";
html+= (String)"<tr><td>Tlak: </td><td class=r>"+Pressure+"</td><td>hPa</td></tr>\n";
html+= (String)"<tr><td>Tlak přepočtený na hladinu moře: </td><td class=r>"+(Pressure + korekce)+"</td><td>hPa</td></tr>\n";
html+= (String)"<tr><td>Relativní vlhkost vzduchu: </td><td class=r>"+Humidity+"</td><td>%</td></tr>\n";
html+= "</table>\n";
html+= "</body>\n";
html+= "</html>\n";
}
//**********************************************************************
void handleRoot() {
GenerateHTML();
server.send(200, "text/html", html);
}
//************************************************************************
void handleNotFound(){
server.send(200, "text/plain", "Invalid page");
}
//***************************************************************
void setup(void){
Serial.begin(115200);
Wire.begin(SDA, SCL);
if (!bmp.begin(BMP280_ADRESA)) {
Serial.println("BMP280 senzor nenalezen, zkontrolujte zapojeni!");
while (1);
}
htu.begin();
WiFi.mode(WIFI_STA);
WiFi.persistent(false);
WiFi.begin(ssid, password);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", handleRoot);
server.onNotFound(handleNotFound);
server.begin();
Serial.println("HTTP server started");
}
//*********************************************************************
uint32_t timeStamp = millis() - TIME_INTERVAL;
void loop(void){
if (millis() - timeStamp > TIME_INTERVAL) {
timeStamp += TIME_INTERVAL;
Temperature = bmp.readTemperature();
Pressure = bmp.readPressure() / 100.00;
Humidity = htu.readHumidity();
}
server.handleClient();
}