Gravity Controller Operator
Модуль для унифицированной работы с промышленными контроллерами (реле, дискретные входы и т.д.). Позволяет взаимодействовать с различными устройствами через единый интерфейс.
🚀 Поддерживаемые контроллеры
- EmulatorController — заглушка для тестов
- ARMK210Controller — Modbus TCP
- WBMR6LV — Modbus RTU
- NetPing2Controller — HTTP API
- Sigur — доступ через TCP (СКУД)
- MoxaE1214 — REST API (vdn.dac.v1)
🧩 Архитектура
🧠 Интерфейсы:
DIInterface: чтение дискретных входовRelayInterface: чтение/управление релейными выходамиControllerInterface: объединяет оба
Все интерфейсы наследуют SoftStateMixin, в котором реализовано хранение состояния точек (state, changed, addr).
🛠 Контроллер
Каждый контроллер реализует:
self.interface = ControllerInterface(di_interface=..., relay_interface=...)
🧪 Обёртки:
ControllerOperator— отвечает за автоматическое обновление, mutex-безопасность и удобный APIControllerCreator— фабрика создания контроллеров по имени модели (см.controller_factory.py)
🧪 Как использовать
from gravity_controller_operator.controllers.moxa import MoxaE1214
from gravity_controller_operator.controller_operator import ControllerOperator
moxa = MoxaE1214("192.168.60.103")
operator = ControllerOperator(moxa)
print(operator.get_points())
operator.change_relay_state(0, 1) # включить реле 0
🔬 Тестирование
Установка:
pip install pytest
Запуск:
pytest gravity_controller_operator/tests/
📦 Добавление нового контроллера
- Реализуй
YourControllerDIиYourControllerRelay, наследуяDIInterface,RelayInterface - Создай
YourController, в котором:
self.interface = ControllerInterface(di_interface=..., relay_interface=...)
- Добавь контроллер в
AVAILABLE_CONTROLLERSвcontroller_factory.py
📁 Структура
controllers_super.py # Базовые интерфейсы
controllers/ # Реализации контроллеров
controller_operator.py # Обёртка ControllerOperator ✅
controller_factory.py # AVAILABLE_CONTROLLERS + фабрика ✅
exceptions.py # Кастомные исключения ✅
tests/ # Тесты
README.md
🤝 Контакты
- 📧 Email: ksmdrmvstchny@gmail.com
- 💬 Telegram: @PunchyArchy
- 📞 Phone: +7 996 294-75-95
Проект поддерживается Артуром (PunchyArchy, Qodex)
Metadata
Release files for gravity-controller-operator 2.3.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 | |
|---|---|---|---|
| gravity_controller_operator-2.3.0.tar.gz | 16.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gravity_controller_operator-2.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.0 kB
Release files / gravity_controller_operator-2.3.0.tar.gz
| Download URL | gravity_controller_operator-2.3.0.tar.gz |
|---|---|
| Size | 16.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5e7af2c34ecb722d21854c7b2c835f993818e1e3bc3e9b2ddaa83f9c8532420e
|
|
BLAKE2b-256 checksum How to use checksums |
c77708fb444aa451d00df1a70b5d44bf9b5683c39ffca24be547760a34756dbc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.0
|
Release files / gravity_controller_operator-2.3.0-py3-none-any.whl
| Download URL | gravity_controller_operator-2.3.0-py3-none-any.whl |
|---|---|
| Size | 21.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dde8ec9d646db52420b288b5d9d065b66546f73dfa1fe72dd6f2f5f9a8b783b1
|
|
BLAKE2b-256 checksum How to use checksums |
34102d118abffab0f7476e98b9f25493ee109e46efb201d12d079b3a93f398e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.0
|