IoT_monitoring/README.md

42 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# IoT_monitoring
Система мониторинга и сбора информации с устройств.
## О проекте
В ходе стажировки мне была поставлена задача реализовать систему мониторинга за удаленными сетевыми инверторами имеющими COM порт и отдающими данные по нему.
Данные статистики от инвертора необходимо переодически считывать, обрабатывать и сохранять в БД.
В качестве иструмента для хранения информации необходимо использовать timebased базу данных Influxdb.
## Описание системы
Система реализованна в виде 3 основных классов:
### Monitor
Основной диспетчер системы. Запрашивет информацию от конечных устройств через определенные интервалы времени, и отправляет их на сохранение в бд.
### Device
Шаблон класса опрашиваемого устройства. Описывает необходимую структуру реализации коннектора.
Все коннекторы должны наследоваться от него и реализовывать описанные методы. В частности, на данном этапе реализован класс Inverter, который парсит и возвращает полученные данные от инвертора.
Так как физическое подключение к инвертору пока оставлено за скобками, то данные от инвертора представлены в файле telemetry.txt Для работы с ним создан класс FakeInverter, который симулирует получение данных за последние 23ч с интервалом запросов в 10минут.
### InfDBSession
Реализует сессию взаимодействия с БД. Сессия реализует методы:
- add добавление в сессию объекта для записи
- commit записывает в бд все добавленные объекты
## Установка
Используется poetry для управления зависимостями.
Если poetry не установлен:
> pip install poetry
Клонируем:
> git clone https://git.pi3c.ru/pi3c/IoT_monitoring.git
> cd IoT_monitoring
Создаем вирт. окружение с установкой зависимостей
> poetry install --no-root
## ToDo
много чего :)