123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- // ---------------------------------------------------------------------------------------
- // Programme permettant :
- // - d'allumer/éteindre une barre de LEDS (branchée sur la PIN D1 ).
- // - de changer la couleur des LEDS.
- // - de modifier l'intensité des LEDS.
- // - de lancer une animation des LEDS.
- //
- // Le programme se branche en WIFI sur un broker MQTT et réagi au topics :
- // lumiere/lampeADN [ON|OFF] : Allumage de la barre de LEDS.
- // lumiere/color/lampeADN (R,V,B) : Changement de couleur des LEDS.
- // lumiere/brightness/lampeADN value : luminosité [0-255]
- // lumiere/animation/lampeADN value : ID de l'animation [0-6]
- // lumiere/allume/lampeADN value : Allummage des leds du bas vers le haut (en %) 0= aucune, 100 =) toutes
- // ---------------------------------------------------------------------------------------
- #include <Arduino.h>
- //#define ModeDebug
-
- const String firmwareActualVersion = "1.0.0";
-
- #ifdef ModeDebug
- #define DEBUG(message) \
- Serial.print("[DEBUG:"); \
- Serial.print(__func__); \
- Serial.print("("); \
- Serial.print(__LINE__); \
- Serial.print(")]-> "); \
- Serial.println(message);
- #else
- #define DEBUG(message);
- #endif
-
-
-
- #include <WiFiManager.h> //https://github.com/tzapu/WiFiManager
- WiFiManager wifiManager;
-
-
- // Customisation du nom du module ESP
- #define HOSTNAME "LampeADN-"
- char HostName[16];
-
- // Pour répondre au topic MQTT [portal|barreverticale|lampeADN]
- #define DEVICEID_SIZE 15
- char DeviceID[DEVICEID_SIZE] = "lampeADN";
-
-
-
- int LED_COUNT = 66;
-
-
- // LEDS
- boolean g_BOO_AnimationSeconde = true;
- #include "my_leds.h"
-
-
- // Définition d'une structure pouvant stocker le message provenant de MQTT
- #include "my_MQTT.h"
-
-
-
-
-
-
-
-
- // ***************************************************************************************
- void setup() {
- #ifdef ModeDebug
- // initialisation de la liaison série (pour le moniteur) .........................
- Serial.begin(115200);
- delay(5000); // On attend que le port serie soit initialisé
- Serial.println();
- Serial.flush();
- #endif
-
- DEBUG("OK, let's go **********************************************************************");
- DEBUG("Version firmware :" + String( firmwareActualVersion ));
-
-
- // initialisation de la liaison WIFI ..............................................
- /* Si la connexion échoue, on lance un Access Point (AP) qui est visible dans les réseaux WIFI
- Il faut alors se connecter avec un smarthpone sur l'AP pour configurer le Wifi, le NodeMCU
- reboot et se connect avec le SSID et mot de passe saisie.
- */
- snprintf(HostName, 16, HOSTNAME"%06X", (uint32_t)ESP.getChipId()); // Concaténation du HOSTNAME avec la fin de l'adresse MAC
- wifiManager.setDebugOutput(false); // false ->Pour ne plus avoir le mot de passe WIFI qui s'affiche.
- wifiManager.autoConnect(HostName, "123456789");
-
- #ifdef ModeDebug
- DEBUG("IP address: "); Serial.println(WiFi.localIP());
- DEBUG("HOSTNAME: " + String(HostName) );
- #endif
-
-
-
- // Create a MQTT client ..........................................................
- DEBUG("Create a MQTT client");
- MQTT_setup();
-
-
- // Initialisation des leds .....................................................
- DEBUG("Initialisation des leds");
- strip.begin(); // INITIALIZE NeoPixel strip object
- strip.show(); // Turn OFF all pixels ASAP
- strip.setBrightness(255);
- LED_Animation(5);
- g_BOO_AnimationSeconde = true;
-
- DEBUG("************************** Tout est initialise");
- }
-
-
-
-
-
-
-
- // **********************************************************************************************************
- // **********************************************************************************************************
- unsigned long lastRecu = 0;
- int numled = 0;
- void loop() {
- // On écoute le serveur OTA
- // OTA_doUpdate();
-
-
- // Test si la connection Wifi existe toujours ...................................
- if (WiFi.status() != WL_CONNECTED) {
- // Si on est déconnecté on tente de se reconnecter automatiquement avec les anciens settings.
- wifiManager.autoConnect();
- }
-
-
-
- // Test si la connection MQTT est toujours valide ..............................
- if (!clientMQTT.connected()) {
- Serial.println("OUPS, on est plus connecté au server MQTT--------------------------");
-
- //MQTT_connect();
-
- // On reboot
- ESP.restart();
- }
- clientMQTT.loop();
-
-
-
-
- // Animation des LEDS toutes les secondes .........................................
- if (millis() - lastRecu > 1000 ) {
- lastRecu = millis();
-
- // Allumage d'une led
- if ( g_BOO_AnimationSeconde ) {
- if ( numled >= LED_COUNT /2 ) {
- LED_AllumeBaton( numled -1, 0,0,0 ); // Noir
- LED_AllumeBaton( numled -2, 0,0,0 ); // Noir
- numled = 0;
- }
- LED_AllumeBaton( numled, 255,0,100 ); // Rouge
- LED_AllumeBaton( numled -1, 50,0,70 ); // Noir
- LED_AllumeBaton( numled -2, 0,0,0 ); // Noir
-
- numled++;
- }
- }
-
-
-
- // Traitement des Messages MQTT ...................................................
- // Tout est fait dans MQTT_callback()
- }
|