Краткий обзор нескольких плат удаленного управления ригами

Данный пост посвящен нескольким платам, помогающим управлять ригом в аварийных (да и не только в аварийных) ситуациях — когда, например, через штатные средства (SSH, radmin и так далее) риг становится недоступен и его надо перезапустить.

В данной ситуации интересны прежде всего автономные платы — так называемые Ethernet-реле. Фактически, это мини-компьютер с подключением к локальной сети, веб-сервером для доступа к веб-интерфейсу (через который и происходит управление платой), а также несколькими реле для управления той или иной нагрузкой.

В нашем случае «нагрузкой» могут быть как сигнальные цепи — например, управление кнопкой power или reset материнской платы — так и силовые — установленные реле вполне позволяют коммутировать нагрузку до 2 КВт и их вполне можно использовать для того, чтобы целиком обесточить блок питания рига.

Первой опробованной мной платой стал 8-канальный экземпляр, показанный на фото. Заказать его можно на ebay по цене порядка 37$.

 

 

Некоторые особенности платы:

  • Возможность задать пароль на веб-интерфейс
  • Интерфейс на двух языках — английском и китайском
  • Помимо релейных выходов, на плате также есть 8 входов. В настройках можно задать действия при наличии сигнала на определенном входе. Например, выход может включаться не только по команде в веб-интерфейсе, а и по сигналу со входа. Пример использования: включение света по датчику движения или вручную на постоянной основе. Также можно делать связи между входами и выходами, задавая специальные маски — это можно сделать на странице «Scene of settings».
  • 2 интерфейса управления платой — через веб-интерфейс и через modbus через спец-утилиты (данный вариант я так и не развил — то ли утилиты не нашел, то ли не смог собрать — в итоге использовал «дергание» кнопок wget’ом в веб-интерфейса)
  • Возможность задать названия для каждого из каналов. Т.е., в случае с ригами можно подписать кнопки в стиле «miner1», «miner2» и так далее.
  • Дополнительная кнопка, позволяющая включать реле на настраиваемый таймаут. Удобно для имитирования кратковременного нажатия на кнопку питания (тут хорошо подходит дефолтный таймаут в 1 с), либо для реализации тех или иных особенностей рига — например, выключать силовое питания рига на Chieftec’ах на 120 с для полной разрядки входных емкостей или эмуляция нажатия кнопки power на 4 секунды для аварийного выключения.

Плата имеет достаточно широкий диапазон входных напряжений — от 9 до 35V — на входе стоит DC-DC, который и формирует уже нужное плате напряжение. Разъем — типичный для низковольтного питания техники. Можно, например, использовать блок питания от роутера на подходящий ток.

Плата настраивается исключительно с помощью статического адреса. Кроме адреса и маски подсети, в настройках также есть установка MAC-адреса, шлюз, DNS-серверы. Зачем последние опции на плате, которой совсем не нужно ходить в интернет — не знаю.

Дефолтные логин/пароль — admin/12345678. IP-адрес — 192.168.0.105, однако на второй купленной плате он был 192.168.1.166.

Сброс настроек — зажимаем кнопку reset и включаем питание.

Дергать реле из консоли можно следующими командами:

wget -qO /dev/null --user=admin --password=12345678 http://192.168.1.166/relay_en.cgi --post-data="saida1on"
wget -qO /dev/null --user=admin --password=12345678 http://192.168.1.166/relay_en.cgi --post-data="saida1off"
wget -qO /dev/null --user=admin --password=12345678 http://192.168.1.166/relay_en.cgi --post-data="saida9on"
wget -qO /dev/null --user=admin --password=12345678 http://192.168.1.166/relay_en.cgi --post-data="saida9off"

Из интересных опций в настройках — включение соответствия входного сигнала выходному реле, включение работы по маске (упомянутые выше scene of settings), сохранение состояния между выключениями — опция «Power-down state of save» в настройках. Состояние восстанавливается мгновенно — еще даже до полной загрузки платы (когда начинает мигать второй светодиод).

 

Плата отлично показала себя в работе. Ни одного ложного срабатывания за примерно год использования. Платой контролировались сигнальные кнопки power у ряда ригов, причем часть ригов находилась через стену в соседнем помещении и туда тянулся шлейф длиной порядка 15 метров (витая пара с разводкой по ригам на конце).

Единственным недостатком казалась только цена, поэтому периодически просматривался ebay в поисках новых вариантов.

Одним из дешевых вариантов были найдены платы USB-реле, но о них позже, а сейчас опишу вторую плату с ethernet-интерфейсом, которую опробовал только сегодня.

Данная плата больше напоминает конструктор и, фактически, состоит из двух частей: небольшой платы с контроллером и ethernet-интерфейсом и второй платы, где расположены реле. Причем, на ebay продаются варианты, например, как на 8, так и на 16 каналов — меняется лишь плата с реле, а контроллер остается тот же.  Цена платы ощутимо более привлекательна — примерно за те же деньги, что стоит первая плата на 8 каналов, тут получаем 16. Либо можно взять примерно за 28$ плату на 8 каналов.

Итак, особенности этой платы:

  • Веб-интерфейс крайне примитивен. Практически нет настроек — лишь IP-адрес (дефолтный 192.168.1.4) и «порт» (дефолт — 30000), причем это не порт веб-интерфейса (см. ниже)
  • Соответственно, никаких «имен для ригов». Хотя это несложно организовать отдельной веб-страничкой на сервисном хосте, с которой уже будут дергаться нужные ссылки в веб-интерфейсе. Если, конечно, этот хост есть.
  • Никакой авторизации. Фактически, весь «секрет» состоит в так называемом «порте» — названии странички в веб-интерфейсе.
  • Плата больше подходит тем, кто не боится работать руками. Например, контроллер имеет питание 5В, плата с реле — 12В. Оба питания потребуется организовать — т.е., как минимум, поставить стабилизатор 12->5, чтобы можно было запитывать обе платы от одного источника. Update: плата на 8 портов может питаться только от источника на 5В, доработок не требуется.
  • Плата не сохраняет состояние между выключениями — этого в принципе не предусмотрено.

Все управление реле делается GET-запросами — не важно, будет это делаться со штатных веб-страничек или через консоль.  Ссылки на веб-страничке, фактически, динамически генерируются в зависимости от состояния реле. Из консоли можно управлять реле такими запросами:

wget -qO /dev/null http://192.168.1.4/30000/04
wget -qO /dev/null http://192.168.1.4/30000/05

Собственно, /30000/ после IP-адреса — это и есть тот самый «порт». А код после него — смена состояния реле.

Продублирую коды со странички лота:

HTTP Comment:

http://192.168.1.4/30000/00 : Relay-01 OFF

http://192.168.1.4/30000/01 : Relay-01 ON

http://192.168.1.4/30000/02 : Relay-02 OFF

http://192.168.1.4/30000/03 : Relay-02 ON

http://192.168.1.4/30000/04 : Relay-03 OFF

http://192.168.1.4/30000/05 : Relay-03 ON

...

http://192.168.1.4/30000/30 : Relay-16 OFF

http://192.168.1.4/30000/31 : Relay-16 ON

http://192.168.1.4/30000/41 : Enter

http://192.168.1.4/30000/40 : Exit

http://192.168.1.4/30000/42 : Next Page

http://192.168.1.4/30000/43 : Next Page

Как видите, все предельно просто, но плату все же стоит использовать только в доверенных сетях.

Как плата будет себя вести на протяжении долгого времени работы — покажет время.

Замеры: холостой ход — примерно 90 мА по 12В. Все реле включены — ~540 мА.

В целом, есть из чего выбрать — или больше фич, но дороже (вариант первой платы на 16 каналов стоит больше 50$), либо примитивный, но за недорого и на много каналов — когда, например, надо организовать управление несколькими интерфейсами для каждого рига.

Ну и напоследок — вариант «для бедных» — когда хочется потратить поменьше, а управлять проблемным ригом нужно. Это — USB-реле; устройства, видимые системой как USBHID — т.е., например, как обычная клавиатура или мышка и потому не требующие специальных драйверов. Устройства не автономны, так как подключаются по USB — т.е., требуют наличия отдельного компьютера. Есть варианты от 1 до 8 реле, однако варианты на 4 и 8 каналов требуют отдельного питания реле. У себя я это решил установкой повышающего DC-DC с запиткой его от USB-шины. Все равно одновременно реле практически никогда не включаются, а даже если включаются — ток в пределах нормы для USB-порта (плюс можно DC-DC настроить не на 12 В, а чуть ниже, что снизит и ток).

Применимость данной платы? Хорошо, если есть выделенный компьютер. Если нет — при ее цене около 4$ за пару каналов можно просто наделать кросс-линков между ригами. Повис один — с другого просто дернул нужное реле.

Для управления данной платой существуют несколько проектов. Один использует hidapi — https://github.com/darrylb123/usbrelay — и у меня так нормально и не заработал — софтина вела себя по-разному в зависимости от версии ядра. Потом нашел другой, автономный. С ним все заработало отлично: https://github.com/pavel-a/usb-relay-hid

Да, и у меня так и не получилось запустить 2 платы в одной системе (в принципе, не особо старался, но все же): платы должны различаться идентификаторами, которые передаются утилите для управления, но китайцы тупо скопировали между платами все вместе с идентификаторами, так что без разруливания прав на конкретную USB-шину, похоже, никак.

3 мысли о “Краткий обзор нескольких плат удаленного управления ригами”

  1. По второй плате — удалось ее достаточно легко подвесить, закидав запросами на переключение реле. Плата перестала пинговаться и отдавать веб-интерфейс до снятия и подачи питания. В общем-то, ситуация для платы нештатная, но стоит учитывать этот момент.

  2. Первый выявленный серьезный баг второй платы — контроллер не умеет нормально работать в сети 192.168.0.0. Для боевого использования задал плате адрес 192.168.0.230. Плата работает, отзывается. Однако ссылки, формируемые в веб-интерфейсе, содержат другой адрес — 192.168.0.152. То же самое происходит и для других адресов этой сети: 240 становится 160; 250 становится 168 — просматривается изменение шага на 8 при «реальном» шаге в 10 адресов. Однако в нижней части диапазона это поведение нарушается: когда я задал адрес, оканчивающийся на 0.110 — то получил ссылки 0.72. Далее: 50->40; 16->14; 10->8. Если задать адрес меньше 10, то контроллер таки отдает правильную цифру, но… без точки :). Т.е., 192.168.0.8 становится 192.168.08. При этом в сети 192.168.1.0 такой проблемы нет. При необходимости использовать сеть 192.168.0.0 все же можно, однако реле придется «дергать» со своей странички с «правильными» адресами.

  3. В продолжение багов второй платы — помимо кривых IP-адресов, та отдает еще и абсолютные ссылки. Т.е., если пробросить плату наружу на произвольный порт на роутере, то ни порта, ни внешнего адреса при переходе по ссылкам мы не увидим — все ссылки будут вести на собственный адрес платы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *