Автоматическое переключение между симкартами LtAP mini

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
green4eg
Сообщения: 2
Зарегистрирован: 29 авг 2019, 16:00

Добрый день. Требуется помощь. Имеется LtAP mini LTE kit. Требуется переподключаться между симкартами при потере связи у одной из них. Нужно определять состояние рабочего слота сим карты и при определении, соответственно, переподключать либо на up, либо на down.


green4eg
Сообщения: 2
Зарегистрирован: 29 авг 2019, 16:00

Если кому интересно, на гитхабе есть скрипт для переключения сим по уровню сигнала. Я взял его за основу и засунул в netwatch.
RouterOS script that changes active sim slot if GSM network is unreachable or running low signal (<-99 dBm)
https://github.com/strobil/ltap-mini-dualsim-failover

 Скрипт

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

{
	:global initTimeout 60
	:global connectTimeout 60
	:global minimumSignalLevel -99

	:global switchSIM do={
		:local simSlot [/system routerboard sim get sim-slot]

		:if ($simSlot="down") do={
			:log info message="Switching to \"up\" sim slot (Vodafone)"
			/system routerboard sim set sim-slot=up
		} else={
			:log info message="Switching to \"down\" sim slot (Kyivstar)"
			/system routerboard sim set sim-slot=down
		}
	}

	:global initialize do={
		:global initTimeout

		:local i 0
		:while ($i < $initTimeout) do={
			:if ([:len [/interface lte find ]] > 0) do={
				:return true
			}			
			:set $i ($i+1)
			:delay 1s
		}

		:return false
	}

	:global waitConnect do={
		:global connectTimeout

		:local i 0
		:while ($i < $connectTimeout) do={
			:if ([/interface lte get [find name="lte1"] running] = true) do={
				:return true
			}
			:set $i ($i+1)
			:delay 1s
		}

		:return false
	}

	:if ([$initialize] = true) do={
		:if ([$waitConnect] = true) do={
			:local info [/interface lte info lte1 once as-value]
			:local rssi ($info->"rssi")
			:if ($rssi < $minimumSignalLevel) do={
				:log info message=("Current RSSI ".$rssi." < ".$minimumSignalLevel.". Trying to switch active sim slot.")
				$switchSIM
			}
		} else={
			:log info message="GSM network is not connected. Trying to switch active sim slot."
			$switchSIM
		}
	} else={
		:log info message="LTE modem did not appear, trying power-reset"
		/system routerboard usb power-reset duration=5s
	}		
}


Ответить