Pull to refresh

Управление питанием через Mikrotik+Windows Phone

Reading time 7 min
Views 38K
Прочитал статью Контроллер-розетка КУБ-Пико220 от Технотроникс и решил поделиться с хабрасообществом своим велосипедом.

Необходимо было реализовать управление электропитанием с сотового телефона. Данных решений достаточно много, причём самых разных технологических решений и ценовых рамок. Но проблема была в том, что нужно было сделать это ОЧЕНЬ срочно, как сказал заказчик — «Нужно вчера». Учитывая отдалённость от Москвы в 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 подсказали, что необходим ещё один диод
Джамаль: Чтобы, когда напряжение с реле снимается, бросок индуктивного тока с него не поджарил всё вокруг. Диод нужен для того, чтобы бросок тока бегал внутри образованного обмоткой и диодом замкнутого контура и тратился на нагрев обмоток и диода, а не на сжигание окрестной электроники

Откуда берётся этот бросок, можно выкурить из той же википедии или учебника электротехники. Вкратце: катушка по определению сопротивляется изменению тока, и если ток прекращается (реле обесточивается), то накопленная в катушке энергия будет стремиться удержать ток от прекращения. Отсюда и всплеск.

Но я этого не делал, данный совет был получен уже после сдачи заказчику. Но учитывая, что уже работает достаточно продолжительное время, то будем надеяться на лучшее :)

UPD: Совет от пользователя NetRat
Я бы использовал твердотельные реле. В этом случае диод не нужен и сами реле с радиатором прекрасно монтируются на динрейку.

К примеру можно использовать, что-то вроде http://www.electronshik.ru/card/rele-g3pa-so-smennimi-silovimi-elementami-10-50160a-88159, но в таком случае возрастает цена (примерно на 8 тысяч). Но решение более красивое и правильное.

bougakov
Скажите, а что за реле вы использовали? Очень смахивают на автомобильные 12V 30A
Были использованы реле 90.3777.
Tags:
Hubs:
+18
Comments 23
Comments Comments 23

Articles