MikroTik RouterOS Wireless (WiFi) 使用 Script 自動更新頻率 MikroTik RouterOS Wireless (WiFi) 使用 Script 自動更新頻率
  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 秒偵測一次:

以上就完成設定了


標籤:   Mikrotik RouterOS

留言

Kuenming   ( 2016-02-15 )
這個script 在 6.33 下執行,好像沒有反應
ez   ( 2016-02-15 )
我這邊測試是正常的

我要留言