#include <ESP8266WiFi.h>
#include <Wire.h> // required by BME280 library
#include <BME280_t.h>
#include <ESP8266HTTPClient.h>
#define ASCII_ESC 27
#define MYALTITUDE 150.50
char bufout[10];
BME280<> BMESensor;
const char* ssid = "XXXXXXXX";
const char* password = "XXXXXXXXX";
long previousMillis = 0;
unsigned long currentMillis = 0;
long interval = 300000; // READING INTERVAL
String data;
//EthernetClient Eclient;
WiFiServer server(80);
void setup() {
Serial.begin(115200);
Wire.begin(0, 2); // initialize I2C that connects to sensor
BMESensor.begin();
delay(10);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
BMESensor.refresh(); // read current sensor data
sprintf(bufout, "%c[1;0H", ASCII_ESC);
Serial.print(bufout);
//Serial.write(27); // ESC command
//Serial.print("[2J"); // clear screen command
//Serial.write(27);
//Serial.print("[H");
Serial.print("Temperature: ");
Serial.print(BMESensor.temperature); // display temperature in Celsius
Serial.println("C");
Serial.print("Humidity: ");
Serial.print(BMESensor.humidity); // display humidity in %
Serial.println("%");
Serial.print("Pressure: ");
Serial.print(BMESensor.pressure / 100.0F); // display pressure in hPa
Serial.println("hPa");
float relativepressure = BMESensor.seaLevelForAltitude(MYALTITUDE);
Serial.print("RelPress: ");
Serial.print(relativepressure / 100.0F); // display relative pressure in hPa for given altitude
Serial.println("hPa");
Serial.print("Altitude: ");
Serial.print(BMESensor.pressureToAltitude(relativepressure)); // display altitude in m for given pressure
Serial.println("m");
delay(5000);
//***************************************************************
currentMillis = millis();
if (currentMillis - previousMillis > interval) { // READ ONLY ONCE PER INTERVAL
previousMillis = currentMillis;
String t = String(BMESensor.temperature, 2);
String h = String(BMESensor.humidity, 2);
String p = String( BMESensor.pressure);
data = "?temp1=" + t + "&hum1=" + h + "&pres1=" + p;
HTTPClient http;
Serial.print("[HTTP] begin...\n");
http.begin("http://www.xxxxxxxxxxxxxxxxxx.php"+data); //HTTP
Serial.print("[HTTP] GET...\n");
Serial.print("http://www.xxxxxxxxxxxxxxx.php");Serial.print(data);Serial.print("\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
}
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
while (!client.available()) {
delay(1);
}
// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head><META HTTP-EQUIV=\"refresh\" CONTENT=\"10\"></head><body>");
client.println("Mesures du <SCRIPT LANGUAGE=\"JavaScript\"> var maintenant=new Date();document.write(maintenant);</SCRIPT>: <br>");
client.println("Température:");
client.println(BMESensor.temperature);
client.println("°C<br>");
client.println("Humidité: ");
client.println(BMESensor.humidity); // display humidity in %
client.println("%<br>");
client.println("Pression: ");
client.println(BMESensor.pressure / 100.0F); // display pressure in hPa
client.println("hPa");
client.println("</body></html>");
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}