Початкові налаштування
Спочатку переконайтеся, що ви правильно налаштували параметри мережі LTE (надані оператором мобільної мережі) для кожної SIM-карти.
Ви можете використовувати профіль APN за замовчуванням або створити два окремих, перейдіть за цим посиланням: Приклад швидкого налаштування. У цьому випадку використовується профіль APN за замовчуванням.
Після цього ввімкніть роумінг даних для підключення до постачальників даних інших країн за допомогою такої команди. Це дозволяє відстежувати стан роумінгу.
/interface lte set [find name=lte1] allow-roaming=yes
Потім виберіть, які слоти для SIM-карти використовуватимуться для домашньої мережі та мережі в роумінгу. У цьому прикладі ми використовуємо слот «вниз» для домашньої мережі та слот «вгору» для мережі в роумінгу. Використовуйте наступну команду для перемикання між активними слотами.
Примітка: команда для вибору слота SIM змінюється у v6.45.1. А деякі моделі пристроїв,
як-от SXT, мають слоти для SIM-карт із назвами «a» і «b» замість «up» і down»
Команда до 6.45.1:
/system routerboard sim set sim-slot=down
Команда після 6.45.1:
/system routerboard modem set sim-slot=down
Команда у RouterOS v7:
/interface lte settings set sim-slot=down
Після зміни SIM-слотів LTE-модем буде перезапущено. Повна ініціалізація може зайняти деякий час (залежно від модему та плати, близько 30 секунд), тому переконайтеся, що ви протестували свій модем.
Приклад скрипту Failover
Тепер створіть сценарій, який працюватиме з планувальником. Цей приклад сценарію розглядає кілька ключових моментів:
- Перевірте, чи ініціалізовано інтерфейс LTE (відображається в списку/interface lte), інакше спробуйте скинути живлення
- Перевірте, чи встановлено з’єднання LTE (інтерфейс у стані «запущено»), інакше створіть запис у журналі та просто дочекайтеся наступного планувальника
- Прочитайте поточний використовуваний слот LTE і прийміть рішення, чи змінювати слоти SIM на основі стану інтерфейсу
Примітка. Майте на увазі, що слот SIM-карти буде змінено, лише якщо поточна SIM-карта
не може підключитися до мережі, якщо вам потрібно повернутися до основної SIM-карти,
вам потрібно запланувати іншу дію, яка виконує це в певний час. Неможливо дізнатися,
чи працює інша SIM-карта, не переключившись на неї.
Давайте назвемо цей сценарій «failoverScript» та перегляньте джерело нижче:
{ # Setup and read current values :global simSlot [/system routerboard modem get sim-slot] :global timeoutLTE 60 :global timeoutConnect 60 # Wait for LTE to initialize for maximum "timeoutLTE" seconds :local i 0 :local isLTEinit false :while ($i<$timeoutLTE) do={ :foreach n in=[/interface lte find] do={:set $isLTEinit true} :if ($isLTEinit=true) do={ :set $i $timeoutLTE } :set $i ($i+1) :delay 1s } # Check if LTE is initialized, or try power-reset the modem :if ($isLTEinit=true) do={ # Wait for LTE interface to connect to mobile network for maximum "timeoutConnet" seconds :local isConnected false :set $i 0 :while ($i<$timeoutConnect) do={ :if ([/interface lte get [find name="lte1"] running]=true) do={ :set $isConnected true :set $i $timeoutConnect } :set $i ($i+1) :delay 1s } # Check if LTE is connected if ($isConnected=false) do={ # Check which SIM slot is used :if ($simSlot="down") do={ # If "down" slot, switch to up :log info message="LTE down, switching slot to UP" /system routerboard modem set sim-slot=up } :if ($simSlot="up") do={ # If "up" slot, switch to down :log info message="LTE down, switching slot to DOWN" /system routerboard modem set sim-slot=down } } else={ # Else "running" :if ($isConnected=true) do={ :log info message="LTE UP" } } } else={ :log info message="LTE interface did not connect to network, wait for next scheduler" } } else={ :log info message="LTE modem did not appear, trying power-reset" /system routerboard usb power-reset duration=5s } }
Налаштування планувальника
Нарешті, створіть свій планувальник, який запускатиме раніше створений сценарій. Виберіть правильний інтервал планувальника, щоб дві або більше подій не накладалися одна на одну. Для цього прикладу вище буде достатньо 3 хвилин.
/system scheduler add interval=3m on-event=failoverScript name=Failover