|
|
|
@ -1,12 +1,25 @@ |
|
|
|
#include <Arduino.h>
|
|
|
|
|
|
|
|
// LED
|
|
|
|
// TODO : essayer, devrait limiter le flikering
|
|
|
|
//#define FASTLED_ALLOW_INTERRUPTS 0
|
|
|
|
#define FASTLED_ESP8266_NODEMCU_PIN_ORDER
|
|
|
|
#include <FastLED.h>
|
|
|
|
|
|
|
|
// WIFI
|
|
|
|
#include <ESP8266WiFi.h>
|
|
|
|
|
|
|
|
// MQTT
|
|
|
|
#include <PubSubClient.h>
|
|
|
|
|
|
|
|
// OTA
|
|
|
|
#include <ESP8266mDNS.h>
|
|
|
|
#include <WiFiUdp.h>
|
|
|
|
#include <ArduinoOTA.h>
|
|
|
|
|
|
|
|
// RemoteDebug
|
|
|
|
#include <RemoteDebug.h>
|
|
|
|
|
|
|
|
#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(); |
|
|
|
|