Добавлено управление по протоколу MQTT; добавлена возможность вывода отладочных сообщений в telnet; исправлены ошибки (будильник, управление яркостью кнопкой, затирание параметров WiFi при включении)

This commit is contained in:
gunner47
2019-10-05 22:20:33 +03:00
parent d92b060335
commit 921a25bd16
12 changed files with 681 additions and 116 deletions

View File

@@ -1,6 +1,8 @@
#ifdef ESP_USE_BUTTON
bool brightDirection;
static bool startButtonHolding = false; // флаг: кнопка удерживается для изменения яркости лампы
void buttonTick()
{
touch.tick();
@@ -23,6 +25,10 @@ void buttonTick()
settChanged = true;
eepromTimeout = millis();
loadingFlag = true;
#if (USE_MQTT && ESP_MODE == 1)
MqttManager::needToPublish = true;
#endif
}
if (ONflag && clickCount == 2)
@@ -34,6 +40,10 @@ void buttonTick()
eepromTimeout = millis();
FastLED.clear();
delay(1);
#if (USE_MQTT && ESP_MODE == 1)
MqttManager::needToPublish = true;
#endif
}
if (ONflag && clickCount == 3)
@@ -45,9 +55,13 @@ void buttonTick()
eepromTimeout = millis();
FastLED.clear();
delay(1);
#if (USE_MQTT && ESP_MODE == 1)
MqttManager::needToPublish = true;
#endif
}
if (ONflag && clickCount == 4)
if (clickCount == 4)
{
#ifdef OTA
if (otaManager.RequestOtaUpdate())
@@ -67,34 +81,39 @@ void buttonTick()
while(!fillString(WiFi.localIP().toString().c_str())) delay(1);
loadingFlag = true;
}
}
}
if (ONflag && touch.isHolded())
{
brightDirection = !brightDirection;
startButtonHolding = true;
}
if (ONflag && touch.isStep())
{
if (brightDirection)
{
if (modes[currentMode].Brightness < 10) modes[currentMode].Brightness += 1;
else if (modes[currentMode].Brightness < 250) modes[currentMode].Brightness += 5;
else modes[currentMode].Brightness = 255;
}
else
{
if (modes[currentMode].Brightness > 15) modes[currentMode].Brightness -= 5;
else if (modes[currentMode].Brightness > 1) modes[currentMode].Brightness -= 1;
else modes[currentMode].Brightness = 0;
}
uint8_t delta = modes[currentMode].Brightness < 10 // определение шага изменения яркости: при яркости [1..10] шаг = 1, при [11..16] шаг = 3, при [17..255] шаг = 15
? 1
: 5;
modes[currentMode].Brightness =
constrain(brightDirection
? modes[currentMode].Brightness + delta
: modes[currentMode].Brightness - delta,
1, 255);
FastLED.setBrightness(modes[currentMode].Brightness);
settChanged = true;
eepromTimeout = millis();
#ifdef GENERAL_DEBUG
Serial.printf_P(PSTR("New brightness value: %d\n"), modes[currentMode].Brightness);
LOG.printf_P(PSTR("New brightness value: %d\n"), modes[currentMode].Brightness);
#endif
}
#if (USE_MQTT && ESP_MODE == 1)
if (ONflag && !touch.isHold() && startButtonHolding) // кнопка отпущена после удерживания, нужно отправить MQTT сообщение об изменении яркости лампы
{
MqttManager::needToPublish = true;
startButtonHolding = false;
}
#endif
}
#endif