Страница 1 из 1

Ребут IPTV-приставки посредством микротик. Умная розетка. Максимальное значение переменной?

Добавлено: 16 янв 2020, 01:09
Virtue
Подскажите, нигде не могу найти, как извлечь максимальное значение переменной. :-(

Re: Максимальное значение переменной

Добавлено: 17 янв 2020, 14:19
Sertik
То есть ?

Re: Максимальное значение переменной

Добавлено: 17 янв 2020, 14:31
Virtue
Sertik писал(а): 17 янв 2020, 14:19 То есть ?
насколько я понял в микротиках используется язык lua, всё что я смог накопать из этого языка для своей задачи - это математическая функция
math.max(x, ...) которая выводит максимальный из аргументов, но когда я стал пробовать ее в микротике, у меня ничего не вышло, походу он ее не понимает

Re: Максимальное значение переменной

Добавлено: 17 янв 2020, 14:40
Sertik
Микротик настоящий язык Lua не понимает. У него урезанный Lua со своим синтаксисом под свои нужды. А что у Вас за задача то такая хитрая ? Зачем максимальное значение переменной в Микротике ?

Re: Максимальное значение переменной

Добавлено: 17 янв 2020, 14:56
Virtue
Sertik писал(а): 17 янв 2020, 14:40 Микротик настоящий язык Lua не понимает. У него урезанный Lua со своим синтаксисом под свои нужды. А что у Вас за задача то такая хитрая ? Зачем максимальное значение переменной в Микротике ?
задачу я, кстате говоря, решил буквально вчера ночью :-):
могу конечно рассказать, но придется тогда с самого начала .. в общем:
у меня на работе стоит IP-tv приставка которая тарабанит и днем и ночью, но бывает иногда она зависает, и чтобы не мотаться к ней, а удаленно перезагружать ее, я собрал схему из 24вольтового реле и порта Poe-out на микротик. Сначала перезагружал ее удаленно вручную, а теперь вот написал скриптик проверки трафика на эту приставку и перезагрузки ее автоматически. Собственно для этого скрипта мне нужна была переменная с максимальным размером трафика в промежутке времени, чтобы понять работает приставка или зависла.

Re: Максимальное значение переменной

Добавлено: 17 янв 2020, 15:04
Sertik
Модель реле, модель микротика и скрипт в студию ! Автору респект будет если всё хорошо. :-)

Re: Максимальное значение переменной

Добавлено: 17 янв 2020, 16:31
Virtue
Sertik писал(а): 17 янв 2020, 15:04 Модель реле, модель микротика и скрипт в студию ! Автору респект будет если всё хорошо. :-)
Изображение

Микрот RB951Ui-2HnD собственно подойдет и любой другой с портом Poe-out.

Изображение

Реле типа my2-ns 24v dc опять же, подойдет любое реле 24 вольта (так как у приставки нагрузка маленькая).

Для соединения реле с микротом использовал обычный UTP кабель, с одного конца просто обжатый RG45, а на другом выдернул синюю и коричневую пары и подключил их к реле так, чтобы при подаче питания на реле контакты размыкались и питание на приставку прекращалось.

При написании скрипта обошелся без той злощастной переменной максимального значения и конструировал код исходя из того-что знаю, в итоге сделал:

Script1: name="proverka_tv" Скрипт проверки трафика на приставке (команды сокращены, но так, чтобы микрот их понимал):

Код: Выделить всё

 # задаём "планку" для трафика в битах
:global a 3000000;
# объявляем переменную "b" (сюда будут сниматься показания tx трафика в момент проверки)
:global b;
#  "c"= 0 (обновляемый счётчик удачных проверок (далее: щ.у.п.))
:global c 0;
# объявляем "d" (счётчик неудачных тестов (далее: с.н.т.) для активации перезагрузки)
:global d;
# задаем цикл проверок (решил сделать 10 проверок с интервалом 1 сек, т.к. приставка подгружает трафик порциями примерно раз в 10 сек)
:for x from=1 to=10 do={
/interface monitor-traffic ether5_TV once do={
:global b $("tx-bits-per-second")};
# если трафик превышает планку - то всё норм, в щ.у.п. пишем +1
if ($a <  $b) do={
:global c ($c+1)};
:delay 1;};
# если щ.у.п. не равен 0, то всё ок, в с.н.т. пишем 0, в противном случае +1
if ($c!=0) do={
:global d 0} else={
:global d ($d+1);
# при с.н.т. ниже 3 повторяем тест, в противном случае вносим запись в лог и ребутаем приставку
if ($d<3) do={
:delay 10;
/sy scr ru proverka_tv} else={
:l w message=reboot_TV;
/sy scr ru reboot_TV}}; 
Script2: name="reboot_TV" В отдельный скрипт вынес пару строк для перезагрузки IPTV-приставки:

Код: Выделить всё

 /in et po s poe-out=forced-on numbers=ether5_TV
:delay 10
/in et po s poe-out=off numbers=ether5_TV 
И собственно внёс запись в шедулер с интервалом в 15 мин, с запуском при старте системы (Start time=startup), добавив минуту на всякий случай:

Код: Выделить всё

 :delay 60;
/sy scr ru proverka_tv 
Вроде бы и всё :du_ma_et:

Re: Ребут IPTV-приставки посредством микротик. Умная розетка. Максимальное значение переменной?

Добавлено: 19 фев 2020, 00:05
Sertik
Микрот RB951Ui-2HnD собственно подойдет и любой другой с портом Poe-out.
Не уверен ... Может Вы и правы. НО, Мы тут пытались делать такую штуку (можно на этом форуме найти длиннющую тему), которая Вам удалась, но из-за того, что в части роутербордов компания Микротик сделала новую проверку в poe-out на короткое замыкание, у меня реле включались, но отключались обратно, т.к. Микротик обнаруживал короткое замыкание на POE-порту. Ребята предлагали разные решения, но нужно было что-то паять на коленке, а это не эстетично и с паяльником я не дружу совсем ... :ny_tik:

Либо у Вас реле "хитрое", которое позволяет эту проверку обмануть (типа оно с диодным мостом). Я не инженер, могу не правильно объяснить, меня тут поправят за терминологию, но суть такая ...
Реле, понятно, нужно использовать с тем же управляющим напряжением, которое выдает poe-out конкретного Микротика, а оно выдает то напряжение, которым микротик питают (ведь блок питания Микрота даже стандартный может быть 12, 24 и 48 Вольт). У Вас видимо блок 24В и реле потому такое-же.

Надо будет посмотреть что Вы за реле использовали ... и попробовать.
Скрипт можно написать поизящнее, но главное, что у Вас получилось с реле ... СПАСИБО ! :co_ol:

Re: Ребут IPTV-приставки посредством микротик. Умная розетка. Максимальное значение переменной?

Добавлено: 19 фев 2020, 10:24
Ca6ko
Если чисто для ребута то реле можно вешать на USB порт

Re: Ребут IPTV-приставки посредством микротик. Умная розетка. Максимальное значение переменной?

Добавлено: 19 фев 2020, 10:34
Erik_U
Sertik писал(а): 19 фев 2020, 00:05
Микрот RB951Ui-2HnD собственно подойдет и любой другой с портом Poe-out.
Не уверен ... Может Вы и правы. НО, Мы тут пытались делать такую штуку (можно на этом форуме найти длиннющую тему), которая Вам удалась, но из-за того, что в части роутербордов компания Микротик сделала новую проверку в poe-out на короткое замыкание, у меня реле включались, но отключались обратно, т.к. Микротик обнаруживал короткое замыкание на POE-порту.
Тут задача другая. Разорвать питание.
Реле нормально замкнутое. Т.е. когда на катушке тока нет, контакты замкнуты, и приставка питается.

Когда она зависла, на катушку подается питание - контакты размыкаются, питание приставки отключается.
Потом питание снимается - контакты замыкаются обратно, и приставка включается.

И все равно, кто выключит катушку. Скрипт, или проверка микротика на кз.