Модуль для унифицированной работы с промышленными контроллерами (реле, дискретные входы и т.д.). Позволяет взаимодействовать с различными устройствами через единый интерфейс.
- 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)