mirror of
https://github.com/gunner47/GyverLamp.git
synced 2025-08-08 01:20:31 +03:00
Исправлены ошибки взаимодействия приложения с лампой; учтены "особенности" работы библиотечного UDP клиента
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -1,19 +1,19 @@
|
|||||||
Функциональная декомпозиция, диаграмма "классов"
|
Функциональная декомпозиция, диаграмма "классов"
|
||||||
|
|
||||||
UI всё, что связано с отображением
|
UI всё, что связано с отображением
|
||||||
1. ScreenManager выор отображаемого экрана
|
1. ScreenManager выбор отображаемого экрана
|
||||||
2. MainScreen управление UI'ем главного экрана (видимость, enable, цвета, позиции и т.д.)
|
2. MainScreen управление UI'ем главного экрана (видимость, enable, цвета, позиции и т.д.)
|
||||||
3. ConnectivityScreen управление UI'ем функций главного экрана (видимость, enable, цвета, позиции и т.д.)
|
3. ConnectivityScreen управление UI'ем экрана уствройств (видимость, enable, цвета, позиции и т.д.)
|
||||||
4. ModesScreen управление UI'ем функций экрана выбора эффектов (видимость, enable, цвета, позиции и т.д.)
|
4. ModesScreen управление UI'ем экрана выбора эффектов (видимость, enable, цвета, позиции и т.д.)
|
||||||
5. FavoritesScreen управление UI'ем функций экрана избранных эффектов (видимость, enable, цвета, позиции и т.д.)
|
5. FavoritesScreen управление UI'ем экрана избранных эффектов (видимость, enable, цвета, позиции и т.д.)
|
||||||
6. AlarmScreen управление UI'ем функций экрана будильника (видимость, enable, цвета, позиции и т.д.)
|
6. AlarmScreen управление UI'ем экрана будильника (видимость, enable, цвета, позиции и т.д.)
|
||||||
7. TimerScreen управление UI'ем функций экрана таймера (видимость, enable, цвета, позиции и т.д.)
|
7. TimerScreen управление UI'ем экрана таймера (видимость, enable, цвета, позиции и т.д.)
|
||||||
|
|
||||||
Backend всё, что связано с логикой
|
Backend всё, что связано с логикой
|
||||||
8. DeviceManager backend функции, связанных с управлением лампами (состояние, эффекты, подключение и т.д.)
|
8. DeviceManager backend функции, связанных с управлением лампами (состояние, эффекты, подключение и т.д.)
|
||||||
9. DiscoverManager
|
9. DiscoverManager функции обнаружения ламп в локальной WiFi сети
|
||||||
10. PollingManager
|
10. PollingManager функции регулярного опроса ламп по таймеру для получения актуальных настроек
|
||||||
11. StringHelper
|
11. StringHelper разные вспомогательные функции для работы со строками
|
||||||
|
|
||||||
System все системные объекты и функции
|
System все системные объекты и функции
|
||||||
11. System_DB хранилище
|
11. System_DB хранилище
|
||||||
@@ -44,7 +44,6 @@ MainScreen
|
|||||||
ScaleSliderPositionChanged метод (событие): действия при изменении слайдера масштаба
|
ScaleSliderPositionChanged метод (событие): действия при изменении слайдера масштаба
|
||||||
UpdateControls метод: обновить отображение элементов управления (статусы enabled/disabled) в зависимости от сохранённых свойств (модели данных)
|
UpdateControls метод: обновить отображение элементов управления (статусы enabled/disabled) в зависимости от сохранённых свойств (модели данных)
|
||||||
SetDebugText метод: установить отладочный текст основной отладочной текстовой метке
|
SetDebugText метод: установить отладочный текст основной отладочной текстовой метке
|
||||||
SetDebugTimeText метод: установить отладочный текст дополнительной отладочной текстовой метке
|
|
||||||
|
|
||||||
ConnectivityScreen
|
ConnectivityScreen
|
||||||
Visible свойство: "Видимость экрана устройств"
|
Visible свойство: "Видимость экрана устройств"
|
||||||
@@ -59,7 +58,6 @@ ConnectivityScreen
|
|||||||
UpdateCurrentDeviceSocket метод: отобразить текущее устройство (DeviceManager.CurrentDeviceSocket) в полях ввода IP адреса и порта на "экране" устройств
|
UpdateCurrentDeviceSocket метод: отобразить текущее устройство (DeviceManager.CurrentDeviceSocket) в полях ввода IP адреса и порта на "экране" устройств
|
||||||
UpdateCurrentDevicesSockets метод: отобразить текущий список сохранённых устройств (DeviceManager.Devices) на "экране" устройств
|
UpdateCurrentDevicesSockets метод: отобразить текущий список сохранённых устройств (DeviceManager.Devices) на "экране" устройств
|
||||||
ValidateAndAddDeviceSocketToList метод: валидировать значения полей ввода IP адреса и порта и добавть запись в список сохранённых устройств; перерисовать этот список
|
ValidateAndAddDeviceSocketToList метод: валидировать значения полей ввода IP адреса и порта и добавть запись в список сохранённых устройств; перерисовать этот список
|
||||||
SetConnectionStatus метод: установить статус Подлкючен/Отключен соответствующей текстовой метке на этом экране
|
|
||||||
UpdateScreen метод: обновить все элементы управления на "экране" устройств согласно модели данных
|
UpdateScreen метод: обновить все элементы управления на "экране" устройств согласно модели данных
|
||||||
|
|
||||||
ModesScreen
|
ModesScreen
|
||||||
@@ -81,7 +79,7 @@ TimerScreen
|
|||||||
|
|
||||||
DeviceManager
|
DeviceManager
|
||||||
Connected свойство: подключено ли устройство (лампа)? точнее, был ли получен ответ на последнюю высланную ему команду
|
Connected свойство: подключено ли устройство (лампа)? точнее, был ли получен ответ на последнюю высланную ему команду
|
||||||
State свойство: полученное командой GET состояние устройства (CURR...)
|
State свойство: полученное командой GET состояние устройства (CURR...), список (не строка)
|
||||||
Devices свойство: список устройств (хранимое свойство)
|
Devices свойство: список устройств (хранимое свойство)
|
||||||
CurrentDeviceSocket свойство: текущее устройство (хранимое свойство)
|
CurrentDeviceSocket свойство: текущее устройство (хранимое свойство)
|
||||||
Modes свойство: список доступных режимов, захардкожен одновременно в лампе и в приложении, должен совпадать
|
Modes свойство: список доступных режимов, захардкожен одновременно в лампе и в приложении, должен совпадать
|
||||||
@@ -89,14 +87,18 @@ DeviceManager
|
|||||||
ConnectDeviceSocket метод: стартовать таймер (polling timer) с регулярной отправкой команд GET/DEB на устройство
|
ConnectDeviceSocket метод: стартовать таймер (polling timer) с регулярной отправкой команд GET/DEB на устройство
|
||||||
DisconnectDeviceSocket метод: остановить таймер (polling timer) с регулярной отправкой команд GET/DEB на устройство; очистить свойства Connected и State
|
DisconnectDeviceSocket метод: остановить таймер (polling timer) с регулярной отправкой команд GET/DEB на устройство; очистить свойства Connected и State
|
||||||
GetCurrentModeId метод: получить номер текущего эффекта из свойства State
|
GetCurrentModeId метод: получить номер текущего эффекта из свойства State
|
||||||
GetCurrentModeId метод: получить имя текущего эффекта из свойства State
|
GetCurrentModeName метод: получить имя текущего эффекта из свойства State
|
||||||
GetCurrentBrightness метод: получить значение текущей яркости из свойства State
|
GetCurrentBrightness метод: получить значение текущей яркости из свойства State
|
||||||
GetCurrentSpeed метод: получить значение текущей скорости из свойства State
|
GetCurrentSpeed метод: получить значение текущей скорости из свойства State
|
||||||
GetCurrentScale метод: получить значение текущего масштаба из свойства State
|
GetCurrentScale метод: получить значение текущего масштаба из свойства State
|
||||||
GetCurrentOn метод: получить значение текущей состояния Вкл/Выкл из свойства State
|
GetCurrentOn метод: получить значение текущего состояния Вкл/Выкл из свойства State
|
||||||
GetCurrentEspMode метод: получить значение текущей состояния ESP_MODE из свойства State
|
GetCurrentEspMode метод: получить значение текущего состояния ESP_MODE из свойства State
|
||||||
GetCurrentUseNtp метод: получить значение текущей состояния USE_NTP из свойства State
|
GetCurrentUseNtp метод: получить значение текущего состояния USE_NTP из свойства State
|
||||||
|
GetCurrentUseTime метод: получить значение текущего времени на устройстве из свойства State
|
||||||
SaveDeviceSocketSettings метод: сохранить с базу данных приложения хранимые значения (текущее стройство и список устройств)
|
SaveDeviceSocketSettings метод: сохранить с базу данных приложения хранимые значения (текущее стройство и список устройств)
|
||||||
|
SetDeviceOffline метод: установить свойства Connected и State в начальное состояние (очистить), соответствует состоянию "устройство не подключено"
|
||||||
|
ResetCurrentDevice метод: установить свойство CurrentDeviceSocket в начальное состояние (очистить), соответствует состоянию "устройство не выбрано"
|
||||||
|
ResetCurrentDevices метод: установить свойство Devices в начальное состояние (очистить), соответствует состоянию "профили устройств не заданы"
|
||||||
ValidateIpPort метод: валидировать переданное в качестве параметра значение IP адреса или порта
|
ValidateIpPort метод: валидировать переданное в качестве параметра значение IP адреса или порта
|
||||||
|
|
||||||
DiscoverManager
|
DiscoverManager
|
||||||
@@ -112,20 +114,24 @@ PollingManager
|
|||||||
UdpPort свойство: номер UDP порта
|
UdpPort свойство: номер UDP порта
|
||||||
TimerIntervalMs свойство: время работы таймера (ограничение используемого компонента), по его истечении таймер постоянно перезапускается для непрерывной работы
|
TimerIntervalMs свойство: время работы таймера (ограничение используемого компонента), по его истечении таймер постоянно перезапускается для непрерывной работы
|
||||||
TimerTickMs свойство: интервал времени, через который будет сгенерировано событие таймера
|
TimerTickMs свойство: интервал времени, через который будет сгенерировано событие таймера
|
||||||
TimerTickCounter свойство: счётчик срабатываний таймера, нужен чтобы вызывать команды управления/запроса состяния устройств по очереди x из n - одна команда (GET), y из n - другая (DEB)
|
LastResponse свойство: текст последнего полученного ответа от модуля esp
|
||||||
StartTimer метод: старт polling таймера
|
LastResponseTime свойство: время последнего полученного ответа от модуля esp
|
||||||
TimerTimerNow метод (событие): действия при срабатывании события polling таймера (отправка команд и перезапуск таймера)
|
TimerTimerNow метод (событие): действия при срабатывании события polling таймера (отправка команд и перезапуск таймера)
|
||||||
UdpClientRecieved метод (событие): действия при получении ответа на отправленные команды от подключенного устройства
|
UdpClientRecieved метод (событие): действия при получении ответа на отправленные команды от подключенного устройства
|
||||||
SendUdpCommand метод: отправить команду, принятую в качестве входного параметра на подключенное устройство
|
StartPolling метод: старт polling таймера
|
||||||
SendGetDebCommandToDevice метод: отправить команды GET или DEB (в зависимости от входного параметра) на подключенное устройство
|
StopPolling метод: стоп polling таймера
|
||||||
|
UpdateDeviceStatus метод: обновить сворйство DeviceManager.Connected, если не установлена (или пропала) связь с устройством; ввиду специфики реализации библиотечного компонента UDP Client приложение постоянно получает его события Recieved с последней строкой-ответом от модуля esp; отсутствие связи с модулем определяется как повторяющийся ответ (он уникален, потому что содержит время) или устаревший ответ (время последнего ответа больше интервала таймера)
|
||||||
|
RequestDeviceState метод: запросить состояние устройства (определить команду и отправить её в udp пакете)
|
||||||
|
SendGetCommandToDevice метод: отправить команду GET на подключенное устройство
|
||||||
SendPowerOnOffCommandToDevice метод: отправить команды On/Off (в зависимости от входного параметра) на подключенное устройство
|
SendPowerOnOffCommandToDevice метод: отправить команды On/Off (в зависимости от входного параметра) на подключенное устройство
|
||||||
SendSetModeCommandToDevice метод: отправить команду смены эффекта на подключенное устройство
|
SendSetModeCommandToDevice метод: отправить команду смены эффекта на подключенное устройство
|
||||||
SendSetBrightnessCommandToDevice метод: отправить команду установки яркости на подключенное устройство
|
SendSetBrightnessCommandToDevice метод: отправить команду установки яркости на подключенное устройство
|
||||||
SendSetSpeedCommandToDevice метод: отправить команду установки скорости на подключенное устройство
|
SendSetSpeedCommandToDevice метод: отправить команду установки скорости на подключенное устройство
|
||||||
SendSetScaleCommandToDevice метод: отправить команду установки масштаба на подключенное устройство
|
SendSetScaleCommandToDevice метод: отправить команду установки масштаба на подключенное устройство
|
||||||
HandleDeviceResponse метод: обработка ответа от подключенного устройства на отправленные команды
|
HandleDeviceResponse метод: обработка ответа от подключенного устройства на отправленные команды
|
||||||
|
SendUdpCommand метод: отправить команду, приянтую в качестве входного аргумента, на подключенное устройствоС (обобщённый метод)
|
||||||
|
|
||||||
StringHelper
|
StringHelper
|
||||||
GetIpPortString метод: получить строку формата IP:PORT из входных параметров IP и PORT
|
GetIpPortString метод: получить строку формата IP:PORT из входных параметров IP и PORT
|
||||||
GetIpFromIpPortString метод: получить IP из входного параметра формата IP:PORT
|
GetIpFromIpPortString метод: получить IP из входного параметра формата IP:PORT
|
||||||
GgetPortFromIpPortString метод: получить PORT из входного параметра формата IP:PORT
|
GetPortFromIpPortString метод: получить PORT из входного параметра формата IP:PORT
|
||||||
|
@@ -186,6 +186,12 @@ void sendCurrent()
|
|||||||
#else
|
#else
|
||||||
inputBuffer += "0";
|
inputBuffer += "0";
|
||||||
#endif
|
#endif
|
||||||
|
inputBuffer += " ";
|
||||||
|
#ifdef USE_NTP
|
||||||
|
inputBuffer += timeClient.getFormattedTime();
|
||||||
|
#else
|
||||||
|
inputBuffer += String(millis());
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef GENERAL_DEBUG
|
#ifdef GENERAL_DEBUG
|
||||||
Serial.println(inputBuffer);
|
Serial.println(inputBuffer);
|
||||||
|
Reference in New Issue
Block a user