// Load Wi-Fi library
#include "WiFiEsp.h" // https://github.com/bportaluri/WiFiEsp
#include <LPS22HBSensor.h>
#define I2C2_SCL PB10
#define I2C2_SDA PB11
// on défini une 2eme com serie en D2 et D8 pour communiquer avec l'ESP
HardwareSerial ESP(D0, D1); // RX, TX
char ssid[] = "XXXXX"; // Votre réseau wifi
char pass[] = "YYYYY"; // Votre mdp du réseau wifi
int status = WL_IDLE_STATUS; // l'état du réseau wifi
const char* serveur_perso = "192.168.0.57"; // adresse ip du serveur distant
const unsigned int httpPort = 80; // port du serveur distant
WiFiEspServer serveur(80); // On definit le serveur web (celui de l'esp) sur le port 80
float pressure, temperature; // variable pour stocker les datas
LPS22HBSensor *PressTemp; // On definit la lecture du capteur
TwoWire *dev_i2c; // Le port i2c
unsigned long previousMillis = 0; // varaible pour millis
const long interval = 10000; // interval pour millis
void setup() {
Serial.begin(115200); // On démmarre la com série avec le pc a 115200 baud
ESP.begin(115200); // On démmarre la com série avec l'ESP a 115200 baud
WiFi.init(&ESP); // On initialisle la connection au réseau
// On test si on a le réseau à travers l'esp
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("Je tourve pas l'ESP");
while (true); // On ne continue pas
}
// On essaye de se connécter au réseau wifi
while ( status != WL_CONNECTED) {
Serial.print("J'essaye de me connecter au réseau wifi : ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
}
// On affiche les infos de connexions
Serial.print("Connécté à : ");
Serial.println(WiFi.SSID());
IPAddress ip = WiFi.localIP();
Serial.print("Mon ip est : ");
Serial.println(ip);
// on démmarre le serveur web
serveur.begin();
// Initialize I2C bus.
dev_i2c = new TwoWire(I2C2_SDA, I2C2_SCL);
dev_i2c->begin();
// Initlialize components.
PressTemp = new LPS22HBSensor(dev_i2c);
PressTemp->Enable();
}
void loop(){
meteo();
}
void meteo(){
// On stock le temps écoulé depuis le début du programme dans la variable currentMillis
unsigned long currentMillis = millis();
// si le temps actuel - le temps précédent dépasse l'interval
if (currentMillis - previousMillis >= interval) {
previousMillis = millis(); // On réinitialise le compteur
// On lit le capteur
PressTemp->GetPressure(&pressure);
PressTemp->GetTemperature(&temperature);
Serial.print("Pres[hPa]: ");
Serial.print(pressure, 2);
Serial.print(" | Temp[C]: ");
Serial.println(temperature, 2);
Serial.print("connection au serveur web : ");
Serial.print(serveur_perso);
Serial.print(":");
// on essaye de se connecter au serveur distant
WiFiEspClient client = serveur.available();
if (!client.connect(serveur_perso, httpPort)) {
Serial.println("échec de la connexion");
return;
}
// on appelle la page meteo.php (qui est dans le dossier test) avec les datas en mémoire
Serial.println("envoye des data meteo");
// Envoi de toutes ces datas par l'URL et par GET au fichier meteo.php sur le serveur (dans le dossier test)
client.print(String("GET /test/meteo.php?temp=") + String(temperature) + "&pression=" + String(pressure) + " HTTP/1.1\r\n" +
"Host: " + serveur_perso + "\r\n" + "Connection: close\r\n\r\n");
Serial.print("datas envoyées : ");
// on lit le retour de la requète HTTP et on l'affiche dans la com serie du pc
String line = client.readStringUntil('\r');
Serial.println(line);
// on se deconnecte
Serial.println("fermeture de la connection");
client.stop();
Serial.println();
}
}