Необходимо было реализовать управление электропитанием с сотового телефона. Данных решений достаточно много, причём самых разных технологических решений и ценовых рамок. Но проблема была в том, что нужно было сделать это ОЧЕНЬ срочно, как сказал заказчик — «Нужно вчера». Учитывая отдалённость от Москвы в 6000 км (и предстоящие выходные), то проблема возникла приличная.
Полистав интернет, наткнулся на статью — http://www.lanmart.ru/blogs/mikrotik-rb750up-remote-power-management-220v/ которая очень сильно помогла, учитывая, что данный роутер был в наличии, правда использовалась, для другого, но когда ОЧЕНЬ надо можно и снять 🙂
За деталями реализации добро пожаловать под кат (фото)
Изначально решили протестировать, взяв одну розетку и действовать в точности в соответствии со статьёй.
И ничего не заработало 🙂 После недолгого поиска в гугле, оказалось, что после обновления прошивки и повышения версии PoE (команда в роутерах MikroTik interface ethernet poe settings upgrade
), данная инструкция перестаёт соответствовать действительности так, как была добавлена проверка на сопротивление линии. А при использовании реле оно есть.
Но не беда! Небольшие знания основ электрических цепей и посещаемая в детстве станция юного техника подсказали попробовать подкинуть диод. В результате получилось то, что вы увидите на картинке (за монтаж не ругать — это было только в момент теста)
И БИНГО! Оно заработало именно, как нам надо было надо 🙂
Далее всё было аккуратно упаковано в стандартный электрический щиток —
И подключено. Теперь через WinBox (или веб-интерфейс, или по ssh, или через telnet) можно было управлять питанием, посылая команды
interface ethernet set ether2 poe-out=forced-on
для выключения
и
interface ethernet set ether2 poe-out=off
для включения
Меняя номер порта (с 2 по 5) можно было управлять конкретной розеткой.
Далее (вспоминаем ТЗ) потребовалась управление через сотовый телефон. Вообще какой-либо проблемы уже не было — есть и WinBox под мобильные платформы, и веб-интерфейс, и множества SSH-клиентов. Так же (так как в роутере есть USB-порт) можно было подключить USB-модем и управлять через SMS. Но нас было уже не остановить.
Так как заказчик хотел, чтобы у него было всё КАК можно проще, был взят телефон Windows Phone 8X by HTC и Microsoft Visual Studio Express 2012 for Windows Phone. И создан в нём проект MikrotikOnOff.
Всё программирование в конце свелось к всего трём действиям —
1. Создали форму
2. Подключили библиотеку SSH.NET
3. Добавили следующий код (код настроек не привожу, там стандартный IsolatedStorageSettings.ApplicationSettings)
private string MikrotikSSHCommand(string MikrotikIP, int MikrotikSshPort, string MikrotikUser, string MikrotikPassword, string Command)
{
try
{
ConnectionInfo sLogin = new PasswordConnectionInfo(MikrotikIP, MikrotikSshPort, MikrotikUser, MikrotikPassword);
SshClient sClient = new SshClient(sLogin);
sClient.Connect();
SshCommand appStatCmd = sClient.CreateCommand(Command);
appStatCmd.Execute();
sClient.Disconnect();
sClient.Dispose();
return appStatCmd.Result;
}
catch
{
return "Ошибка подключения к серверу";
}
}
private void Btn_All_On_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(MikrotikSSHCommand(MikrotikIP, MikrotikSshPort, MikrotikUser, MikrotikPassword, "system script run 0"));
}
private void Btn_All_Off_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(MikrotikSSHCommand(MikrotikIP, MikrotikSshPort, MikrotikUser, MikrotikPassword, "system script run 1"));
}
private void Btn_Test_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(MikrotikSSHCommand(MikrotikIP, MikrotikSshPort, MikrotikUser, MikrotikPassword, "system script run 2"));
}
На этом создание программы закончилось 🙂
Далее создали скрипты на микротике — можно через System — Scripts. Можно через консоль
/system script
add name="All On" policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api source=\
"interface ethernet set ether2 poe-out=off\r\
\ninterface ethernet set ether3 poe-out=off\r\
\ninterface ethernet set ether4 poe-out=off\r\
\ninterface ethernet set ether5 poe-out=off"
add name="All off" policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api source=\
"interface ethernet set ether2 poe-out=forced-on\r\
\ninterface ethernet set ether3 poe-out=forced-on\r\
\ninterface ethernet set ether4 poe-out=forced-on\r\
\ninterface ethernet set ether5 poe-out=forced-on"
add name=SystemIdent policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api source=\
"system identity print"
И можно проверять, упаковывать и отдавать заказчику.
Немного про плюсы и минусы данного решения —
Плюсы
- Стоимость — если не считать телефона, который был, то общая цена решения составила 3120 рублей (2200 сам роутер, 400 рублей ящик, 160 рублей — 4 розетки на DIN-рейку, 280 рублей — 4 реле с колодками, 80 рублей — 4 клеммных соединителя)
- Надёжность — роутеры микротик достаточно надёжны и стабильны в работе, что позволяет не беспокоиться о том, что может зависнуть сама система управления питанием (до этого сталкивался с двумя системами удалённое управления — качество и стабильность были не на высоте)
- Управляемость — в моём случае нужно было только удалённое управлением питанием с сотового телефона, но никто не запрещает делать более серьёзные решения с использование всевозможных средств микротика — от простейшего пинга и перезагрузки питания при не ответе, до достаточно сложных скриптовых действий с расписанием выполнения
- 4 управляемых розетки — в большинстве решений подобного ценового уровня она одна, что достаточно неудобно
- Простота для конечного пользователя — ему достаточно просто нажать одну кнопку для управления питанием
Минусы
- Электробезопасность — всё равно, учитывая некоторую «колхозность» решения, есть некоторые опасения по её защите и прочим параметрам. Делал бы сейчас — взял бы ящик побольше и натолкал к каждой розетке по диффавтомату.
PS: Умные люди на ixbt подсказали, что необходим ещё один диод
Джамаль: Чтобы, когда напряжение с реле снимается, бросок индуктивного тока с него не поджарил всё вокруг. Диод нужен для того, чтобы бросок тока бегал внутри образованного обмоткой и диодом замкнутого контура и тратился на нагрев обмоток и диода, а не на сжигание окрестной электроники
Откуда берётся этот бросок, можно выкурить из той же википедии или учебника электротехники. Вкратце: катушка по определению сопротивляется изменению тока, и если ток прекращается (реле обесточивается), то накопленная в катушке энергия будет стремиться удержать ток от прекращения. Отсюда и всплеск.
Но я этого не делал, данный совет был получен уже после сдачи заказчику. Но учитывая, что уже работает достаточно продолжительное время, то будем надеяться на лучшее 🙂
ссылка на оригинал статьи http://habrahabr.ru/post/200668/
Добавить комментарий