Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Warin84 */
- /* Youtube */
- /* https://www.youtube.com/channel/UCgO8rRzYeFysD-6TA9m7EUQ */
- ///////////////////////////////////////
- // Mode automatique/manuel = V20 //
- // Pin SHT21 SDA = D3 SCL = D4 //
- // Pin relay lampe = D6 //
- // Température = V6 //
- // Humidité = V5 //
- // Timer semaine = V21 //
- // Timer week-end = V22 //
- ///////////////////////////////
- //On défini les librairies utilisées
- #define BLYNK_PRINT Serial // ajout défini le moniteur série BLYNK
- #include <ESP8266WiFi.h> // ajout de la librairie ESP8266WIFI
- #include <ESP8266mDNS.h> // ajout de la librairie ESP8266m
- #include <WiFiUdp.h> // ajout de la librairie WifiUpdate
- #include <ArduinoOTA.h> // ajout de la librairie OTA
- #include <BlynkSimpleEsp8266.h> // ajout de la librairie BLYNK
- #include <Wire.h> // ajout de la librairie de gestion I2C
- #include <sht21.h> // ajout de la librairie de gestion du capteur SHT21
- #include <WidgetRTC.h> // ajout de la librairie Time WIdgetRTC
- //On défini les couleurs
- #define BLYNK_GREEN "#23C48E" // couleur vert
- #define BLYNK_BLUE "#04C0F8" // couleur bleu
- #define BLYNK_YELLOW "#ED9D00" // couleur orange
- #define BLYNK_RED "#D3435C" // couleur rouge
- #define BLYNK_DARK_BLUE "#5F7CD8" // couleur bleu foncé
- char auth[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // on récupére le "Auth Token" à partir de l'application BLYNK
- // On saisit les informations de connexion pour se connecter en WIFI
- char ssid[] = "XXXXXXXXXXXXXXXXXX"; // Nom du réseau Wifi
- char pass[] = "XXXXXXXXXXXXXXXXXX"; // Mot de passe du réseau Wifi
- // Variable météo
- float t; //On initialise la variable qui contiendra la température
- float h; //On initialise la variable qui contiendra l'humidité
- int automanuel; //On initialise la variable qui contiendra le mode automatique/mannuel
- // Variable temps
- long starttime; // start time in seconds
- long stoptime; // stop time in seconds
- long timenow; // time now in seconds
- // déclaration des broches de communication
- int sda = D3; // SDA données
- int scl = D4; // SCL horloge
- // SHT21 HTU21D
- sht21 SHT21; // création d'une instance
- //on initialise le timer BLYNK
- BlynkTimer timer; // Timer "void"
- // On initialise les Widget
- WidgetLED led1(V7); //LED chaudière
- WidgetRTC rtc; // Temps (heure du serveur)
- // On synchronise les timers (semaine = V21 et week-end = V22) et les boutons (lampe = V4 et mode auto/manuel = V20)
- void timeinput()
- {
- Blynk.syncVirtual(V4, V20, V21,V22);
- }
- //On créer la boucle qui permet de lire la température et l'humidité d'après le SHT21 (HTU21D)
- void sendSensor()
- {
- //On définit les variable qui contiendront les données météo
- t = SHT21.lecture_temperature(); // Température
- h = SHT21.lecture_humidite(); // Humidité
- //On envoie les donnés des variables à des boutons virtuels si les valeurs sont supérieurs à 5
- if (h > 5){
- Blynk.virtualWrite(V5, h); // Humidité = V5
- }
- if (t > 5 ){
- Blynk.virtualWrite(V6, t); // Température = V6
- }
- }
- //On relie le bouton virtuel V4 avec le relay
- BLYNK_WRITE(V4)
- {
- //Si le bouton V4 est en position ON
- if (param.asInt() == 1) {
- //On allume la LED d'état de la lampe sur l'application
- led1.on();
- //On allume le relay
- digitalWrite(D6,LOW);
- }
- //Si le bouton V4 est en position OFF
- else {
- //On éteind la LED d'état de la lampe sur l'application
- led1.off();
- //On éteint le relay
- digitalWrite(D6, HIGH);
- }
- }
- // Bouton auto/manuel
- BLYNK_WRITE(V20)
- {
- automanuel = param.asInt(); // On récupère la position du bouton
- }
- //Timer semaine
- BLYNK_WRITE(V21) // Timpe Input Widget
- {
- TimeInputParam t(param); // Le temps est stocké dans la variable t
- if (automanuel ==1){ // Si le bouton V20 est sur la position automatique
- int dayadjustment = -1; // On fait un ajustement de -1 jour
- if(weekday() == 1){
- dayadjustment = 6; // On en a besoin car Dimanche est le jour 1 pour la library TimeLib mais c'est le jour 7 pour la librairy BLYNK
- }
- if(t.isWeekdaySelected(weekday() + dayadjustment)){ // Si aujourd'hui est un jour sélectionné sur le widget Time Input
- timenow = ((hour() * 3600) + (minute() * 60) + second()); // On récupère l'heure du jour
- starttime = (t.getStartHour() * 3600) + (t.getStartMinute() * 60); // On récupère l'heure de départ du timer
- if(timenow >= starttime){ // Si l'heure actuelle correspond à l'heure de départ du timer
- if(timenow <= starttime + 10){ // Si l'heure actuelle est comprise entre "l'heure de départ du Timer" et "l'heure de départ du timer + 10 secondes"
- Blynk.virtualWrite(V4, 1); // On allume la lumière
- }
- }
- else{}
- stoptime = (t.getStopHour() * 3600) + (t.getStopMinute() * 60); // On récupère l'heure d'arrivée du timer
- if(timenow >= stoptime){ // Si l'heure actuelle correspond à l'heure d'arrivée du timer
- if(timenow <= stoptime + 10){ // Si l'heure actuelle est comprise entre "l'heure de départ du Timer" et "l'heure de départ du timer + 10 secondes"
- Blynk.virtualWrite(V4, 0); // On éteint la lumière
- }
- }
- else{}
- }
- }
- else{}
- }
- //Timer semaine
- BLYNK_WRITE(V22) // Timpe Input Widget
- {
- TimeInputParam t(param); // Le temps est stocké dans la variable t
- if (automanuel ==1){ // Si le bouton V20 est sur la position automatique
- int dayadjustment = -1; // On fait un ajustement de -1 jour
- if(weekday() == 1){
- dayadjustment = 6; // On en a besoin car Dimanche est le jour 1 pour la library TimeLib mais c'est le jour 7 pour la librairy BLYNK
- }
- if(t.isWeekdaySelected(weekday() + dayadjustment)){ // Si aujourd'hui est un jour sélectionné sur le widget Time Input
- timenow = ((hour() * 3600) + (minute() * 60) + second()); // On récupère l'heure du jour
- starttime = (t.getStartHour() * 3600) + (t.getStartMinute() * 60); // On récupère l'heure de départ du timer
- if(timenow >= starttime){ // Si l'heure actuelle correspond à l'heure de départ du timer
- if(timenow <= starttime + 10){ // Si l'heure actuelle est comprise entre "l'heure de départ du Timer" et "l'heure de départ du timer + 10 secondes"
- Blynk.virtualWrite(V4, 1); // On allume la lumière
- }
- }
- else{}
- stoptime = (t.getStopHour() * 3600) + (t.getStopMinute() * 60); // On récupère l'heure d'arrivée du timer
- if(timenow >= stoptime){ // Si l'heure actuelle correspond à l'heure d'arrivée du timer
- if(timenow <= stoptime + 10){ // Si l'heure actuelle est comprise entre "l'heure de départ du Timer" et "l'heure de départ du timer + 10 secondes"
- Blynk.virtualWrite(V4, 0); // On éteint la lumière
- }
- }
- else{}
- }
- }
- else{}
- }
- // BLYNK Connexionn
- BLYNK_CONNECTED()
- { // Quand Blynk se connecte
- Blynk.syncVirtual(V4, V7, V20, V21, V22); // On synchronise les boutons, les LEDs et les timers
- }
- //On initialise l'appareil
- void setup() // Configuration
- {
- pinMode(D6, OUTPUT); // On définit la commande du relay de la lumièree en sortie
- digitalWrite(D6, HIGH); // On définit le premier état du relay de la lumière à l'état Bas
- delay(1000); // On patiente 1 seconde
- Serial.begin(9600); // On allume le moniteur série
- Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,32), 8080); //On se connect à BLYNK à travers notre WIFI et notre serveur
- rtc.begin(); // On démarre l'horloge
- SHT21.begin(sda, scl); // On démarre la connecion avec le SHT21 (HTU21D)
- WiFi.begin(ssid, pass); // On se connecte au Wifi
- ArduinoOTA.setHostname("Hall d'entree"); // On défini le nom de l'appareil
- ArduinoOTA.setPassword("XXXXXXXXXXXX"); // On défini son mot de passe
- ArduinoOTA.begin(); // On initialise l'OTA
- timer.setInterval(1000L, sendSensor); //On définit le temps de répétition de la boucle de récupération de données du SHT21 à 1 seconde
- timer.setInterval(1000L, timeinput); //On définit le temps de répétition de la boucle TimeInput à 1 seconde
- }
- //La boucle se répète indéfiniment
- void loop() // Boucle infini
- {
- ArduinoOTA.handle(); // On cherche une Mise à Jour en OTA
- Blynk.run(); // On démarre BLYNK
- timer.run(); // On démarre le timer
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement