From eedde73db3737e32c67278c93e7b09c9d7ebcdc0 Mon Sep 17 00:00:00 2001 From: Julien Cabillot Date: Wed, 26 Apr 2017 00:01:11 +0200 Subject: [PATCH 1/8] =?UTF-8?q?WIP:=20=C3=A0=20tester=20ota=20+=20remotede?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- arduino/mqttfastledmenu/mqttfastledmenu.cpp | 81 ++++++++++++++++--- .../mqttfastledmenu/mqttfastledmenu.example.h | 7 ++ 2 files changed, 76 insertions(+), 12 deletions(-) diff --git a/arduino/mqttfastledmenu/mqttfastledmenu.cpp b/arduino/mqttfastledmenu/mqttfastledmenu.cpp index 003e596..fb82a30 100644 --- a/arduino/mqttfastledmenu/mqttfastledmenu.cpp +++ b/arduino/mqttfastledmenu/mqttfastledmenu.cpp @@ -1,12 +1,25 @@ #include +// LED // TODO : essayer, devrait limiter le flikering //#define FASTLED_ALLOW_INTERRUPTS 0 #define FASTLED_ESP8266_NODEMCU_PIN_ORDER #include + +// WIFI #include + +// MQTT #include +// OTA +#include +#include +#include + +// RemoteDebug +#include + #include "mqttfastledmenu.h" // LED @@ -33,6 +46,12 @@ void setup() // WIFI setupWifi(); + // OTA + setupOTA(); + + // RemoteDebug + Debug.begin("chamber"); + // LED /* brightness = LED_BRIGHTNESS_DEFAULT; @@ -56,7 +75,7 @@ void setup() client.setCallback(callbackMQTT); testConnectMQTT(); - Serial.println("Ready"); + Debug.println("Ready"); /* MQTT * Il est important de faire un loop avant toute chose, @@ -69,7 +88,39 @@ void setup() client.loop(); } - Serial.println("End of setup"); + Debug.println("End of setup"); +} + +// OTA +void setupOTA() +{ + // TODO: on devrait ecrire ce genre d'info sur les deux sorties + ArduinoOTA.setHostname("alarmclock"); // on donne une petit nom a notre module + ArduinoOTA.setPassword(OTA_PASSWORD); + ArduinoOTA.onStart([]() { + Serial.println("OTA Starting"); + }); + ArduinoOTA.onEnd([]() { + Serial.println("\nOTA End"); + }); + ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { + Serial.printf("OTA Progress: %u%%\r", (progress / (total / 100))); + }); + ArduinoOTA.onError([](ota_error_t error) { + Serial.printf("OTA Error[%u]: ", error); + if (error == OTA_AUTH_ERROR) { + Serial.println("Auth Failed"); + } else if (error == OTA_BEGIN_ERROR) { + Serial.println("Begin Failed"); + } else if (error == OTA_CONNECT_ERROR) { + Serial.println("Connect Failed"); + } else if (error == OTA_RECEIVE_ERROR) { + Serial.println("Receive Failed"); + } else if (error == OTA_END_ERROR) { + Serial.println("End Failed"); + } + }); + ArduinoOTA.begin(); } // WIFI @@ -93,27 +144,27 @@ void setupWifi() void testConnectMQTT() { while (!client.connected()) { - Serial.print("Connexion au serveur MQTT... "); + Debug.print("Connexion au serveur MQTT... "); if (client.connect("ESP8266Client", MQTT_USER, MQTT_PASS)) { - Serial.print("OK\nSend Current State"); + Debug.print("OK\nSend Current State"); mqttSendState(); mqttSendSpeedState(); mqttSendBrightnessState(); mqttSendEffectState(); mqttSendColorState(); - Serial.print("OK\nSubscribe"); + Debug.print("OK\nSubscribe"); client.subscribe(MQTT_LED_COMMAND); client.subscribe(MQTT_LED_EFFECT_COMMAND); client.subscribe(MQTT_LED_BRIGHTNESS_COMMAND); client.subscribe(MQTT_LED_SPEED_COMMAND); client.subscribe(MQTT_LED_COLOR_COMMAND); - Serial.println(" OK"); + Debug.println(" OK"); } else { - Serial.print("KO, erreur : "); - Serial.print(client.state()); - Serial.println(", on attend 5 secondes avant de recommencer"); + Debug.print("KO, erreur : "); + Debug.print(client.state()); + Debug.println(", on attend 5 secondes avant de recommencer"); delay(5000); } } @@ -131,8 +182,8 @@ void callbackMQTT(char* topic, byte* payload, unsigned int length) message_buff[i] = '\0'; String msgString = String(message_buff); - Serial.print("Received [" + stopic + "] : "); - Serial.println(msgString); + Debug.print("Received [" + stopic + "] : "); + Debug.println(msgString); if (stopic == MQTT_LED_COMMAND) { if (msgString == "ON") { @@ -332,7 +383,7 @@ void ledFullColor() // J'ai essayé de mapper breath sur 3;brightness pour ne pas eteindre les leds, // mais l'effet est plus saccadé - + fill_solid(leds, LED_NUM, color); FastLED.setBrightness(breath); FastLED.show(); @@ -508,6 +559,12 @@ void fire() //////////////////////// FastLED-3.1.5/examples/Fire202 /////////////////////// void loop() { + // OTA + ArduinoOTA.handle(); + + // RemoteDebug + Debug.handle(); + // MQTT testConnectMQTT(); client.loop(); diff --git a/arduino/mqttfastledmenu/mqttfastledmenu.example.h b/arduino/mqttfastledmenu/mqttfastledmenu.example.h index 8d2e88a..328ead6 100644 --- a/arduino/mqttfastledmenu/mqttfastledmenu.example.h +++ b/arduino/mqttfastledmenu/mqttfastledmenu.example.h @@ -1,5 +1,11 @@ #define SERIAL_SPEED 115200 +// OTA +#define OTA_PASSWORD "n87z21Tx5%P%EX&*" + +// DebugRemote +RemoteDebug Debug; + // LED #define LED_NUM 300 #define LED_PIN 5 // = D1 @@ -38,6 +44,7 @@ #define MQTT_LED_COLOR_STATE "strip1/color/status" +void setupOTA(); void setupWifi(); void testConnectMQTT(); void callbackMQTT(char* topic, byte* payload, unsigned int length); From 97350e5ffd03d813e52c96d6c255284a2a53c2fa Mon Sep 17 00:00:00 2001 From: Julien Cabillot Date: Wed, 26 Apr 2017 00:04:42 +0200 Subject: [PATCH 2/8] passage au remote ota --- .gitignore | 1 + platformio.example.in | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 platformio.example.in diff --git a/.gitignore b/.gitignore index b678c9b..cbe8278 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ lib/* .piolibdeps .clang_complete .gcc-flags.json +platformio.ini diff --git a/platformio.example.in b/platformio.example.in new file mode 100644 index 0000000..faf87b5 --- /dev/null +++ b/platformio.example.in @@ -0,0 +1,20 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; http://docs.platformio.org/page/projectconf.html + +[env:nodemcuv2] +platform=espressif8266 +board=nodemcuv2 +framework=arduino +upload_port= +upload_flags=--auth="" + +[platformio] +src_dir=arduino/mqttfastledmenu +lib_dir=/home/jcabillot/Arduino/libraries From 3aa75991c547e71d5eae072e4ce938b09129ccc2 Mon Sep 17 00:00:00 2001 From: Julien Cabillot Date: Wed, 26 Apr 2017 00:07:00 +0200 Subject: [PATCH 3/8] plus necessaire --- README.md | 3 +-- platformio.ini | 18 ------------------ 2 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 platformio.ini diff --git a/README.md b/README.md index 812f4bd..a989838 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,6 @@ Avancement ========== Le projet est actuellement fonctionnel. Il reste des tweaks à faire pour que les effets marchent comme je le désire mais ça fonctionne. -TODO: changer le mqtt light par un mqtt_json, cela permettrais d'avoir un truc un peu "normal". Il existe de nombreux exemples sur le net pour esp qu'il devrait être très simple d'intégrer. -TODO: Utiliser ArduinoOTA pour gérer les mises à jours sans fil. +TODO: changer le mqtt light par un mqtt_json, cela permettrais d'avoir un truc un peu "normal". Il existe de nombreux exemples sur le net pour esp qu'il devrait être très simple d'intégrer. TODO: passer sur mqtt_json : l'envoi de l'état ne prends qu'un appel tout comme la réception, bien plus rapide TODO: gitlab-ci : on peut checker la syntax en lancant un docker home-assistant !!! diff --git a/platformio.ini b/platformio.ini deleted file mode 100644 index 427912b..0000000 --- a/platformio.ini +++ /dev/null @@ -1,18 +0,0 @@ -; PlatformIO Project Configuration File -; -; Build options: build flags, source filter -; Upload options: custom upload port, speed and extra flags -; Library options: dependencies, extra library storages -; Advanced options: extra scripting -; -; Please visit documentation for the other options and examples -; http://docs.platformio.org/page/projectconf.html - -[env:nodemcuv2] -platform=espressif8266 -board=nodemcuv2 -framework=arduino - -[platformio] -src_dir=arduino/mqttfastledmenu -lib_dir=/home/jcabillot/Arduino/libraries From 73bc585145a32384127b946cc81865a7b6fa0b7c Mon Sep 17 00:00:00 2001 From: Julien Cabillot Date: Wed, 26 Apr 2017 11:22:36 +0200 Subject: [PATCH 4/8] correction nom ota --- arduino/mqttfastledmenu/mqttfastledmenu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arduino/mqttfastledmenu/mqttfastledmenu.cpp b/arduino/mqttfastledmenu/mqttfastledmenu.cpp index fb82a30..c536a0a 100644 --- a/arduino/mqttfastledmenu/mqttfastledmenu.cpp +++ b/arduino/mqttfastledmenu/mqttfastledmenu.cpp @@ -95,7 +95,7 @@ void setup() void setupOTA() { // TODO: on devrait ecrire ce genre d'info sur les deux sorties - ArduinoOTA.setHostname("alarmclock"); // on donne une petit nom a notre module + ArduinoOTA.setHostname("mqttfastledmenu"); // on donne une petit nom a notre module ArduinoOTA.setPassword(OTA_PASSWORD); ArduinoOTA.onStart([]() { Serial.println("OTA Starting"); From 6097acddcce2e69a94174dd44af0900374b05d1e Mon Sep 17 00:00:00 2001 From: Julien Cabillot Date: Wed, 26 Apr 2017 12:59:35 +0200 Subject: [PATCH 5/8] double sortie pour l'ota --- arduino/mqttfastledmenu/mqttfastledmenu.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/arduino/mqttfastledmenu/mqttfastledmenu.cpp b/arduino/mqttfastledmenu/mqttfastledmenu.cpp index c536a0a..24bd11d 100644 --- a/arduino/mqttfastledmenu/mqttfastledmenu.cpp +++ b/arduino/mqttfastledmenu/mqttfastledmenu.cpp @@ -94,30 +94,38 @@ void setup() // OTA void setupOTA() { - // TODO: on devrait ecrire ce genre d'info sur les deux sorties ArduinoOTA.setHostname("mqttfastledmenu"); // on donne une petit nom a notre module ArduinoOTA.setPassword(OTA_PASSWORD); ArduinoOTA.onStart([]() { + Debug.println("OTA Starting"); Serial.println("OTA Starting"); }); ArduinoOTA.onEnd([]() { + Debug.println("\nOTA End"); Serial.println("\nOTA End"); }); ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { + Debug.printf("OTA Progress: %u%%\r", (progress / (total / 100))); Serial.printf("OTA Progress: %u%%\r", (progress / (total / 100))); }); ArduinoOTA.onError([](ota_error_t error) { Serial.printf("OTA Error[%u]: ", error); + Debug.printf("OTA Error[%u]: ", error); if (error == OTA_AUTH_ERROR) { Serial.println("Auth Failed"); + Debug.println("Auth Failed"); } else if (error == OTA_BEGIN_ERROR) { Serial.println("Begin Failed"); + Debug.println("Begin Failed"); } else if (error == OTA_CONNECT_ERROR) { Serial.println("Connect Failed"); + Debug.println("Connect Failed"); } else if (error == OTA_RECEIVE_ERROR) { Serial.println("Receive Failed"); + Debug.println("Receive Failed"); } else if (error == OTA_END_ERROR) { Serial.println("End Failed"); + Debug.println("End Failed"); } }); ArduinoOTA.begin(); From edc1326d87c8e21ec4fa0aab77f843a2e663662f Mon Sep 17 00:00:00 2001 From: Julien Cabillot Date: Wed, 26 Apr 2017 13:08:48 +0200 Subject: [PATCH 6/8] full -> breathing --- arduino/mqttfastledmenu/mqttfastledmenu.cpp | 7 +++---- arduino/mqttfastledmenu/mqttfastledmenu.example.h | 4 ++-- home-assistant/conf_light.d/strip1.yaml | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/arduino/mqttfastledmenu/mqttfastledmenu.cpp b/arduino/mqttfastledmenu/mqttfastledmenu.cpp index 24bd11d..4a878aa 100644 --- a/arduino/mqttfastledmenu/mqttfastledmenu.cpp +++ b/arduino/mqttfastledmenu/mqttfastledmenu.cpp @@ -381,7 +381,7 @@ void ledError() * Pour éviter un éclairage basique, on applique un breath qui permet * de faire respirer la couleur (brightness). */ -void ledFullColor() +void ledBreathing() { // Source : http://sean.voisen.org/blog/2011/10/breathing-led-with-arduino/ @@ -583,9 +583,8 @@ void loop() { } else { if (ledEffect == LED_EFFECT_CYLON) { ledCylon(); - } else if (ledEffect == LED_EFFECT_FULLRED) { - //TODO : degager ce nom : LED_EFFECT_FULLRED - ledFullColor(); + } else if (ledEffect == LED_EFFECT_BREATHING) { + ledBreathing(); } else if (ledEffect == LED_EFFECT_COLORPATTERN) { ledColorPattern(); } else if (ledEffect == LED_EFFECT_COLORTEMP) { diff --git a/arduino/mqttfastledmenu/mqttfastledmenu.example.h b/arduino/mqttfastledmenu/mqttfastledmenu.example.h index 328ead6..daacf10 100644 --- a/arduino/mqttfastledmenu/mqttfastledmenu.example.h +++ b/arduino/mqttfastledmenu/mqttfastledmenu.example.h @@ -19,7 +19,7 @@ RemoteDebug Debug; #define LED_EFFECT_COLORPATTERN "colorp" #define LED_EFFECT_COLORTEMP "colort" #define LED_EFFECT_FIRE "fire" -#define LED_EFFECT_FULLRED "full" +#define LED_EFFECT_BREATHING "breathing" #define LED_EFFECT_ERROR "error" // WIFI @@ -56,7 +56,7 @@ void mqttSendColorState(); void ledBlackAll(); void ledCylon(); void ledError(); -void ledFullColor(); +void ledBreathing(); ///////////////////////////////// ColorPalette // This example shows several ways to set up and use 'palettes' of colors // with FastLED. diff --git a/home-assistant/conf_light.d/strip1.yaml b/home-assistant/conf_light.d/strip1.yaml index 46d64d8..1f29927 100644 --- a/home-assistant/conf_light.d/strip1.yaml +++ b/home-assistant/conf_light.d/strip1.yaml @@ -7,7 +7,7 @@ - "colorp" - "colort" - "fire" - - "full" + - "breathing" - "error" command_topic: "strip1/switch" state_topic: "strip1/status" From 73ba002d315b2e03f00cfd6011848e82eab47eaa Mon Sep 17 00:00:00 2001 From: Julien Cabillot Date: Wed, 26 Apr 2017 13:11:06 +0200 Subject: [PATCH 7/8] ajout todo secret --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a989838..cc52dd3 100644 --- a/README.md +++ b/README.md @@ -34,3 +34,4 @@ Il reste des tweaks à faire pour que les effets marchent comme je le désire ma TODO: changer le mqtt light par un mqtt_json, cela permettrais d'avoir un truc un peu "normal". Il existe de nombreux exemples sur le net pour esp qu'il devrait être très simple d'intégrer. TODO: passer sur mqtt_json : l'envoi de l'état ne prends qu'un appel tout comme la réception, bien plus rapide TODO: gitlab-ci : on peut checker la syntax en lancant un docker home-assistant !!! +TODO: utiliser https://home-assistant.io/docs/configuration/secrets/ From a58478473a0aab08367f93d3ed55fe6b7aebcf35 Mon Sep 17 00:00:00 2001 From: Julien Cabillot Date: Fri, 12 May 2017 15:16:25 +0200 Subject: [PATCH 8/8] correction port --- arduino/mqttfastledmenu/mqttfastledmenu.example.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arduino/mqttfastledmenu/mqttfastledmenu.example.h b/arduino/mqttfastledmenu/mqttfastledmenu.example.h index daacf10..a272f17 100644 --- a/arduino/mqttfastledmenu/mqttfastledmenu.example.h +++ b/arduino/mqttfastledmenu/mqttfastledmenu.example.h @@ -8,7 +8,7 @@ RemoteDebug Debug; // LED #define LED_NUM 300 -#define LED_PIN 5 // = D1 +#define LED_PIN 5 // = D5 #define LED_CHIPSET WS2812B #define LED_COLOR_ORDER GRB #define LED_BRIGHTNESS_DEFAULT 96