У меня есть несколько роутеров, которые используются в качестве репитеров (wifi в ethernet). Чтобы видеть уровень сигнала без необходимости заходить в веб-интерфейс или winbox, я сделал скрипт. Он проверяет уровень сигнала на первом Wi-Fi клиенте и мигает светодиодом, показывая силу сигнала. Меньше миганий — лучше, чем много, например: -30 dBm = 3 мигания, -63 dBm = 6 миганий. Последнее мигание длиннее, чтобы показать, что это конец.
Скрипт должен работать постоянно или до тех пор, пока вы не измените глобальную переменную runLoop на false. Но в нём есть некоторые баги. Если я запускаю скрипт с подключённым клиентом, он работает нормально. Отключаю клиента — миганий нет. Но если включить клиента снова, миганий не появляется. Если выполнить команду /interface wireless registration-table print stats, то скрипт снова начинает работать.
Буду рад любым предложениям:
global runLoop true
:do {
:do {
:local a [/interface wireless registration-table get value-name=signal-strength 0]
:local loop ([:pick ([:pick $a 0 [:find $a "dBm"]]/10) 1]-0)
:if ([:len $a] = 0) do={
} else={
:for e from 1 to $loop do={
/system leds set [find where leds="wlan-led"] type=off
:delay 500ms
/system leds set [find where leds="wlan-led"] type=on
:delay 500ms
}
}
:delay 1s
/system leds set [find where leds="wlan-led"] type=off
:delay 2s
} on-error={}
} while=($runLoop)
Чтобы запустить через терминал, добавьте { } в начале и конце скрипта и скопируйте его в роутер.
Скрипт должен работать постоянно или до тех пор, пока вы не измените глобальную переменную runLoop на false. Но в нём есть некоторые баги. Если я запускаю скрипт с подключённым клиентом, он работает нормально. Отключаю клиента — миганий нет. Но если включить клиента снова, миганий не появляется. Если выполнить команду /interface wireless registration-table print stats, то скрипт снова начинает работать.
Буду рад любым предложениям:
global runLoop true
:do {
:do {
:local a [/interface wireless registration-table get value-name=signal-strength 0]
:local loop ([:pick ([:pick $a 0 [:find $a "dBm"]]/10) 1]-0)
:if ([:len $a] = 0) do={
} else={
:for e from 1 to $loop do={
/system leds set [find where leds="wlan-led"] type=off
:delay 500ms
/system leds set [find where leds="wlan-led"] type=on
:delay 500ms
}
}
:delay 1s
/system leds set [find where leds="wlan-led"] type=off
:delay 2s
} on-error={}
} while=($runLoop)
Чтобы запустить через терминал, добавьте { } в начале и конце скрипта и скопируйте его в роутер.
