You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

main.cpp 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. // ---------------------------------------------------------------------------------------
  2. // Programme permettant :
  3. // - d'allumer/éteindre une barre de LEDS (branchée sur la PIN D1 ).
  4. // - de changer la couleur des LEDS.
  5. // - de modifier l'intensité des LEDS.
  6. // - de lancer une animation des LEDS.
  7. //
  8. // Le programme se branche en WIFI sur un broker MQTT et réagi au topics :
  9. // lumiere/lampeADN [ON|OFF] : Allumage de la barre de LEDS.
  10. // lumiere/color/lampeADN (R,V,B) : Changement de couleur des LEDS.
  11. // lumiere/brightness/lampeADN value : luminosité [0-255]
  12. // lumiere/animation/lampeADN value : ID de l'animation [0-6]
  13. // lumiere/allume/lampeADN value : Allummage des leds du bas vers le haut (en %) 0= aucune, 100 =) toutes
  14. // ---------------------------------------------------------------------------------------
  15. #include <Arduino.h>
  16. //#define ModeDebug
  17. const String firmwareActualVersion = "1.0.0";
  18. #ifdef ModeDebug
  19. #define DEBUG(message) \
  20. Serial.print("[DEBUG:"); \
  21. Serial.print(__func__); \
  22. Serial.print("("); \
  23. Serial.print(__LINE__); \
  24. Serial.print(")]-> "); \
  25. Serial.println(message);
  26. #else
  27. #define DEBUG(message);
  28. #endif
  29. #include <WiFiManager.h> //https://github.com/tzapu/WiFiManager
  30. WiFiManager wifiManager;
  31. // Customisation du nom du module ESP
  32. #define HOSTNAME "LampeADN-"
  33. char HostName[16];
  34. // Pour répondre au topic MQTT [portal|barreverticale|lampeADN]
  35. #define DEVICEID_SIZE 15
  36. char DeviceID[DEVICEID_SIZE] = "lampeADN";
  37. int LED_COUNT = 66;
  38. // LEDS
  39. boolean g_BOO_AnimationSeconde = true;
  40. #include "my_leds.h"
  41. // Définition d'une structure pouvant stocker le message provenant de MQTT
  42. #include "my_MQTT.h"
  43. // ***************************************************************************************
  44. void setup() {
  45. #ifdef ModeDebug
  46. // initialisation de la liaison série (pour le moniteur) .........................
  47. Serial.begin(115200);
  48. delay(5000); // On attend que le port serie soit initialisé
  49. Serial.println();
  50. Serial.flush();
  51. #endif
  52. DEBUG("OK, let's go **********************************************************************");
  53. DEBUG("Version firmware :" + String( firmwareActualVersion ));
  54. // initialisation de la liaison WIFI ..............................................
  55. /* Si la connexion échoue, on lance un Access Point (AP) qui est visible dans les réseaux WIFI
  56. Il faut alors se connecter avec un smarthpone sur l'AP pour configurer le Wifi, le NodeMCU
  57. reboot et se connect avec le SSID et mot de passe saisie.
  58. */
  59. snprintf(HostName, 16, HOSTNAME"%06X", (uint32_t)ESP.getChipId()); // Concaténation du HOSTNAME avec la fin de l'adresse MAC
  60. wifiManager.setDebugOutput(false); // false ->Pour ne plus avoir le mot de passe WIFI qui s'affiche.
  61. wifiManager.autoConnect(HostName, "123456789");
  62. #ifdef ModeDebug
  63. DEBUG("IP address: "); Serial.println(WiFi.localIP());
  64. DEBUG("HOSTNAME: " + String(HostName) );
  65. #endif
  66. // Create a MQTT client ..........................................................
  67. DEBUG("Create a MQTT client");
  68. MQTT_setup();
  69. // Initialisation des leds .....................................................
  70. DEBUG("Initialisation des leds");
  71. strip.begin(); // INITIALIZE NeoPixel strip object
  72. strip.show(); // Turn OFF all pixels ASAP
  73. strip.setBrightness(255);
  74. LED_Animation(5);
  75. g_BOO_AnimationSeconde = true;
  76. DEBUG("************************** Tout est initialise");
  77. }
  78. // **********************************************************************************************************
  79. // **********************************************************************************************************
  80. unsigned long lastRecu = 0;
  81. int numled = 0;
  82. void loop() {
  83. // On écoute le serveur OTA
  84. // OTA_doUpdate();
  85. // Test si la connection Wifi existe toujours ...................................
  86. if (WiFi.status() != WL_CONNECTED) {
  87. // Si on est déconnecté on tente de se reconnecter automatiquement avec les anciens settings.
  88. wifiManager.autoConnect();
  89. }
  90. // Test si la connection MQTT est toujours valide ..............................
  91. if (!clientMQTT.connected()) {
  92. Serial.println("OUPS, on est plus connecté au server MQTT--------------------------");
  93. //MQTT_connect();
  94. // On reboot
  95. ESP.restart();
  96. }
  97. clientMQTT.loop();
  98. // Animation des LEDS toutes les secondes .........................................
  99. if (millis() - lastRecu > 1000 ) {
  100. lastRecu = millis();
  101. // Allumage d'une led
  102. if ( g_BOO_AnimationSeconde ) {
  103. if ( numled >= LED_COUNT /2 ) {
  104. LED_AllumeBaton( numled -1, 0,0,0 ); // Noir
  105. LED_AllumeBaton( numled -2, 0,0,0 ); // Noir
  106. numled = 0;
  107. }
  108. LED_AllumeBaton( numled, 255,0,100 ); // Rouge
  109. LED_AllumeBaton( numled -1, 50,0,70 ); // Noir
  110. LED_AllumeBaton( numled -2, 0,0,0 ); // Noir
  111. numled++;
  112. }
  113. }
  114. // Traitement des Messages MQTT ...................................................
  115. // Tout est fait dans MQTT_callback()
  116. }