Hi All,
I'm trying to create a script to get the signal strength and access technology from an LTE modem. It will collect this data throughout the day and email me a file at the end of the day. The script works as expected on my hAP AC3 LTE6. However, my modem always uses LTE access technology, so I don't know how the script will work with other settings. I used gpt for the current values. I've already seen:
LTE, Evolved 3G (LTE), LTE (CA2), Evolved 3G (LTE CA2)
3G, 3G HSDPS & HSUPA, 3G HSPA+, 3G HSDPA,
GSM compact,
on the forum, which are included now in my script. Could you tell me where I can find all the access technology options available in RouterOS?
:local toEmail "you@mail.net"
:local MAXMINUTE 1438
:local id [/system/identity/get name]
:local lteData [/interface/lte print as-value]
:local ifaceName ""
:if ([:len $lteData] > 0) do={
:set ifaceName ([:pick $lteData 0]->"name")
} else={
:quit
}
:global LTELog
:if ([:len $LTELog] = 0) do={ :set LTELog "" }
:local t [/system/clock/get time]
:local hh [:tonum [:pick $t 0 2]]
:local mi [:tonum [:pick $t 3 5]]
:local minute (($hh * 60) + $mi)
:local mon [/interface/lte monitor $ifaceName once as-value]
:local techRaw ""
:if ([:len ($mon->"access-technology")] > 0) do={
:set techRaw ($mon->"access-technology")
} else={
:if ([:len ($mon->"data-class")] > 0) do={
:set techRaw ($mon->"data-class")
}
}
:local techMap {
"LTE"="4G"; "LTE-A"="4G"; "LTE CA"="4G"; "LTE (CA)"="4G"; "LTE (CA2)"="4G"; "E-UTRAN"="4G";
"Evolved 3G (LTE)"="4G"; "Evolved 3G (LTE CA2)"="4G";
"LTE (CA3)"="4G"; "Evolved 3G (LTE CA3)"="4G";
"NR5G"="5G"; "5G"="5G"; "NR"="5G"; "5G NSA"="5G"; "5G SA"="5G";
"3G"="3G"; "WCDMA"="3G"; "UTRAN"="3G"; "HSPA"="3G"; "HSPA+"="3G";
"HSUPA"="3G"; "3G HSUPA"="3G"; "HSDPA"="3G";
"HSDPA & HSUPA"="3G"; "HSDPS & HSUPA"="3G";
"3G HSDPA & HSUPA"="3G"; "3G HSDPS & HSUPA"="3G";
"3G HSPA+"="3G"; "3G HSDPA"="3G";
"GSM"="2G"; "GPRS"="2G"; "EDGE"="2G"; "EGPRS"="2G"; "GSM compact"="2G";
"GSM EGPRS"="2G"; "GSM GPRS"="2G"; "GSM EDGE"="2G"
}
:local tech "xG"
:if ([:len ($techMap->$techRaw)] > 0) do={
:set tech ($techMap->$techRaw)
}
:local lvl -1
:local rsrpStr ""
:if ([:len ($mon->"rsrp")] > 0) do={
:set rsrpStr ($mon->"rsrp")
} else={
:if ([:len ($mon->"primary-rsrp")] > 0) do={
:set rsrpStr ($mon->"primary-rsrp")
}
}
:local rsrp -140
:if ([:len $rsrpStr] > 0) do={
:local L [:len $rsrpStr]
:if ($L > 3 && [:pick $rsrpStr ($L-3) $L] = "dBm") do={
:set rsrp [:tonum [:pick $rsrpStr 0 ($L-3)]]
} else={
:set rsrp [:tonum $rsrpStr]
}
}
:if ($rsrp > -120) do={
:if ($rsrp > -80) do={:set lvl 4} else={
:if ($rsrp > -90) do={:set lvl 3} else={
:if ($rsrp > -100) do={:set lvl 2} else={
:if ($rsrp > -110) do={:set lvl 1} else={
:set lvl 0
}
}
}
}
} else={
:local rssiStr ""
:if ([:len ($mon->"signal-strength")] > 0) do={
:set rssiStr ($mon->"signal-strength")
} else={
:if ([:len ($mon->"rssi")] > 0) do={
:set rssiStr ($mon->"rssi")
}
}
:local rssi -140
:if ([:len $rssiStr] > 0) do={
:local L [:len $rssiStr]
:if ($L > 3 && [:pick $rssiStr ($L-3) $L] = "dBm") do={
:set rssi [:tonum [:pick $rssiStr 0 ($L-3)]]
} else={
:set rssi [:tonum $rssiStr]
}
}
:if ($rssi > -65) do={:set lvl 4} else={
:if ($rssi > -75) do={:set lvl 3} else={
:if ($rssi > -85) do={:set lvl 2} else={
:if ($rssi > -95) do={:set lvl 1} else={
:if ($rssi > -120) do={:set lvl 0}
}
}
}
}
}
:global LTELog
:global LTEFileName
:local line ($minute . "," . $tech . "," . $lvl)
:if ($minute < $MAXMINUTE) do={
:if ([:len $LTELog] = 0) do={
:set LTELog $line
} else={
:set LTELog ($LTELog . "\r\n" . $line)
}
} else={
:local dateStr [/system/clock/get date]
:set LTEFileName ($id . "_" . $dateStr . ".txt")
:if ([:len $LTEFileName] > 0) do={
:local oldFile [/file find name=$LTEFileName]
:if ([:len $oldFile] > 0) do={
/file remove $oldFile
}
}
:if ([:len $LTELog] > 0) do={
/file add name=$LTEFileName contents=$LTELog
/tool e-mail send to=$toEmail subject=("LTE Log for " . $dateStr . " (" . $id . ")") file=$LTEFileName
:set LTELog ""
}
}