0% found this document useful (0 votes)
7 views4 pages

ESP8266 Weather Station with LED Control

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views4 pages

ESP8266 Weather Station with LED Control

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

#include <ESP8266WebServer.

h>
#include <ESP8266WiFi.h>
#include <Wire.h>
#include "SSD1306Wire.h"
#include <SPI.h>
#include <WiFiManager.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define TRIGGER_PIN 0
#define SEALEVELPRESSURE_HPA (1016.8)

Adafruit_BME280 bme;
SSD1306Wire display(0x3c, SDA, SCL);
unsigned long delayTime;
float humidite;
float temperature ;
float pression;
float altitude ;
const char *ssid="Nathlebo";
const char *password="syl202122";
IPAddress IP(192,168,17,12);
IPAddress gateway(192,168,17,1);
IPAddress subnet(255,255,255,0);
ESP8266WebServer ServerWeb(80);

WiFiManager wm;
bool portalRunning = false;

const char index_html[] PROGMEM = R"=====(


<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Commande LED</title>
<script>
function refresh() {
fetch('/data')
.then(response => [Link]())
.then(data => {
[Link]('ledStatus').innerText = [Link];
[Link]('temperature').innerText = [Link];
[Link]('humidite').innerText = [Link];
[Link]('altitude').innerText = [Link];
[Link]('pression').innerText = [Link];
})
.catch(error => [Link]('Error fetching data:', error));
}

[Link] = function() {
refresh();
setInterval(refresh, 500);
};
</script>
</head>
<body>
<h1>Etat de la LED</h1>
<h2 id="ledStatus">%LED%</h2>
<h1>Commande de la LED</h1>
<a href="/SwitchLedOn">
<button>Allumer la LED</button>
</a>
<a href="/SwitchLedOff">
<button>Eteindre la LED</button>
</a>
<h1>Température</h1>
<h2 id="temperature">%temperature%</h2>
<h1>Humidité</h1>
<h2 id="humidite">%humidite%</h2>
<h1>Altitude</h1>
<h2 id="altitude">%altitude%</h2>
<h1>Pression</h1>
<h2 id="pression">%pression%</h2>
</body>
</html>
)=====";

void SwitchLedOn() {
digitalWrite(5,HIGH);
handleRoot();
}

void SwitchLedOff() {
digitalWrite(5,LOW);
handleRoot();
}

void handleRoot() {
String temp(reinterpret_cast<const __FlashStringHelper *>(index_html));
if(digitalRead(5)==HIGH)
[Link]("%LED%","LED Allumée");
else
[Link]("%LED%","LED Eteinte");
[Link]("%temperature%",String(temperature) + "°C");
[Link]("%humidite%",String(humidite) + "%");
[Link]("%altitude%",String(altitude) + "m");
[Link]("%pression%",String(pression) + "Pa");
[Link](200,"text/html",temp);
}

void setup() {
[Link](9600);
[Link](WIFI_STA);
while(![Link](ssid,password))
{
[Link](".");
}
[Link]();
[Link]();
[Link]();
while(!Serial); // time to get serial running
[Link](F("BME280 test"));

unsigned status;

status = [Link](0x76);
if (!status) {
[Link]("Could not find a valid BME280 sensor, check wiring,
address, sensor ID!");
[Link]("SensorID was: 0x"); [Link]([Link](),16);
[Link](" ID of 0xFF probably means a bad address, a BMP 180 or
BMP 085\n");
[Link](" ID of 0x56-0x58 represents a BMP 280,\n");
[Link](" ID of 0x60 represents a BME 280.\n");
[Link](" ID of 0x61 represents a BME 680.\n");
while (1) delay(10);
}

[Link]("-- Default Test --");


delayTime = 1000;

[Link]();

pinMode(5,OUTPUT);
[Link](IP,gateway,subnet);
[Link](ssid,password);

[Link]("/SwitchLedOn",SwitchLedOn);
[Link]("/SwitchLedOff",SwitchLedOff);
[Link]("/",handleRoot);
[Link]("/data", handleData);
[Link]("[Link]",handleRoot);

[Link]();
}

void handleData() {
String jsonData = "{";
jsonData += "\"ledStatus\": \"" + String(digitalRead(5) == HIGH ? "Allumée" :
"Eteinte") + "\",";
jsonData += "\"temperature\": \"" + String([Link]()) + "°C\",";
jsonData += "\"humidity\": \"" + String([Link]()) + "%\",";
jsonData += "\"altitude\": \"" + String([Link](SEALEVELPRESSURE_HPA))
+ " m\",";
jsonData += "\"pressure\": \"" + String([Link]()) + " Pa\"";
jsonData += "}";

[Link](200, "application/json", jsonData);


}
void loop() {
[Link]();
[Link](ArialMT_Plain_10);
[Link](0, 0, "Temperature : ");
[Link](74, 0, String([Link]()));
[Link](0, 10, "Humidite : ");
[Link](50, 10, String([Link]()));
[Link](0, 20, "Pression : ");
[Link](50, 20, String([Link]()));
[Link](0, 30, "Altitude : ");
[Link](50, 30, String([Link](SEALEVELPRESSURE_HPA)));
[Link]();

delay(500);

if(analogRead(A0)> 1000)
{
[Link]();
[Link]();
}

humidite = [Link]();
temperature = [Link]();
pression = [Link]();
altitude = [Link](SEALEVELPRESSURE_HPA);

[Link]();
}

You might also like