Как работать с ФР Штрих-М из python (или как-то еще)?
Необходимо получать состояние парка фискальных регистраторов Штрих-М в автоматическом режиме по ethernet.
Я указал bash и python(в приоритете), но устроит любая реализация.
Удалось найти только pyshtrih, но это вроде библиотека для локального использования (COM-порт), а надо - по сети.
Рад буду любым идеям.
Конечная цель - собирать статусы фискальных регистраторов: параметры, состояния.
а что это за фискальные регистраторы? Какие интерфейсы, какой протокол, какие возможности?
Не знаю что такое фискальный регистратор, поэтому сложно понять какие у них есть статусы и параметры, которые можно собирать через сеть. Эти фискальные регистраторы подключены к машинам на linux?
Сергей, а по usb они передают данные или только питание? Ethernet может быть заменой com порту? На вин машинах получится запустить полноценный bash скрипт? Сходу приходит решение влоб ковыряться в протоколе и сделать переадресацию поступающего в com порт траффика с помощью bash на сервер локальной сети или к примеру в файл-лог который пойзже расшифровывать. если регистраторов не очень много то можно взять разветвитель com-ethernet от Овен ПЛК(но это затратно и придется ковырятся в протоколе) А вы хотите только собирать статусы и информацию с регистрторов(которую они автоматически отправляют) или собирать и отправлять команды(запросы на определенную информацию)?
Сергей Сергей, eegmak,
Через ethernet виндовый драйвер работает так же, как и через локальный порт.
pyshtrih, как я понимаю, ищет аппарат только на локальных портах.
Похоже, протокол по COM/Ethernet идентичный. Можно брать за основу pyshtrih и, наследуясь от Device, заменить подключение через com на установку tcp-соединения. В теории, сработает.
Сергей, под локальными портами вы имеете в виду порты которые расположены на физическом устройстве на котором запущен скрипт или только ком порт? с помощью pyshtrih через ethernet можно подключится если скрипт и устройство на одном компьютере?
Дмитрий Шицков, вот это мне совершенно не понятно ... с какой стороны подходить? можете дать ссылку на пример "на пальцах" ?
eegmak, в pyshtrih работает автоматическое обнаружение (функция discovery) поддерживаемых устройств через serial.
Я не нашел намеков на поддержку TCP/IP.
Через виндовый драйвер для подключения требуются:
по com-порту: номер порта, скорость
по сети: адрес (IP или hostname), TCP-порт
Сергей, попробуйте подключить к сети устройство, просканировать так сказать порты-айпи, если что-то найдется то попытайтесь подключиться как нибудь через терминал к этому порту и послать всякиеразные команды и посмотрите будет ли какой ответ, если ответ будет предугадываться содержанием файла протокола, значит протокол такой же как и на компорте.
Проще наверное подключаться к устройству через уже готовую библиотеку по компорту + добавить в скрипт элемент удаленного управления в виде flask или его более легковесных аналогов
eegmak, протокол - такой же, это точно.
сканер портов ни чего не показывает.
снифить трафик и изобретать свою реализацию драйвера - как минимум, не хватит компетенций.
я надеялся получить консультацию тех, кто уже сталкивался с таким вопросом.
С написания ТЗ и поиска разработчика на Python, который напишет недостающий класс для подключения по TCP вместо COM.
Но прежде чем давать такое ТЗ разрабу, лучше конечно удостовериться, что если команду отправить ко COM-порту и такую же отправить через какой-нибуть netcat/telnet - получится одинаковый ответ от устройства. Тогда можно с уверенностью сказать что только транспорт для этого протокола отличается.
Ну и как eegmak советует - так же можно поступить. Если из всего протокола требуется разве что одна команда, проще разработать софтинку/скриптик которая эту команду и отправляет. Хоть используя тот же bash и netcat, если уж совсем упрощать. А дальше такой скрипт можно скормить, например, Заббиксу. Или Nagios. Или ещё какой системе мониторинга.
Начал библиотеку Python для ФР фирмы КИТ-Инвест. Возможно принцип работы Штрих-М похож, надо читать документацию.
По интерфейсу - разницы никакой, байты туда-сюда ходят одинаковые.