Advertisement
Warin84

Lampe connectée

Apr 7th, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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[] = "XXXXXXXXXXXXXXXXXXXXXXXX";     // 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[] = "XXXXXXXXXXXX";      // Nom du réseau Wifi
  39. char pass[] = "XXXXXXXXXXXX";           // 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 relie le bouton virtuel V4 avec le relay
  72. BLYNK_WRITE(V4)
  73. {
  74.   //Si le bouton V4 est en position ON
  75.   if (param.asInt() == 1) {
  76.     //On allume la LED d'état de la lampe sur l'application
  77.     led1.on();
  78.     //On allume le relay
  79.     //digitalWrite(D6,LOW);
  80.     //ton code d'envoi 433MHz (allumer la lampe)
  81.   }
  82.   //Si le bouton V4 est en position OFF
  83.   else {
  84.     //On éteind la LED d'état de la lampe sur l'application
  85.     led1.off();
  86.     //On éteint le relay
  87.     //digitalWrite(D6, HIGH);
  88.     //ton code d'envoi 433MHz (éteindre la lampe)
  89.   }
  90. }
  91.  
  92. // Bouton auto/manuel
  93. BLYNK_WRITE(V20)
  94. {
  95.   automanuel = param.asInt();     // On récupère la position du bouton
  96. }
  97.  
  98. //Timer semaine
  99. BLYNK_WRITE(V21)                                              // Timpe Input Widget
  100. {
  101.   TimeInputParam t(param);                                                      // Le temps est stocké dans la variable t
  102.  
  103. if (automanuel ==1){                                                            // Si le bouton V20 est sur la position automatique
  104.  
  105.   int dayadjustment = -1;                                                       // On fait un ajustement de -1 jour
  106.     if(weekday() == 1){
  107.     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
  108.     }
  109.     if(t.isWeekdaySelected(weekday() + dayadjustment)){                         // Si aujourd'hui est un jour sélectionné sur le widget Time Input
  110.       timenow = ((hour() * 3600) + (minute() * 60) + second());                      // On récupère l'heure du jour
  111.       starttime = (t.getStartHour() * 3600) + (t.getStartMinute() * 60);             // On récupère l'heure de départ du timer
  112.  
  113.       if(timenow >= starttime){                                                      // Si l'heure actuelle correspond à l'heure de départ du timer
  114.         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"
  115.           Blynk.virtualWrite(V4, 1);                                                            // On allume la lumière
  116.         }      
  117.       }
  118.       else{}
  119.    
  120.       stoptime = (t.getStopHour() * 3600) + (t.getStopMinute() * 60);                // On récupère l'heure d'arrivée du timer
  121.  
  122.       if(timenow >= stoptime){                                                       // Si l'heure actuelle correspond à l'heure d'arrivée du timer
  123.         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"
  124.           Blynk.virtualWrite(V4, 0);                                                            // On éteint la lumière
  125.         }              
  126.       }
  127.       else{}
  128.     }
  129. }
  130. else{}
  131. }
  132.  
  133. //Timer semaine
  134. BLYNK_WRITE(V22)                                              // Timpe Input Widget
  135. {
  136.   TimeInputParam t(param);                                                      // Le temps est stocké dans la variable t
  137.  
  138. if (automanuel ==1){                                                            // Si le bouton V20 est sur la position automatique
  139.  
  140.   int dayadjustment = -1;                                                       // On fait un ajustement de -1 jour
  141.     if(weekday() == 1){
  142.     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
  143.     }
  144.     if(t.isWeekdaySelected(weekday() + dayadjustment)){                         // Si aujourd'hui est un jour sélectionné sur le widget Time Input
  145.       timenow = ((hour() * 3600) + (minute() * 60) + second());                      // On récupère l'heure du jour
  146.       starttime = (t.getStartHour() * 3600) + (t.getStartMinute() * 60);             // On récupère l'heure de départ du timer
  147.  
  148.       if(timenow >= starttime){                                                      // Si l'heure actuelle correspond à l'heure de départ du timer
  149.         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"
  150.           Blynk.virtualWrite(V4, 1;                                                            // On allume la lumière
  151.         }      
  152.       }
  153.       else{}
  154.    
  155.       stoptime = (t.getStopHour() * 3600) + (t.getStopMinute() * 60);                // On récupère l'heure d'arrivée du timer
  156.  
  157.       if(timenow >= stoptime){                                                       // Si l'heure actuelle correspond à l'heure d'arrivée du timer
  158.         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"
  159.           Blynk.virtualWrite(V4, 2);                                                            // On éteint la lumière
  160.         }              
  161.       }
  162.       else{}
  163.     }
  164. }
  165. else{}
  166. }
  167.  
  168. // BLYNK Connexionn
  169. BLYNK_CONNECTED()
  170. {                                                          // Quand Blynk se connecte
  171.   Blynk.syncVirtual(V4, V7, V20, V21, V22);      // On synchronise les boutons, les LEDs et les timers
  172. }
  173.  
  174. //On initialise l'appareil
  175. void setup()                                                        // Configuration
  176. {
  177.   pinMode(D6, OUTPUT);                                              // On définit la commande du relay de la lumièree en sortie
  178.   digitalWrite(D6, HIGH);                                           // On définit le premier état du relay de la lumière à l'état Bas
  179.   delay(1000);                                                      // On patiente 1 seconde
  180.   Serial.begin(9600);                                               // On allume le moniteur série
  181.   Blynk.begin(auth, ssid, pass);     //On se connect à BLYNK à travers notre WIFI et notre serveur
  182.   rtc.begin();                                                      // On démarre l'horloge
  183.   SHT21.begin(sda, scl);                                            // On démarre la connecion avec le SHT21 (HTU21D)
  184.   WiFi.begin(ssid, pass);                                           // On se connecte au Wifi
  185.   ArduinoOTA.setHostname("Hall d'entree");                          // On défini le nom de l'appareil
  186.   ArduinoOTA.setPassword("XXXXXXXXXXXXXXX");                           // On défini son mot de passe
  187.   ArduinoOTA.begin();                                               // On initialise l'OTA
  188.  
  189.   timer.setInterval(1000L, timeinput);                              //On définit le temps de répétition de la boucle TimeInput à 1 seconde
  190. }
  191.  
  192. //La boucle se répète indéfiniment
  193. void loop()                 // Boucle infini
  194. {
  195.   ArduinoOTA.handle();      // On cherche une Mise à Jour en OTA
  196.   Blynk.run();              // On démarre BLYNK
  197.   timer.run();              // On démarre le timer
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement