mirror of
https://github.com/gunner47/GyverLamp.git
synced 2025-08-08 01:20:31 +03:00
Добавлена блокировка кнопки на лампе из android приложения
This commit is contained in:
@@ -94,6 +94,8 @@
|
||||
- * периодически - определяется константой PRINT_TIME в Constants.h - от раза в час (красным цветом) до раза в минуту (синим цветом) с яркостью текущего эффекта как при включенной, так и при выключенной матрице
|
||||
--- 19.10.2019
|
||||
- Добавлены "ночные часы" (от NIGHT_HOURS_START до NIGHT_HOURS_STOP включительно) и "дневные часы" (всё остальное время), для которых доступна регулировка яркости для вывода времени бегущей строкой - NIGHT_HOURS_BRIGHTNESS и DAY_HOURS_BRIGHTNESS
|
||||
--- 20.10.2019
|
||||
- Добавлена блокировка кнопки на лампе из приложения; сохраняется в EEPROM память
|
||||
*/
|
||||
|
||||
// Ссылка для менеджера плат:
|
||||
@@ -189,6 +191,7 @@ bool loadingFlag = true;
|
||||
bool ONflag = false;
|
||||
uint32_t eepromTimeout;
|
||||
bool settChanged = false;
|
||||
bool buttonEnabled = true;
|
||||
|
||||
unsigned char matrixValue[8][16];
|
||||
|
||||
@@ -235,6 +238,8 @@ void setup()
|
||||
wifiManager.resetSettings(); // сброс сохранённых SSID и пароля при старте с зажатой кнопкой, если разрешено
|
||||
LOG.println(F("Настройки WiFiManager сброшены"));
|
||||
}
|
||||
buttonEnabled = true; // при сбросе параметров WiFi сразу после старта с зажатой кнопкой, также разблокируется кнопка, если была заблокирована раньше
|
||||
EepromManager::SaveButtonEnabled(&buttonEnabled);
|
||||
ESP.wdtFeed();
|
||||
#endif
|
||||
#endif
|
||||
@@ -253,7 +258,7 @@ void setup()
|
||||
|
||||
// EEPROM
|
||||
EepromManager::InitEepromSettings( // инициализация EEPROM; запись начального состояния настроек, если их там ещё нет; инициализация настроек лампы значениями из EEPROM
|
||||
modes, alarms, &espMode, &ONflag, &dawnMode, ¤tMode,
|
||||
modes, alarms, &espMode, &ONflag, &dawnMode, ¤tMode, &buttonEnabled,
|
||||
&(FavoritesManager::ReadFavoritesFromEeprom),
|
||||
&(FavoritesManager::SaveFavoritesToEeprom));
|
||||
LOG.printf_P(PSTR("Рабочий режим лампы: ESP_MODE = %d\n"), espMode);
|
||||
@@ -373,7 +378,10 @@ void loop()
|
||||
#endif
|
||||
|
||||
#ifdef ESP_USE_BUTTON
|
||||
buttonTick();
|
||||
if (buttonEnabled)
|
||||
{
|
||||
buttonTick();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef OTA
|
||||
|
@@ -17,8 +17,10 @@
|
||||
* DAWN1 - установить "рассвет" за 5 минут до будильника (1 = 5 минут - номер опции в выпадающем списке в приложении, нумерация с единицы)
|
||||
* TMR_SET 1 3 300 - установить таймер; описание параметров - см. команду TMR ниже
|
||||
* FAV_SET 1 60 120 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 - установить режим "избранное", параметры - см. команду FAV ниже
|
||||
* BTN ON - разблокировать кнопку на лампе
|
||||
* BTN OFF - заблокировать кнопку на лампе
|
||||
* Лампа отправляет своё состояние сразу после включения и после каждого изменения в топик LedLamp/LedLamp_00316765/state; payload:
|
||||
* "CURR 7 14 4 50 1 1 1 0 21:25:50", где:
|
||||
* "CURR 7 14 4 50 1 1 1 0 1 21:25:50", где:
|
||||
* CURR - идентификатор команды, CURR - текущее состояние лампы
|
||||
* 7 - номер текущего эффекта
|
||||
* 14 - яркость
|
||||
@@ -26,8 +28,9 @@
|
||||
* 50 - масштаб
|
||||
* 1 - признак "матрица включена"
|
||||
* 1 - режим ESP_MODE
|
||||
* 1 - признак "работает таймер"
|
||||
* 0 - признак USE_NTP (пытаться синхронизировать время по серверам времени в интернете)
|
||||
* 1 - признак USE_NTP (пытаться синхронизировать время по серверам времени в интернете)
|
||||
* 0 - признак "работает таймер"
|
||||
* 1 - признак "кнопка разблокирована"
|
||||
* 21:25:50 - текущее время (если не синхронизировано, показывает время от старта модуля)
|
||||
* "ALMS 1 0 0 0 0 0 0 0 390 0 0 0 0 0 0 1"
|
||||
* ALMS - идентификатор команды, ALMS - настройки будильников
|
||||
|
@@ -6,6 +6,11 @@ static bool startButtonHolding = false; // флаг: кно
|
||||
|
||||
void buttonTick()
|
||||
{
|
||||
if (!buttonEnabled) // события кнопки не обрабатываются, если она заблокирована
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
touch.tick();
|
||||
uint8_t clickCount = touch.hasClicks() ? touch.getClicks() : 0U;
|
||||
|
||||
|
@@ -290,6 +290,30 @@ void processInputBuffer(char *inputBuffer, char *outputBuffer, bool generateOutp
|
||||
#endif
|
||||
}
|
||||
|
||||
else if (!strncmp_P(inputBuffer, PSTR("BTN"), 3))
|
||||
{
|
||||
if (strstr_P(inputBuffer, PSTR("ON")) - inputBuffer == 4)
|
||||
{
|
||||
buttonEnabled = true;
|
||||
EepromManager::SaveButtonEnabled(&buttonEnabled);
|
||||
sendCurrent(inputBuffer);
|
||||
}
|
||||
else if (strstr_P(inputBuffer, PSTR("OFF")) - inputBuffer == 4)
|
||||
{
|
||||
buttonEnabled = false;
|
||||
EepromManager::SaveButtonEnabled(&buttonEnabled);
|
||||
sendCurrent(inputBuffer);
|
||||
}
|
||||
|
||||
#if (USE_MQTT)
|
||||
if (espMode == 1U)
|
||||
{
|
||||
strcpy(MqttManager::mqttBuffer, inputBuffer);
|
||||
MqttManager::needToPublish = true;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
inputBuffer[0] = '\0';
|
||||
@@ -324,6 +348,7 @@ void sendCurrent(char *outputBuffer)
|
||||
#endif
|
||||
|
||||
sprintf_P(outputBuffer, PSTR("%s %u"), outputBuffer, (uint8_t)TimerManager::TimerRunning);
|
||||
sprintf_P(outputBuffer, PSTR("%s %u"), outputBuffer, (uint8_t)buttonEnabled);
|
||||
|
||||
#ifdef USE_NTP
|
||||
sprintf_P(outputBuffer, PSTR("%s %s"), outputBuffer, timeClient.getFormattedTime().c_str());
|
||||
|
@@ -26,7 +26,7 @@ void timerMinim::setInterval(uint32_t interval)
|
||||
|
||||
bool timerMinim::isReady()
|
||||
{
|
||||
if ((long)millis() - _timer >= _interval)
|
||||
if ((uint32_t)millis() - _timer >= _interval)
|
||||
{
|
||||
_timer = millis();
|
||||
return true;
|
||||
|
Reference in New Issue
Block a user