Данный пост посвящен нескольким платам, помогающим управлять ригом в аварийных (да и не только в аварийных) ситуациях – когда, например, через штатные средства (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"
http://192.168.1.166/relay_en.cgi --post-data="saida1pluse"
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"
Да, именно “pluse”. Китайские ошибки – они такие.
Из интересных опций в настройках – включение соответствия входного сигнала выходному реле, включение работы по маске (упомянутые выше 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-шину, похоже, никак.
== UP 1 ==
В продолжение багов второй платы — помимо кривых IP-адресов, та отдает еще и абсолютные ссылки. Т.е., если пробросить плату наружу на произвольный порт на роутере, то ни порта, ни внешнего адреса при переходе по ссылкам мы не увидим — все ссылки будут вести на собственный адрес платы.
== UP 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 все же можно, однако реле придется «дергать» со своей странички с «правильными» адресами.
== UP 3 ==
По второй плате — удалось ее достаточно легко подвесить, закидав запросами на переключение реле. Плата перестала пинговаться и отдавать веб-интерфейс до снятия и подачи питания. В общем-то, ситуация для платы нештатная, но стоит учитывать этот момент.
2 мысли о “PROCRYPTO REPOST: Краткий обзор нескольких плат удаленного управления ригами”