Advertisement
Warin84

Untitled

Jun 20th, 2019
521
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 10.52 KB | None | 0 0
  1. /* Warin84 */
  2.  
  3. /* Youtube */
  4. /* https://www.youtube.com/channel/UCgO8rRzYeFysD-6TA9m7EUQ */
  5.  
  6. ///////////////////////////////////////
  7. // Mode automatique/manuel = V20    //
  8. // Pin SHT21 SDA = D3  SCL = D4    //
  9. // Pin relay lampe = D6           //
  10. // Température = V6              //
  11. // Humidité = V5                //
  12. // Timer semaine = V21         //
  13. // Timer week-end = V22       //
  14. ///////////////////////////////
  15.  
  16. //On défini les librairies utilisées
  17. #define BLYNK_PRINT Serial          // ajout défini le moniteur série BLYNK
  18. #include <ESP8266WiFi.h>            // ajout de la librairie ESP8266WIFI
  19. #include <ESP8266mDNS.h>            // ajout de la librairie ESP8266m
  20. #include <WiFiUdp.h>                // ajout de la librairie WifiUpdate
  21. #include <ArduinoOTA.h>             // ajout de la librairie OTA
  22. #include <BlynkSimpleEsp8266.h>     // ajout de la librairie BLYNK
  23. #include <Wire.h>                   // ajout de la librairie de gestion I2C
  24. #include <sht21.h>                  // ajout de la librairie de gestion du capteur SHT21
  25. #include <WidgetRTC.h>              // ajout de la librairie Time WIdgetRTC
  26.  
  27. //On défini les couleurs
  28. #define BLYNK_GREEN     "#23C48E"      // couleur vert
  29. #define BLYNK_BLUE      "#04C0F8"      // couleur bleu
  30. #define BLYNK_YELLOW    "#ED9D00"      // couleur orange
  31. #define BLYNK_RED       "#D3435C"      // couleur rouge
  32. #define BLYNK_DARK_BLUE "#5F7CD8"      // couleur bleu foncé
  33.  
  34.  
  35. char auth[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";     // on récupére le "Auth Token" à partir de l'application BLYNK
  36.  
  37. // On saisit les informations de connexion pour se connecter en WIFI
  38. char ssid[] = "XXXXXXXXXXXXXXXXXX";      // Nom du réseau Wifi
  39. char pass[] = "XXXXXXXXXXXXXXXXXX";      // Mot de passe du réseau Wifi
  40.  
  41. // Variable météo
  42. float t;            //On initialise la variable qui contiendra la température
  43. float h;            //On initialise la variable qui contiendra l'humidité
  44. int automanuel;     //On initialise la variable qui contiendra le mode automatique/mannuel
  45.  
  46. // Variable temps
  47. long starttime;         // start time in seconds
  48. long stoptime;          // stop  time in seconds
  49. long timenow;           // time now in seconds
  50.  
  51. // déclaration des broches de communication
  52. int sda = D3;     // SDA données
  53. int scl = D4;     // SCL horloge
  54.  
  55. // SHT21 HTU21D
  56. sht21 SHT21;  // création d'une instance
  57.  
  58. //on initialise le timer BLYNK
  59. BlynkTimer timer;   // Timer "void"
  60.  
  61. // On initialise les Widget
  62. WidgetLED led1(V7);     //LED chaudière
  63. WidgetRTC rtc;          // Temps (heure du serveur)
  64.  
  65. // On synchronise les timers (semaine = V21 et week-end = V22) et les boutons (lampe = V4 et mode auto/manuel = V20)
  66. void timeinput()
  67. {
  68.   Blynk.syncVirtual(V4, V20, V21,V22);
  69. }
  70.  
  71. //On créer la boucle qui permet de lire la température et l'humidité d'après le SHT21 (HTU21D)
  72. void sendSensor()
  73. {
  74.   //On définit les variable qui contiendront les données météo
  75.   t = SHT21.lecture_temperature();      // Température
  76.   h = SHT21.lecture_humidite();             // Humidité
  77.  
  78.   //On envoie les donnés des variables à des boutons virtuels si les valeurs sont supérieurs à 5
  79.   if (h > 5){
  80.     Blynk.virtualWrite(V5, h);    // Humidité = V5
  81.   }
  82.   if (t > 5 ){
  83.     Blynk.virtualWrite(V6, t);    // Température = V6
  84.   }
  85. }
  86.  
  87. //On relie le bouton virtuel V4 avec le relay
  88. BLYNK_WRITE(V4)
  89. {
  90.   //Si le bouton V4 est en position ON
  91.   if (param.asInt() == 1) {
  92.     //On allume la LED d'état de la lampe sur l'application
  93.     led1.on();
  94.     //On allume le relay
  95.     digitalWrite(D6,LOW);
  96.   }
  97.   //Si le bouton V4 est en position OFF
  98.   else {
  99.     //On éteind la LED d'état de la lampe sur l'application
  100.     led1.off();
  101.     //On éteint le relay
  102.     digitalWrite(D6, HIGH);
  103.   }
  104. }
  105.  
  106. // Bouton auto/manuel
  107. BLYNK_WRITE(V20)
  108. {
  109.   automanuel = param.asInt();     // On récupère la position du bouton
  110. }
  111.  
  112. //Timer semaine
  113. BLYNK_WRITE(V21)                                              // Timpe Input Widget
  114. {
  115.   TimeInputParam t(param);                                                      // Le temps est stocké dans la variable t
  116.  
  117. if (automanuel ==1){                                                            // Si le bouton V20 est sur la position automatique
  118.  
  119.   int dayadjustment = -1;                                                       // On fait un ajustement de -1 jour
  120.     if(weekday() == 1){
  121.     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
  122.     }
  123.     if(t.isWeekdaySelected(weekday() + dayadjustment)){                         // Si aujourd'hui est un jour sélectionné sur le widget Time Input
  124.       timenow = ((hour() * 3600) + (minute() * 60) + second());                      // On récupère l'heure du jour
  125.       starttime = (t.getStartHour() * 3600) + (t.getStartMinute() * 60);             // On récupère l'heure de départ du timer
  126.  
  127.       if(timenow >= starttime){                                                      // Si l'heure actuelle correspond à l'heure de départ du timer
  128.         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"
  129.           Blynk.virtualWrite(V4, 1);                                                            // On allume la lumière
  130.         }      
  131.       }
  132.       else{}
  133.    
  134.       stoptime = (t.getStopHour() * 3600) + (t.getStopMinute() * 60);                // On récupère l'heure d'arrivée du timer
  135.  
  136.       if(timenow >= stoptime){                                                       // Si l'heure actuelle correspond à l'heure d'arrivée du timer
  137.         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"
  138.           Blynk.virtualWrite(V4, 0);                                                            // On éteint la lumière
  139.         }              
  140.       }
  141.       else{}
  142.     }
  143. }
  144. else{}
  145. }
  146.  
  147. //Timer semaine
  148. BLYNK_WRITE(V22)                                              // Timpe Input Widget
  149. {
  150.   TimeInputParam t(param);                                                      // Le temps est stocké dans la variable t
  151.  
  152. if (automanuel ==1){                                                            // Si le bouton V20 est sur la position automatique
  153.  
  154.   int dayadjustment = -1;                                                       // On fait un ajustement de -1 jour
  155.     if(weekday() == 1){
  156.     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
  157.     }
  158.     if(t.isWeekdaySelected(weekday() + dayadjustment)){                         // Si aujourd'hui est un jour sélectionné sur le widget Time Input
  159.       timenow = ((hour() * 3600) + (minute() * 60) + second());                      // On récupère l'heure du jour
  160.       starttime = (t.getStartHour() * 3600) + (t.getStartMinute() * 60);             // On récupère l'heure de départ du timer
  161.  
  162.       if(timenow >= starttime){                                                      // Si l'heure actuelle correspond à l'heure de départ du timer
  163.         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"
  164.           Blynk.virtualWrite(V4, 1);                                                            // On allume la lumière
  165.         }      
  166.       }
  167.       else{}
  168.    
  169.       stoptime = (t.getStopHour() * 3600) + (t.getStopMinute() * 60);                // On récupère l'heure d'arrivée du timer
  170.  
  171.       if(timenow >= stoptime){                                                       // Si l'heure actuelle correspond à l'heure d'arrivée du timer
  172.         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"
  173.           Blynk.virtualWrite(V4, 0);                                                            // On éteint la lumière
  174.         }              
  175.       }
  176.       else{}
  177.     }
  178. }
  179. else{}
  180. }
  181.  
  182. // BLYNK Connexionn
  183. BLYNK_CONNECTED()
  184. {                                                          // Quand Blynk se connecte
  185.   Blynk.syncVirtual(V4, V7, V20, V21, V22);      // On synchronise les boutons, les LEDs et les timers
  186. }
  187.  
  188. //On initialise l'appareil
  189. void setup()                                                        // Configuration
  190. {
  191.   pinMode(D6, OUTPUT);                                              // On définit la commande du relay de la lumièree en sortie
  192.   digitalWrite(D6, HIGH);                                           // On définit le premier état du relay de la lumière à l'état Bas
  193.   delay(1000);                                                      // On patiente 1 seconde
  194.   Serial.begin(9600);                                               // On allume le moniteur série
  195.   Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,32), 8080);     //On se connect à BLYNK à travers notre WIFI et notre serveur
  196.   rtc.begin();                                                      // On démarre l'horloge
  197.   SHT21.begin(sda, scl);                                            // On démarre la connecion avec le SHT21 (HTU21D)
  198.   WiFi.begin(ssid, pass);                                           // On se connecte au Wifi
  199.   ArduinoOTA.setHostname("Hall d'entree");                          // On défini le nom de l'appareil
  200.   ArduinoOTA.setPassword("XXXXXXXXXXXX");                           // On défini son mot de passe
  201.   ArduinoOTA.begin();                                               // On initialise l'OTA
  202.  
  203.   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
  204.   timer.setInterval(1000L, timeinput);                              //On définit le temps de répétition de la boucle TimeInput à 1 seconde
  205. }
  206.  
  207. //La boucle se répète indéfiniment
  208. void loop()                 // Boucle infini
  209. {
  210.   ArduinoOTA.handle();      // On cherche une Mise à Jour en OTA
  211.   Blynk.run();              // On démarre BLYNK
  212.   timer.run();              // On démarre le timer
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement