Mikrotik RouterOS ez 2014-10-03
如果不想要使用 MikroTik RouterOS Wireless 內建的 Frequency Auto 選項,想要自訂頻道又要避開訊號不好的頻道,可以採用 Script 方式達成以上條件。
以下提供我寫的 Script 供參考使用!
首先設定好 Wireless:
新增一個 Script 如下:
※$ccq < 20 表示訊號低於 20 就會變更頻率,數值可以自行調整。
※ freqList 是頻率列表,可以自行修改成想要使用那些頻率。
/interface wireless;
:global waitingchange;
:global ccqerror;
:local interface [get number=0 ssid];
:local freqList;
:if ([:find [get $interface channel-width] "above"] > 0) do={
:set freqList {2412;2417;2422;2427;2432;2437;2442};
} else {
:set freqList {2432;2437;2442;2447;2452;2457;2462};
}
monitor $interface once do={
:local freqListLen [:len $freqList];
:local pos [:find $freqList $frequency];
:local ccq $"overall-tx-ccq";
:local regclients $"registered-clients";
:if ($regclients > 0) do={
:set waitingchange 0;
:if ($ccq < 20) do={
:set ccqerror ($ccqerror + 1);
:if ($ccqerror >= 6) do={
:set ccqerror 0;
:log info "Frequency($frequency) CCQ: $ccq%. Too low, change frequency";
:set pos ($pos + 1);
:if ($pos > 0) do={ } else { :set pos 0; }
:if ($pos = $freqListLen) do={ :set pos ($pos - $freqListLen); }
set $interface frequency=[:pick $freqList $pos];
}
} else {
:set ccqerror 0;
:if ($pos >= 0) do={ } else { set $interface frequency=[:pick $freqList 0]; }
}
} else {
:set ccqerror 0;
:if ($waitingchange < 3) do={
:set waitingchange ($waitingchange + 1);
} else {
:set waitingchange 0;
:if ([:pick $freqList ($freqListLen / 2 - 1)] != $frequency) do={ set $interface frequency=[:pick $freqList ($freqListLen / 2 - 1)]; }
}
}
}新增 Schedule 定時執行 Script,這邊我設定每 5 秒偵測一次:
以上就完成設定了
本文章網址:
https://www.ez2o.com/Blog/Post/MikroTik-RouterOS-Wireless-Script
https://www.ez2o.com/Blog/Post/467
https://www.ez2o.com/Blog/Post/MikroTik-RouterOS-Wireless-Script
https://www.ez2o.com/Blog/Post/467
留言
Kuenming ( 2016-02-15 )這個script 在 6.33 下執行,好像沒有反應ez ( 2016-02-15 )我這邊測試是正常的
