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

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

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

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

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

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

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

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

  • Веб-интерфейс крайне примитивен. Практически нет настроек — лишь IP-адрес (дефолтный 192.168.1.4) и «порт» (дефолт — 30000), причем это не порт веб-интерфейса (см. ниже)
  • Соответственно, никаких «имен для ригов». Хотя это несложно организовать отдельной веб-страничкой на сервисном хосте, с которой уже будут дергаться нужные ссылки в веб-интерфейсе. Если, конечно, этот хост есть.
  • Никакой авторизации. Фактически, весь «секрет» состоит в так называемом «порте» — названии странички в веб-интерфейсе.
  • Плата больше подходит тем, кто не боится работать руками. Например, контроллер имеет питание 5В, плата с реле — 12В. Оба питания потребуется организовать — т.е., как минимум, поставить стабилизатор 12->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. A formidable share, I simply given this onto a colleague who was doing just a little evaluation on this. And he in reality bought me breakfast because I discovered it for him.. smile. So let me reword that: Thnx for the treat! However yeah Thnkx for spending the time to debate this, I really feel strongly about it and love reading extra on this topic. If doable, as you turn into experience, would you mind updating your blog with extra particulars? It is highly helpful for me. Big thumb up for this weblog publish! http://hellowh983mm.com

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

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