Сергей Ванюшкин 081b32a139 | ||
---|---|---|
src | ||
tests | ||
.gitignore | ||
README.md | ||
manage.py | ||
poetry.lock | ||
pyproject.toml | ||
telemetry.txt |
README.md
IoT_monitoring
Система мониторинга и сбора информации с устройств.
О проекте
В ходе стажировки мне была поставлена задача реализовать систему мониторинга за удаленными сетевыми инверторами имеющими COM порт и отдающими данные по нему. Данные статистики от инвертора необходимо переодически считывать, обрабатывать и сохранять в БД. В качестве иструмента для хранения информации необходимо использовать timebased базу данных Influxdb.
Описание системы
Система реализованна в виде 3 основных классов:
Monitor
Основной диспетчер системы. Запрашивет информацию от конечных устройств через определенные интервалы времени, и отправляет их на сохранение в бд.
Device
Шаблон класса опрашиваемого устройства. Описывает необходимую структуру реализации коннектора. Все коннекторы должны наследоваться от него и реализовывать описанные методы. В частности, на данном этапе реализован класс Inverter, который парсит и возвращает полученные данные от инвертора. Так как физическое подключение к инвертору пока оставлено за скобками, то данные от инвертора представлены в файле telemetry.txt Для работы с ним создан класс FakeInverter, который симулирует получение данных за последние 23ч с интервалом запросов в 10минут.
InfDBSession
Реализует сессию взаимодействия с БД. Сессия реализует методы:
- add добавление в сессию объекта для записи
- commit записывает в бд все добавленные объекты
Установка
Используется poetry для управления зависимостями.
Если poetry не установлен:
pip install poetry
Клонируем:
cd IoT_monitoring
Создаем вирт. окружение с установкой зависимостей
poetry install --no-root
ToDo
много чего :)