48 lines
3.2 KiB
Markdown
48 lines
3.2 KiB
Markdown
# 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
|
||
|
||
## Запуск демо
|
||
Для тестового запуска
|
||
- создать файл с секретами .env_test в корне проекта. В нем описать параметры подключения к influxdb
|
||
- запустить тестовый режим с чтением данных из файла
|
||
> poetry run manage.py --demo
|
||
|
||
## ToDo
|
||
много чего :)
|