prs-connector-core
Базовый модуль для создания коннекторов платформы Пересвет.
Коннектор - программа, которая может собирать данные с какого-либо источника и отправлять их в платформу. Также коннектор может отсеивать лишние данные и проводить обработку полученных данных с помощью языка JSONata.
Описание проекта
prs-connector-core — это Python-модуль, реализующий общую функциональность для коннекторов платформы Пересвет.
Модуль предоставляет базовые классы, на основе которых можно создавать коннекторы для конкретных источников данных (OPC, Modbus, базы данных и др.).
Базовая функциональность и основные возможности:
- Установление связи с платформой Пересвет по протоколу MQTT
- Получение от платформы конфигурации:
- настройка связи с источником данных,
- параметры логирования,
- список тегов, по которым необходимо получать данные
- Поддержка защищённого канала связи с SSL/TLS
- Преобразование данных через JSONata
- Отсеивание лишних данных
- Локальное кэширование конфигурации при потере связи с платформой
- Буферизация данных при потере связи с платформой
- Ротация логов
После восстановления MQTT коннектор не шлёт «текущие» значения в data_set до ответа платформы prsConnector.full_configuration: платформа сначала пишет в теги null с качеством 101. Накопленный буфер разрыва (исходные метки времени) можно отправить сразу после CONNECT. После разбора первого конфига сессии ядро заново читает все привязанные теги и отправляет снимок, даже если значение на источнике не изменилось.
Работа с проектом
Требования
- Python 3.12 или новее
- pip 21.3+
- pipenv
- pyenv
Работа над исходным кодом
Клонируйте репозиторий и выполните команды в консоли:
git clone git@github.com:mp-co-ru/prs-connector-core.git
cd prs-connector-core
pipenv install
Запуск тестов
$ pytest
Сборка пакета
$ python -m build
Запуск нескольких экземпляров коннектора
Проекты коннекторов, использующие prs_connector_core.main(), могут запускать
несколько экземпляров на одной машине. Каждый экземпляр должен получать свой
JSON-файл конфигурации с уникальным id:
python connector.py --config /etc/prs-connectors/modbus-line-1.json
PRS_CONNECTOR_CONFIG=/etc/prs-connectors/modbus-line-2.json python connector.py
Для постоянного запуска нескольких экземпляров добавлены шаблоны:
deployment/systemd/prs-connector@.service.example;deployment/docker/compose.example.yml;deployment/docker/Dockerfile.example.
Подробная процедура описана в docs/source/multi_instance_launch.rst.
Версионирование
Версия пакета не хранится в коде вручную, а вычисляется при сборке из имени git-тега с помощью setuptools-scm.
- В репозитории создаются теги вида
v0.9.0,v1.0.0и т.п. При сборке (python -m build) setuptools-scm по текущему коммиту и тегам определяет версию и генерирует файлprs_connector_core/_version.py(он в.gitignoreи не коммитится). - В коде версия доступна как
prs_connector_core.__version__: она берётся из сгенерированного_version.py, при его отсутствии — из метаданных установленного пакета, иначе используется"0.0.0.dev0"(например, при разработке без тега). - Релизы: при публикации Release в GitHub с тегом (например
v0.9.0) workflow собирает пакет с этой версией и публикует его в PyPI.
Metadata
Release files for prs-connector-core 0.16.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| prs_connector_core-0.16.0.tar.gz | 138.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| prs_connector_core-0.16.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 164.9 kB
Release files / prs_connector_core-0.16.0.tar.gz
| Download URL | prs_connector_core-0.16.0.tar.gz |
|---|---|
| Size | 138.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d283cf8bce8b075057d03463f7f0f67ae684de6760e7dc6e85439e4b22dba4e0
|
|
BLAKE2b-256 checksum How to use checksums |
cfb4aaeb3526043cd8d87b89380140f0e96f2900a2a86777513e0742fc7bcafb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency logRelease files / prs_connector_core-0.16.0-py3-none-any.whl
| Download URL | prs_connector_core-0.16.0-py3-none-any.whl |
|---|---|
| Size | 26.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9452e34e21d6a4a9cfc053c8022e0aeed6f00b516edc63a3cbff36ff02822a36
|
|
BLAKE2b-256 checksum How to use checksums |
405d93c40bf98dcb6bc5f77c789b7c39bc24b0b45c263258eb1809be84e2ce3c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency log