diff --git a/main/User_config.h b/main/User_config.h index 4596fb0..e2ffa0b 100644 --- a/main/User_config.h +++ b/main/User_config.h @@ -454,7 +454,13 @@ int lowpowermode = DEFAULT_LOW_POWER_MODE; # define InfoIndicatorON() digitalWrite(LED_INFO, LED_INFO_ON) # define InfoIndicatorOFF() digitalWrite(LED_INFO, !LED_INFO_ON) # define CriticalIndicatorON() // Not used +# define CriticalIndicatorON() // Not used +# define PowerIndicatorON() // Not used +# define PowerIndicatorOFF() // Not used #else // Management of Errors, reception/emission and informations indicators with RGB LED +# if !defined(CONFIG_IDF_TARGET_ESP32S3) && !defined(CONFIG_IDF_TARGET_ESP32C3) //I2S not available yet with Fastled on S3 and C3 +# define FASTLED_ESP32_I2S // To avoid ESP32 instabilities https://github.com/FastLED/FastLED/issues/1438 +# endif # include CRGB leds[FASTLED_IND_NUM_LEDS]; # ifdef FASTLED_IND_DATA_GPIO2 // Only used for Critical Indicator @@ -480,11 +486,20 @@ CRGB leds2[FASTLED_IND_NUM_LEDS]; # define FASTLED_CRITICAL_LED 0 // First Led # endif -# define SetupIndicators() \ - pinMode(RGB_LED_POWER, OUTPUT); \ - digitalWrite(RGB_LED_POWER, HIGH); \ - FastLED.addLeds(leds, FASTLED_IND_NUM_LEDS); \ - FastLED.setBrightness(FASTLED_BRIGHTNESS) +# ifndef FASTLED_IND_DATA_GPIO2 +# define SetupIndicators() \ + pinMode(RGB_LED_POWER, OUTPUT); \ + digitalWrite(RGB_LED_POWER, HIGH); \ + FastLED.addLeds(leds, FASTLED_IND_NUM_LEDS); \ + FastLED.setBrightness(FASTLED_BRIGHTNESS) +# else +# define SetupIndicators() \ + pinMode(RGB_LED_POWER, OUTPUT); \ + digitalWrite(RGB_LED_POWER, HIGH); \ + FastLED.addLeds(leds, FASTLED_IND_NUM_LEDS); \ + FastLED.addLeds(leds2, FASTLED_IND_NUM_LEDS); \ + FastLED.setBrightness(FASTLED_BRIGHTNESS) +# endif # define ErrorIndicatorON() \ leds[FASTLED_ERROR_LED] = CRGB::Orange; \ FastLED.show() @@ -503,13 +518,17 @@ CRGB leds2[FASTLED_IND_NUM_LEDS]; # define InfoIndicatorOFF() \ leds[FASTLED_INFO_LED] = CRGB::Black; \ FastLED.show() -# ifdef FASTLED_IND_DATA_GPIO2 +# ifdef FASTLED_IND_DATA_GPIO2 // Used for relay power indicator // For the critical ON indicator there is no method to turn it off, the only way is to unplug the device // This enable to have persistence of the indicator to inform the user -# define CriticalIndicatorON() \ - FastLED.addLeds(leds2, FASTLED_IND_NUM_LEDS); \ - FastLED.setBrightness(FASTLED_BRIGHTNESS); \ - leds2[FASTLED_INFO_LED] = CRGB::Red; \ +# define CriticalIndicatorON() \ + leds2[FASTLED_INFO_LED] = CRGB::Red; \ + FastLED.show() +# define PowerIndicatorON() \ + leds2[FASTLED_INFO_LED] = CRGB::Green; \ + FastLED.show() +# define PowerIndicatorOFF() \ + leds2[FASTLED_INFO_LED] = CRGB::Black; \ FastLED.show() # endif #endif diff --git a/main/ZactuatorONOFF.ino b/main/ZactuatorONOFF.ino index a40c52b..a76cd69 100644 --- a/main/ZactuatorONOFF.ino +++ b/main/ZactuatorONOFF.ino @@ -55,6 +55,11 @@ void MQTTtoONOFF(char* topicOri, JsonObject& ONOFFdata) { Log.notice(F("GPIO number: %d" CR), gpio); pinMode(gpio, OUTPUT); digitalWrite(gpio, boolSWITCHTYPE); + if (boolSWITCHTYPE == ACTUATOR_ON) { + PowerIndicatorON(); + } else { + PowerIndicatorOFF(); + } // we acknowledge the sending by publishing the value to an acknowledgement topic pub(subjectGTWONOFFtoMQTT, ONOFFdata); } else { @@ -103,6 +108,11 @@ void MQTTtoONOFF(char* topicOri, char* datacallback) { ON = false; digitalWrite(gpio, ON); + if (ON == ACTUATOR_ON) { + PowerIndicatorON(); + } else { + PowerIndicatorOFF(); + } // we acknowledge the sending by publishing the value to an acknowledgement topic char b = ON; pub(subjectGTWONOFFtoMQTT, &b); @@ -161,6 +171,11 @@ void ActuatorTrigger() { uint8_t level = !digitalRead(ACTUATOR_ONOFF_GPIO); Log.trace(F("Actuator triggered %d" CR), level); digitalWrite(ACTUATOR_ONOFF_GPIO, level); + if (level == ACTUATOR_ON) { + PowerIndicatorON(); + } else { + PowerIndicatorOFF(); + } // Send the state of the switch to the broker so as to update the status StaticJsonDocument jsonBuffer; JsonObject ONOFFdata = jsonBuffer.to();