PowerMonitor
Power Monitor project for competition
Install / Use
/learn @AshFungor/PowerMonitorREADME
Мониторинг комплекса энергоснабжения
- Анализ технических требований -
В техническом задании указана модель клиент-серверного приложения. Клиент должен уметь соединятся с сервером, принимать данные телеметрии и синхронизировать локальные настройки для поддержи единой базы пользователей среди клиентов сервера. Клиент должен поддерживать построение графиков эффективности работы АКЭС, добавление/удаление/изменение учетных записей, а также иметь GUI для взаимодействия с пользователем. Сервер должен уметь принимать различные запросы клиентов, работать с серверной базой данных и выгружать из нее запрашиваемые клиентом данные по определенному критерию.
- Обоснование выбора инструментария -
Для реализации клиента используется AvaloniaUI из-за широкой поддержки платформ, скорости разработки и возможности использования широких возможностей .NET 6 и C#
Avalonia is a cross-platform UI framework for dotnet, providing a flexible styling system and supporting a wide range of Operating Systems such as Windows, Linux, MacOs. Avalonia is mature and production ready. We also have in beta release support for iOS, Android and in early stages support for browser via WASM.
(цитата взята из официального репозитория AvaloniaUI)
Также были использованы пакеты NuGet для реализации отдельных модулей клиента, их полный список приведен ниже:
- CsvHelper (работа с *.csv файлами)
- OxyPlot.Avalonia и OxyPlot.Core (работа с графиками)
- ExtremelySimpleLogger (логирование)
- GemBox.Spreadsheet (выгрузка данных в таблицу)
- Avalonia.Svg.Skia (отображение .svg изображений)
- Newtonsoft.Json (обработка JSON)
Выбор на эти пакеты пал в основном благодаря простоте работы с ними и их популярности.
Ассеты для GUI клиентской части были взяты из Tela circle icon theme.
Сервер был реализован на языке Python с использованием микрофреймворка Flask, предоставляющего широкий набор инструментов для обработки запросов, тестирования и реализации интерфейса взаимодействия, а также обеспечивающего высокую скорость разработки.
Flask is a lightweight WSGI web application framework. It is designed to make getting started quick and easy, with the ability to scale up to complex applications. It began as a simple wrapper around Werkzeug and Jinja and has become one of the most popular Python web application frameworks.
(цитата взята из официального репозитория Flask)
Помимо основного фреймворка в реализации серверной части были использованы такие модули, как:
- psycopg2 (работа с СУБД)
- pydantic (валидация данных и работа с json)
- python-dotenv (работа с переменными окружения)
- cryptography (шифрование паролей)
В качестве системы управления базами данных была выбрана PostgreSQL, как одна из наиболее мощных и широко используемых реляционных СУБД.
PostgreSQL is a powerful, open source object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance.
(цитата взята из официального сайта PostgreSQL)
- Структурная и функциональная схемы серверной и клиентской части -
структурная схема клиента:

функциональная схема клиента:

функциональная схема описывает только основные и в большинстве заметные пользователю действия, вследствие этого большая часть функциональности контроллеров не представлена
структурная схема сервера:

функциональная схема сервера:

(commented by Ash_Fungor)
- Блок-схема работы основного алгоритма -

- Схема базы данных -

- Скриншоты -

возможны небольшие изменения в GUI клиента
(commented by Ash_Fungor)
- Описание проведенных испытаний -
https://user-images.githubusercontent.com/77846294/163652996-c67a0fc7-3989-4ccd-bf26-cc5a5886a121.mp4
