Сначала большое спасибо за сотрудничество и скриншоты. Просто создайте другой, отдельный LogAction для тем System+Info, вы все равно сможете увидеть их в отдельном списке журналов. Чтобы не дублировать это в стандартной информации, просто добавьте !system. Пример: протестировано на редактировании скрипта, который выполняет изменения System+Info. . журналы не перегружаются. Сделано. Больше нет дублирования одинаковых настроек активации LED, только если изменится количество LED, тогда изменится и оно. Смотрите ниже. . Как видно на скриншоте_8, мой скрипт, который я запускаю в терминале, потребление ЦП не слишком высокое. В разы лучше, если вы запустите этот скрипт в /system scheduler с интервалом 1с, или вы должны увидеть скорость обновления 120 Гц

. Скрипт можно разместить внутри планировщика или запустить внешний /system script с нашим исходным кодом. . С этим могу сказать, что работает хорошо, но, тем не менее, я получаю предложения по этому поводу. Первая оптимизация ... Вы преобразовали простые 34 строки кода в 74-строчный монстр do-if-else-loop

Теперь эта переменная $rsrp1 живет только внутри do-loop, а после выхода из скрипта сохраняется как переменная окружения. Патч: -interface lte info lte1 once do={:global rsrp1 $"rsrp"; ... +local Rsrp ([/interface lte info lte1 once as-value]->"rsrp") Теперь мы можем использовать $Rsrp во всей области скрипта, и нам не нужно удалять суффикс "dBm". Используйте функции, образовательные примеры в viewtopic.php?f=9&t=151539#p746898, простой пример: local ChangeLeds do={put "Display $1 leds"}; # $1 - первый аргумент $ChangeLeds 4; # Запускаем функцию и говорим, что нужно включить LED 4. Вместо того, чтобы создавать новую и новую одну и ту же глобальную, просто измените ее значение, патч: -global a "новое значение 1" -global a "новое значение 2" ... +set $a "новое значение 3" +set $a "новое значение 4" # Эта проверка существует глобально, верно только когда глобальная переменная существует с любым значением: put ([system script environment find name=a]!="") # Вместо: -:global runloop true; do {...} while={$runloop} +do while=(1=1) {delay 1s;...} # На самом деле, планировщик с интервалом 1с... Финальный релиз... работает без дублирования, основываясь на обратной связи от $LedsCurrent = LastState, это должна быть только глобальная переменная. Вставьте в CLI и проверьте. global LedsCurrent 0 local LteRsrp -121 local ControlLed do={ if ($1 != $4) do={ system leds set 1 leds=$2 type=$3 } return $1 } do while=(1=1) { delay 1s set $LteRsrp ([/interface lte info lte1 once as-value]->"rsrp"); if ($LteRsrp >= -80) do={set $LedsCurrent [$ControlLed 5 led1,led2,led3,led4,led5 on $LedsCurrent ] }; if (($LteRsrp >= -90) && ($LteRsrp <= -81)) do={set $LedsCurrent [$ControlLed 4 led1,led2,led3,led4 on $LedsCurrent ] }; if (($LteRsrp >= -100) && ($LteRsrp <= -91)) do={set $LedsCurrent [$ControlLed 3 led1,led2,led3 on $LedsCurrent ] }; if (($LteRsrp >= -110) && ($LteRsrp <= -101)) do={set $LedsCurrent [$ControlLed 2 led1,led2 on $LedsCurrent ] }; if (($LteRsrp >= -120) && ($LteRsrp <= -111)) do={set $LedsCurrent [$ControlLed 1 led1 on $LedsCurrent ] }; if ($LteRsrp <= -121) do={set $LedsCurrent [$ControlLed 0 led1,led2,led3,led4,led5 off $LedsCurrent ] }; } . Дополнительные вопросы: Пожалуйста, покажите результат: put [/interface lte get lte1 band], или может быть, эта информация находится в WinBox > Interfaces > LTE > lte1 > вкладка General или Status (вы ранее показали вкладку Cellular). Cell-Monitor существует для поиска band/cell@BTS, но может быть, вы знаете, как проверить текущую используемую частоту. Если вы считаете, что это решение для поста, тогда отметьте этот ответ. P.S. Я в Telegram, если вы не понимаете финальный скрипт.