Итак, здесь есть два метода, и это зависит от того, куда вы хотите пойти.А) вы можете получить версию командной строки, работающую как usbrelay, а затем выдавать команды из python, и Б) вы можете открыть последовательное соединение изнутри python и использовать usb.core или usb.util для отправки последовательных команд на плату.
A) Работа Darrylb над github - хороший обзор здесь, чтобы получить инструмент командной строки, работающий для HID-совместимых реле.https://github.com/darrylb123/usbrelay
Если вы используете Debian:
sudo apt-get install usbrelay
Затем вы обновляете свой файл rules.d, чтобы вам не приходилось постоянно использовать 'sudo', и вы можете вызыватькомандная строка в Python.Конечно, это имеет определенные последствия для безопасности, которые вы должны найти в Google, если планируете использовать этот более длительный срок.
В любом случае, как только вы установите его, вы можете просто вызвать его из командной строки, и он выведет списокваши relay_ids в каком-то формате с суффиксами, которые выглядят как _1 - _8.
$ ./usbrelay
На выходе будет отображаться информация о подключенной плате, а также идентификаторы реле и статус.«1» включен, а «0» выключен.
затем из питона:
import os
os.system("usbrelay 5291D_1=1 5291D_3=1")
Чтобы отключить их, просто измените их в назначениях на нули, и вы можете сделать все восемь номеров реле одновременно.Таким образом, вы можете продолжить писать все виды функций для запуска ваших реле в уникальных комбинациях, задержках и т. Д. Вы также можете использовать подпроцесс из Python:
import subprocess
subprocess.run(['usbrelay', '5291D_1=1', '5291D_3=1'], stdout=subprocess.PIPE).stdout.decode('utf-8')
B) Чтобы установить последовательное соединениеподход, вы должны начать с знания, какие правильные последовательные команды для вашей платы.Например, у меня есть 16-канальное реле sainsmart, которое требует от меня посылать последовательные команды, потому что оно не совместимо с HID.
Найдите номер вашей модели здесь, на Sainsmart Wiki: http://wiki.sainsmart.com/index.php/SKU
Затем скачайте zip-файл и ознакомьтесь с инструкциями к реле.Для меня я использовал модификацию работы RJ для отправки последовательной команды.
https://gist.github.com/RJ/7acba5b06a03c9b521601e08d0327d56
Это из инструкций для моего номера SKU (скорее всего, отличается от вашего!) CH-6 ON 3A 4645 30 35 30 30 30 35 46 46 30 30 46 39 0D 0A
Вам необходимо добавить префикс 0x к последовательным сообщениям:
c6_on=[0x3A, 0x46, 0x45, 0x30, 0x35, 0x30, 0x30, 0x30, 0x35, 0x46, 0x46, 0x30, 0x30, 0x46, 0x39, 0x0D, 0x0A]
Затем вы можете отправить эти командыusb.core.Endpoint, используя подход, как RJ подошел к нему в приведенной выше ссылке на git gist, где «ep» здесь - это usb.core.Endpoint:
ep.write(c6_on)
В любом случае, если вы можетеА) управлять платой из командной строки или Б) знать правильные последовательные команды для отправки, тогда вы можете выяснить, как это сделать с помощью Python.Единственное, на что нужно обратить внимание - это убедиться, что у вас есть соответствующие зависимости, и следить за разрешениями.