Модуль для унифицированной работы с промышленными контроллерами (реле, дискретные входы и т.д.). Позволяет взаимодействовать с различными устройствами через единый интерфейс.
- 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: [email protected]
- 💬 Telegram: @PunchyArchy
- 📞 Phone: +7 996 294-75-95
Проект поддерживается Артуром (PunchyArchy, Qodex)