USB-реле для управления нагрузкой по 220v


Для автоматического запуска тестов на устройствах (от обычного систменого блока до отладочных плат) нужно было устройство для автоматической перезагрузки SUT. Про устройства типа PDU (Power Distribution Unit) я в курсе, но нужно то же самое для настольного применения.

После некоторых поисков остались такие варианты:

  • JTAG-кабель (например JTAG Olimex) имеет возможность послать сигнал перезагрузки. Из минусов: кабель может быть дорогой и не все устройства имеют JTAG разъем. Больше информации.
  • “Пилот” с управлением по USB (Defender DFS-701), похоже что не продается
  • EG-PMS2-LAN, управление питанием по сети, не продается https://energenie.com/item.aspx?id=7416 (купить)
  • реле для управления питанием, я нашёл такие варианты:
  • управление питанием маломощных устройств, которые могут получать питание по USB, с помощью uhubctl. Минусы: USB максимум 5V может отдать, у нас в устройствах бывает больше 5V и хотелось всё-таки иметь возможность управлять питанием обычных настольных компьютеров.
  • серия устройств NetPing. Минусы: дорого и наличие сети усложняет инфраструктуру.

Инструкция

Я остановился на RODOS-3b. Для сборки купил корпус, вилку и розетку 2П+З 16А 250В на кабель, кусок провода ШВВП 2.0 x 5. После сборки получился удлинитель с реле. Провод к реле подключал в разъёмы N.O и COM (см. инструкцию), чтобы большую часть времени реле было разомкнуто. В идеале хотелось бы встроить реле в розетку, наподобие такой, но нет гарантии, что места внутри под реле хватит, поэтому нашел коробку в форме параллелипипеда и упаковал реле в него.

Подключаем устройство по USB и проверяем, что оно появилось в системе:

$ lsusb 
...
Bus 001 Device 017: ID 20a0:4173 Clay Logic 
...
$

Выполняем поиск устройства с помощью управляющей программы:

$ sudo ./RODOS3
Поиск устройств...
RODOS-3 ID: 7621
Найдено RODOS-3: 1
$

По умолчанию, для доступа к USB устройству нужны права суперпользователя. Чтобы избежать этого нужно создать файл с правилом для udev:

$ cat /etc/udev/rules.d/60-rodos3.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="4173", MODE="0666"

Перезагрузить правила:

$ udevadm control --reload-rules

И физически переподключить устройство. После этого можно управлять устройством под обычным пользователем.

По умолчанию программа от производителя может делать только ON и OFF для устройства. Поэтому в моей версии есть небольшой патч, который добавляет опцию --reset.

На плате iMX.6 при перезагрузке с помощью кабеля питания не происходит правильной реинициализации сетевой карты, U-boot пишет: No ethernet found.. Чтобы этого избежать можно добавить в bootcmd команду reset:

=> printenv
...
bootcmd=tftp Komset/kos-image; bootelf 0x12000000; reset
...
=> setenv bootcmd 'tftp Komset/kos-image; bootelf 0x12000000; reset'
=> saveenv

На тему управления питанием есть два интересных доклада:

Метки: softwaretesting