diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index ed911d5..487ed6a 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -462,6 +462,7 @@ static void ledBarEnabledUpdate(void) { ag->ledBar.setBrighness(brightness); ag->ledBar.setEnable(configuration.getLedBarMode() != LedBarModeOff); } + ag->ledBar.show(); } } @@ -804,10 +805,6 @@ static void configUpdateHandle() { return; } - if (ag->isOne()) { - ledBarEnabledUpdate(); - stateMachine.executeLedBarTest(); - } stateMachine.executeCo2Calibration(); String mqttUri = configuration.getMqttBrokerUri(); @@ -843,15 +840,42 @@ static void configUpdateHandle() { if (ag->isOne()) { if (configuration.isLedBarBrightnessChanged()) { - ag->ledBar.setBrighness(configuration.getLedBarBrightness()); - Serial.println("Set 'LedBarBrightness' brightness: " + + if (configuration.getLedBarBrightness() == 0) { + ag->ledBar.setEnable(false); + } else { + if (configuration.getLedBarMode() != LedBarMode::LedBarModeOff) { + ag->ledBar.setEnable(true); + } + ag->ledBar.setBrighness(configuration.getLedBarBrightness()); + } + ag->ledBar.show(); + Serial.println("Set 'ledBarBrightness' brightness: " + String(configuration.getLedBarBrightness())); } + + if (configuration.isLedBarModeChanged()) { + Serial.println("Set 'ledBarMode' " + String(configuration.getLedBarMode())); + Serial.println("Get 'ledBarBrightness' " + String(configuration.getLedBarBrightness())); + if (configuration.getLedBarBrightness() == 0) { + ag->ledBar.setEnable(false); + } else { + if(configuration.getLedBarMode() == LedBarMode::LedBarModeOff) { + ag->ledBar.setEnable(false); + } else { + ag->ledBar.setEnable(true); + ag->ledBar.setBrighness(configuration.getLedBarBrightness()); + } + } + ag->ledBar.show(); + } + if (configuration.isDisplayBrightnessChanged()) { oledDisplay.setBrightness(configuration.getDisplayBrightness()); Serial.println("Set 'DisplayBrightness' brightness: " + String(configuration.getDisplayBrightness())); } + + stateMachine.executeLedBarTest(); } fwNewVersion = configuration.newFirmwareVersion(); diff --git a/src/AgConfigure.cpp b/src/AgConfigure.cpp index a52dbf9..5eb827c 100644 --- a/src/AgConfigure.cpp +++ b/src/AgConfigure.cpp @@ -372,6 +372,7 @@ bool Configuration::parse(String data, bool isLocal) { } } + _ledBarModeChanged = false; if (JSON.typeof_(root[jprop_ledBarMode]) == "string") { String mode = root[jprop_ledBarMode]; if (mode == getLedBarModeName(LedBarMode::LedBarModeCO2) || @@ -380,6 +381,7 @@ bool Configuration::parse(String data, bool isLocal) { String oldMode = jconfig[jprop_ledBarMode]; if (mode != oldMode) { jconfig[jprop_ledBarMode] = mode; + _ledBarModeChanged = true; changed = true; } } else { @@ -559,6 +561,7 @@ bool Configuration::parse(String data, bool isLocal) { } } + ledBarBrightnessChanged = false; if (JSON.typeof_(root[jprop_ledBarBrightness]) == "number") { int value = root[jprop_ledBarBrightness]; int oldValue = jconfig[jprop_ledBarBrightness]; @@ -1148,6 +1151,12 @@ void Configuration::setOfflineModeWithoutSave(bool offline) { _offlineMode = offline; } +bool Configuration::isLedBarModeChanged(void) { + bool changed = _ledBarModeChanged; + _ledBarModeChanged = false; + return changed; +} + bool Configuration::isDisplayBrightnessChanged(void) { bool changed = displayBrightnessChanged; displayBrightnessChanged = false; diff --git a/src/AgConfigure.h b/src/AgConfigure.h index c3eda36..24473ec 100644 --- a/src/AgConfigure.h +++ b/src/AgConfigure.h @@ -18,6 +18,7 @@ private: bool displayBrightnessChanged = false; String otaNewFirmwareVersion; bool _offlineMode = false; + bool _ledBarModeChanged = false; AirGradient* ag; @@ -80,6 +81,7 @@ public: bool isOfflineMode(void); void setOfflineMode(bool offline); void setOfflineModeWithoutSave(bool offline); + bool isLedBarModeChanged(void); }; #endif /** _AG_CONFIG_H_ */