Добавлена точная настройка яркости, скорости и масштаба эффектов; Добавлено управление будильниками

This commit is contained in:
gunner47
2019-08-10 01:20:18 +03:00
parent 4a5245aed7
commit 8ebace5d1b
6 changed files with 46 additions and 10 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -42,7 +42,11 @@ MainScreen
BrightnessSliderPositionChanged метод (событие): действия при изменении слайдера яркости
SpeedSliderPositionChanged метод (событие): действия при изменении слайдера скокрости
ScaleSliderPositionChanged метод (событие): действия при изменении слайдера масштаба
BrightnessListPickerAfterPicking метод (событие): действия при выборе точного значения яркости из контекстного списка
SpeedListPickerAfterPicking метод (событие): действия при выборе точного значения скорости из контекстного списка
ScaleListPickerAfterPicking метод (событие): действия при выборе точного значения масштаба из контекстного списка
UpdateControls метод: обновить отображение элементов управления (статусы enabled/disabled) в зависимости от сохранённых свойств (модели данных)
PopulateListPickerElements метод: заполнить контекстный список яркости/скорости/масштаба эффектов значениями, близкими к текущей позиции соответствующего слайдера
SetDebugText метод: установить отладочный текст основной отладочной текстовой метке
ConnectivityScreen
@@ -71,7 +75,27 @@ FavoritesScreen
AlarmScreen
Visible свойство: "Видимость экрана устройств"
Initialized свойство: "Экран управления будильниками инициализирован"
BlockControlEventsEmitting свойство: "Не генерировать события от элементов управления" (переключателей, тайм пикеров и т.д.); нужно, например, чтобы предотвратить switch.changed при его enable/disable
BaсkButtonClick метод (событие): действия при UI кнопки "Назад" на "экране" будильника
MonSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
TueSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
WedSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
ThuSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
FriSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
SatSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
SunSwitchChanged метод (событие): действия при установке/снятии переключателя включения будильника
MonTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
TueTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
FriTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
WedTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
ThuTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
SatTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
SunTimePickerAfterTimeSet метод (событие): действия при выборе времени будильника
TimeBeforeAlarmListPickerAfterPicking метод (событие): действия при выборе времени срабатывания будильника перед "рассветом"
ResetAlarmState метод: "забыть" состояние будильников в android приложении (перед последующим запросом этого состояния)
UpdateScreen метод: обновить все элементы управления на "экране" управления будильниками согласно модели данных
UpdateControls метод: обновить отображение элементов управления (статусы enabled/disabled) в зависимости от сохранённых свойств (модели данных)
TimerScreen
Visible свойство: "Видимость экрана устройств"
@@ -82,6 +106,7 @@ DeviceManager
State свойство: полученное командой GET состояние устройства (CURR...), список (не строка)
Devices свойство: список устройств (хранимое свойство)
CurrentDeviceSocket свойство: текущее устройство (хранимое свойство)
AlarmState свойство: текущее состояние будильников по дням (вкл/выкл, время каждого, время срабатывания перед "рассветом")
Modes свойство: список доступных режимов, захардкожен одновременно в лампе и в приложении, должен совпадать
Initialize метод: вычитывание хранимых свойств и инициализация соответствующих переменных
ConnectDeviceSocket метод: стартовать таймер (polling timer) с регулярной отправкой команд GET/DEB на устройство
@@ -100,6 +125,15 @@ DeviceManager
ResetCurrentDevice метод: установить свойство CurrentDeviceSocket в начальное состояние (очистить), соответствует состоянию "устройство не выбрано"
ResetCurrentDevices метод: установить свойство Devices в начальное состояние (очистить), соответствует состоянию "профили устройств не заданы"
ValidateIpPort метод: валидировать переданное в качестве параметра значение IP адреса или порта
SendUdpCommand метод: отправить команду, приянтую в качестве входного аргумента, на подключенное устройствоС (обобщённый метод)
HandleDeviceResponse метод: обработать ответ от подключенного устройства на отправленные команды
GetAlarms метод: отправить команду запроса состояния будильников ALM_GET на устройство
GetAlarmOnOff метод: получить состояние вкл/выкл будильника для указанного во входном аргументе дня (из свойства AlarmState)
GetAlarmTime метод: получить время срабатывания будильника для указанного во входном аргументе дня (из свойства AlarmState)
GetTimeBeforeAlarmIndex метод: получить время срабатывания будильника перед "рассветом"
SetAlarmOnOff метод: отправить команду вкл/выкл будильника для заданного дня ALM_SET на устройство
SetAlarmTime метод: отправить команду установки времени срабатывания будильника для заданного дня ALM_SET на устройство
SetTimeBeforeAlarm метод: отправить команду установки времени срабатывания будильника перед "рассветом" DAWN на устройство
DiscoverManager
TimeoutMs свойство: время ожидания ответа от устройств на multicast команду DISCOVER
@@ -128,10 +162,10 @@ PollingManager
SendSetBrightnessCommandToDevice метод: отправить команду установки яркости на подключенное устройство
SendSetSpeedCommandToDevice метод: отправить команду установки скорости на подключенное устройство
SendSetScaleCommandToDevice метод: отправить команду установки масштаба на подключенное устройство
HandleDeviceResponse метод: обработка ответа от подключенного устройства на отправленные команды
SendUdpCommand метод: отправить команду, приянтую в качестве входного аргумента, на подключенное устройствоС (обобщённый метод)
StringHelper
GetIpPortString метод: получить строку формата IP:PORT из входных параметров IP и PORT
GetIpFromIpPortString метод: получить IP из входного параметра формата IP:PORT
GetPortFromIpPortString метод: получить PORT из входного параметра формата IP:PORT
GetFormattedTimeFromMinutes метод: получить строку с временем в формате hh:mm из входного аргумента (количество минут)
GetMinutesFromFormattedTime метод: получить количество минут из форматированной строки (hh:mm), переданной в качестве входного аргумента

View File

@@ -37,6 +37,11 @@
- Добавлены 2 эффекта: Светлячки со шлейфом и Белый свет
- При запросе обновления по воздуху (2 четверных касания к кнопке) лампа переключается в режим "Матрица" для визуального подтверждения готовности к прошивке
- В android приложение добавлена функция сканирования сети и добавления ламп с помощью multicast пакетов, доработка прошивки под это
--- 03.08.2019
- Исправлены ошибки взаимодействия android приложения с лампой, в вывод команды CURR добавлено текущее время (или millis(), если время не синхронизировано)
--- 10.08.2019
- Добавлена точная настройка яркости, скорости и масштаба эффектов
- Добавлено взаимодействие с android приложением по управлению будильниками
*/
// Ссылка для менеджера плат:

View File

@@ -213,7 +213,7 @@ class OtaManager
Serial.printf("Для обновления в Arduino IDE выберите пункт меню Инструменты - Порт - '%s at ", espHostName);
Serial.print(WiFi.localIP());
Serial.println("'");
Serial.printf("Затем нажмите кнопку 'Загрузка' в течение %u секунд и по запросу введите пароль '%ы'\n", ESP_CONF_TIMEOUT, AP_PASS);
Serial.printf("Затем нажмите кнопку 'Загрузка' в течение %u секунд и по запросу введите пароль '%s'\n", ESP_CONF_TIMEOUT, AP_PASS);
Serial.println("Устройство с Arduino IDE должно быть в одной локальной сети с модулем ESP!");
#endif
}

View File

@@ -4,8 +4,6 @@ void parseUDP()
if (packetSize)
{
Serial.print("income");
int32_t n = Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
packetBuffer[n] = 0;
inputBuffer = packetBuffer;
@@ -89,12 +87,12 @@ void parseUDP()
if (inputBuffer.indexOf("ON") != -1)
{
alarm[alarmNum].state = true;
inputBuffer = "alm #" + String(alarmNum + 1) + " ON";
sendAlarms();
}
else if (inputBuffer.indexOf("OFF") != -1)
{
alarm[alarmNum].state = false;
inputBuffer = "alm #" + String(alarmNum + 1) + " OFF";
sendAlarms();
}
else
{
@@ -102,9 +100,7 @@ void parseUDP()
alarm[alarmNum].time = almTime;
byte hour = floor(almTime / 60);
byte minute = almTime - hour * 60;
inputBuffer = "alm #" + String(alarmNum + 1) +
" " + String(hour) +
":" + String(minute);
sendAlarms();
}
saveAlarm(alarmNum);
}
@@ -118,6 +114,7 @@ void parseUDP()
{
dawnMode = inputBuffer.substring(4).toInt() - 1;
saveDawnMmode();
sendAlarms();
}
else if (inputBuffer.startsWith("DISCOVER")) // обнаружение приложением модуля esp в локальной сети