// import des librairies
#include <ESP8266WiFi.h>
#include "DHT.h" // https://github.com/adafruit/DHT-sensor-library
// Dé-commentez la ligne qui correspond à votre capteur
//#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
// Changer vos SSID et Password
const char* ssid = "XXXX";
const char* password = "YYYY";
// On donne l'ip du serveur distant ou son nom d'hote, ici mon NAS et le port du serveur web.
const char* serveur = "192.168.0.57";
const int httpPort = 80;
// on defini le pin sur lequel est branché la sonde
uint8_t DHTPin = 4; // D2 --> GPIO4
// on configure la sonde DHT.
DHT dht(DHTPin, DHTTYPE);
// on definit 2 variables de type float pour stocker nos datas
float Temperature;
float Humidity;
// on definit 2 variables, un interval de 10 secondes et un compteur
const long interval = 10000;
unsigned long previousMillis = 0;
// le setup
void setup() {
Serial.begin(115200); // On demarre la com serie
Serial.println("");
Serial.println("");
pinMode(DHTPin, INPUT); // On défini le GPIO utilisé par la sonde en entrée
dht.begin(); // On initialise la sonde
Serial.print("Connexion à "); // On précise sur la com série qu'on va se connecter
Serial.println(ssid); // Au ssid
WiFi.begin(ssid, password); // On se connecte au Wifi
while (WiFi.status() != WL_CONNECTED) { // Tant qu'on est pas connecter on écrit un point toutes les seconde
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("");
Serial.print("WiFi connecté, IP : "); // On précise dans la com série qu'on est connecté
Serial.println(WiFi.localIP()); // On affiche l'ip dans la com série
}
// la boucle
void loop() {
readTempature(); // la lecture qui se produit toutes les 10s (interval = 10000)
}
// la fonction qui lit la sondes et envoie les datas au serveur distant
void readTempature() {
unsigned long currentMillis = millis(); // définit une variable pour stocker le temps actuel
if (currentMillis - previousMillis >= interval) { // si on est a 10s, ou on dépasse 10s.
previousMillis = currentMillis; // on reset le compteur
// On lit la sonde
Humidity = dht.readHumidity();
Temperature = dht.readTemperature();
// si pas de lecture
if (isnan(Humidity) || isnan(Temperature)) {
Serial.println("Echec de lecture !");
return;
}
// si la lecture est ok on affiche les datas
Serial.print("Température : ");
Serial.print(Temperature);
Serial.println(" °C");
Serial.print("Humiditée : ");
Serial.print(Humidity);
Serial.println(" %");
// Création de la connexion TCP
///////// connexion et envoi des datas /////////////
WiFiClient client;
if (!client.connect(serveur, httpPort)) {
Serial.println("échec de la connexion");
return;
}
// Envoi de toutes ces datas par l'URL et par GET au fichier data.php sur le serveur (dans le dossier test)
client.print(String("GET /test/data.php?temp=") + String(float (Temperature)) + "&humi=" + String(float(Humidity)) +
" HTTP/1.1\r\n" + "Host: " + serveur + "\r\n" + "Connection: close\r\n\r\n");
//////////////////////////////////////////////////////
}
}