diff --git a/android/LedLamp.aia b/android/LedLamp.aia index 9f039dc..707e949 100644 Binary files a/android/LedLamp.aia and b/android/LedLamp.aia differ diff --git a/android/LedLamp.apk b/android/LedLamp.apk index db9d0b5..b117674 100644 Binary files a/android/LedLamp.apk and b/android/LedLamp.apk differ diff --git a/android/Декомпозиция.txt b/android/Декомпозиция.txt index c93e62b..1d669c5 100644 --- a/android/Декомпозиция.txt +++ b/android/Декомпозиция.txt @@ -1,19 +1,19 @@ Функциональная декомпозиция, диаграмма "классов" UI всё, что связано с отображением -1. ScreenManager выор отображаемого экрана +1. ScreenManager выбор отображаемого экрана 2. MainScreen управление UI'ем главного экрана (видимость, enable, цвета, позиции и т.д.) -3. ConnectivityScreen управление UI'ем функций главного экрана (видимость, enable, цвета, позиции и т.д.) -4. ModesScreen управление UI'ем функций экрана выбора эффектов (видимость, enable, цвета, позиции и т.д.) -5. FavoritesScreen управление UI'ем функций экрана избранных эффектов (видимость, enable, цвета, позиции и т.д.) -6. AlarmScreen управление UI'ем функций экрана будильника (видимость, enable, цвета, позиции и т.д.) -7. TimerScreen управление UI'ем функций экрана таймера (видимость, enable, цвета, позиции и т.д.) +3. ConnectivityScreen управление UI'ем экрана уствройств (видимость, enable, цвета, позиции и т.д.) +4. ModesScreen управление UI'ем экрана выбора эффектов (видимость, enable, цвета, позиции и т.д.) +5. FavoritesScreen управление UI'ем экрана избранных эффектов (видимость, enable, цвета, позиции и т.д.) +6. AlarmScreen управление UI'ем экрана будильника (видимость, enable, цвета, позиции и т.д.) +7. TimerScreen управление UI'ем экрана таймера (видимость, enable, цвета, позиции и т.д.) Backend всё, что связано с логикой 8. DeviceManager backend функции, связанных с управлением лампами (состояние, эффекты, подключение и т.д.) -9. DiscoverManager -10. PollingManager -11. StringHelper +9. DiscoverManager функции обнаружения ламп в локальной WiFi сети +10. PollingManager функции регулярного опроса ламп по таймеру для получения актуальных настроек +11. StringHelper разные вспомогательные функции для работы со строками System все системные объекты и функции 11. System_DB хранилище @@ -44,7 +44,6 @@ MainScreen ScaleSliderPositionChanged метод (событие): действия при изменении слайдера масштаба UpdateControls метод: обновить отображение элементов управления (статусы enabled/disabled) в зависимости от сохранённых свойств (модели данных) SetDebugText метод: установить отладочный текст основной отладочной текстовой метке - SetDebugTimeText метод: установить отладочный текст дополнительной отладочной текстовой метке ConnectivityScreen Visible свойство: "Видимость экрана устройств" @@ -59,7 +58,6 @@ ConnectivityScreen UpdateCurrentDeviceSocket метод: отобразить текущее устройство (DeviceManager.CurrentDeviceSocket) в полях ввода IP адреса и порта на "экране" устройств UpdateCurrentDevicesSockets метод: отобразить текущий список сохранённых устройств (DeviceManager.Devices) на "экране" устройств ValidateAndAddDeviceSocketToList метод: валидировать значения полей ввода IP адреса и порта и добавть запись в список сохранённых устройств; перерисовать этот список - SetConnectionStatus метод: установить статус Подлкючен/Отключен соответствующей текстовой метке на этом экране UpdateScreen метод: обновить все элементы управления на "экране" устройств согласно модели данных ModesScreen @@ -81,7 +79,7 @@ TimerScreen DeviceManager Connected свойство: подключено ли устройство (лампа)? точнее, был ли получен ответ на последнюю высланную ему команду - State свойство: полученное командой GET состояние устройства (CURR...) + State свойство: полученное командой GET состояние устройства (CURR...), список (не строка) Devices свойство: список устройств (хранимое свойство) CurrentDeviceSocket свойство: текущее устройство (хранимое свойство) Modes свойство: список доступных режимов, захардкожен одновременно в лампе и в приложении, должен совпадать @@ -89,14 +87,18 @@ DeviceManager ConnectDeviceSocket метод: стартовать таймер (polling timer) с регулярной отправкой команд GET/DEB на устройство DisconnectDeviceSocket метод: остановить таймер (polling timer) с регулярной отправкой команд GET/DEB на устройство; очистить свойства Connected и State GetCurrentModeId метод: получить номер текущего эффекта из свойства State - GetCurrentModeId метод: получить имя текущего эффекта из свойства State + GetCurrentModeName метод: получить имя текущего эффекта из свойства State GetCurrentBrightness метод: получить значение текущей яркости из свойства State GetCurrentSpeed метод: получить значение текущей скорости из свойства State GetCurrentScale метод: получить значение текущего масштаба из свойства State - GetCurrentOn метод: получить значение текущей состояния Вкл/Выкл из свойства State - GetCurrentEspMode метод: получить значение текущей состояния ESP_MODE из свойства State - GetCurrentUseNtp метод: получить значение текущей состояния USE_NTP из свойства State + GetCurrentOn метод: получить значение текущего состояния Вкл/Выкл из свойства State + GetCurrentEspMode метод: получить значение текущего состояния ESP_MODE из свойства State + GetCurrentUseNtp метод: получить значение текущего состояния USE_NTP из свойства State + GetCurrentUseTime метод: получить значение текущего времени на устройстве из свойства State SaveDeviceSocketSettings метод: сохранить с базу данных приложения хранимые значения (текущее стройство и список устройств) + SetDeviceOffline метод: установить свойства Connected и State в начальное состояние (очистить), соответствует состоянию "устройство не подключено" + ResetCurrentDevice метод: установить свойство CurrentDeviceSocket в начальное состояние (очистить), соответствует состоянию "устройство не выбрано" + ResetCurrentDevices метод: установить свойство Devices в начальное состояние (очистить), соответствует состоянию "профили устройств не заданы" ValidateIpPort метод: валидировать переданное в качестве параметра значение IP адреса или порта DiscoverManager @@ -112,20 +114,24 @@ PollingManager UdpPort свойство: номер UDP порта TimerIntervalMs свойство: время работы таймера (ограничение используемого компонента), по его истечении таймер постоянно перезапускается для непрерывной работы TimerTickMs свойство: интервал времени, через который будет сгенерировано событие таймера - TimerTickCounter свойство: счётчик срабатываний таймера, нужен чтобы вызывать команды управления/запроса состяния устройств по очереди x из n - одна команда (GET), y из n - другая (DEB) - StartTimer метод: старт polling таймера + LastResponse свойство: текст последнего полученного ответа от модуля esp + LastResponseTime свойство: время последнего полученного ответа от модуля esp TimerTimerNow метод (событие): действия при срабатывании события polling таймера (отправка команд и перезапуск таймера) UdpClientRecieved метод (событие): действия при получении ответа на отправленные команды от подключенного устройства - SendUdpCommand метод: отправить команду, принятую в качестве входного параметра на подключенное устройство - SendGetDebCommandToDevice метод: отправить команды GET или DEB (в зависимости от входного параметра) на подключенное устройство + StartPolling метод: старт polling таймера + StopPolling метод: стоп polling таймера + UpdateDeviceStatus метод: обновить сворйство DeviceManager.Connected, если не установлена (или пропала) связь с устройством; ввиду специфики реализации библиотечного компонента UDP Client приложение постоянно получает его события Recieved с последней строкой-ответом от модуля esp; отсутствие связи с модулем определяется как повторяющийся ответ (он уникален, потому что содержит время) или устаревший ответ (время последнего ответа больше интервала таймера) + RequestDeviceState метод: запросить состояние устройства (определить команду и отправить её в udp пакете) + SendGetCommandToDevice метод: отправить команду GET на подключенное устройство SendPowerOnOffCommandToDevice метод: отправить команды On/Off (в зависимости от входного параметра) на подключенное устройство SendSetModeCommandToDevice метод: отправить команду смены эффекта на подключенное устройство SendSetBrightnessCommandToDevice метод: отправить команду установки яркости на подключенное устройство SendSetSpeedCommandToDevice метод: отправить команду установки скорости на подключенное устройство SendSetScaleCommandToDevice метод: отправить команду установки масштаба на подключенное устройство HandleDeviceResponse метод: обработка ответа от подключенного устройства на отправленные команды + SendUdpCommand метод: отправить команду, приянтую в качестве входного аргумента, на подключенное устройствоС (обобщённый метод) StringHelper GetIpPortString метод: получить строку формата IP:PORT из входных параметров IP и PORT GetIpFromIpPortString метод: получить IP из входного параметра формата IP:PORT - GgetPortFromIpPortString метод: получить PORT из входного параметра формата IP:PORT + GetPortFromIpPortString метод: получить PORT из входного параметра формата IP:PORT diff --git a/firmware/GyverLamp_v1.4/parsing.ino b/firmware/GyverLamp_v1.4/parsing.ino index a2fd7e4..bf27321 100644 --- a/firmware/GyverLamp_v1.4/parsing.ino +++ b/firmware/GyverLamp_v1.4/parsing.ino @@ -186,6 +186,12 @@ void sendCurrent() #else inputBuffer += "0"; #endif + inputBuffer += " "; + #ifdef USE_NTP + inputBuffer += timeClient.getFormattedTime(); + #else + inputBuffer += String(millis()); + #endif #ifdef GENERAL_DEBUG Serial.println(inputBuffer);