diff --git a/simpleadmin/scripts/build_modem_status b/simpleadmin/scripts/build_modem_status index 23b5215..1429771 100644 --- a/simpleadmin/scripts/build_modem_status +++ b/simpleadmin/scripts/build_modem_status @@ -1,9 +1,21 @@ #!/bin/bash while true; do + # Run AT+CGMM to get the modem model + echo -en "AT+CGMM\r\n" | microcom -t 1000 /dev/ttyOUT > /tmp/modemmodel.txt + sleep 2 + + # Run AT+CGCONTRDP once then proceed to while loop + echo -en "AT+CGCONTRDP\r\n" | microcom -t 1000 /dev/ttyOUT > /tmp/apn.txt + sleep 2 + + # Run AT+QUIMSLOT? to get the current sim slot + echo -en "AT+QUIMSLOT?\r\n" | microcom -t 1000 /dev/ttyOUT > /tmp/simslot.txt + sleep 2 + # Send request to modem and wait 5 seconds for data echo -en "AT+QSPN;+CEREG=2;+CEREG?;+CEREG=0;+C5GREG=2;+C5GREG?;+C5GREG=0;+CSQ;+QENG=\"servingcell\";+QRSRP;+QCAINFO;+QNWPREFCFG=\"mode_pref\";+QTEMP\r\n" \ - | microcom -t 3000 /dev/ttyOUT > /tmp/modemstatus.txt + | microcom -t 5000 /dev/ttyOUT > /tmp/modemstatus.txt if [ $? -eq 0 ] then # Parse @@ -13,4 +25,4 @@ while true; do fi fi sleep 25 # Add a sleep to avoid CPU overload -done +done \ No newline at end of file diff --git a/simpleadmin/scripts/modemstatus_parse.sh b/simpleadmin/scripts/modemstatus_parse.sh index d2514bf..8a06b8b 100644 --- a/simpleadmin/scripts/modemstatus_parse.sh +++ b/simpleadmin/scripts/modemstatus_parse.sh @@ -36,6 +36,43 @@ nr_bw() { esac } +# Function to get the secondary LTE bands +get_secondary_bands() { + # Extract LTE BANDs from SCC lines + SCC_BANDS=$(echo "$OX" | grep '+QCAINFO: "SCC"' | grep -o '"LTE BAND [0-9]\+"' | tr -d '"' | sed '1d') + + # Extract NR5G BANDs from SCC lines + NR_BAND=$(echo "$OX" | grep '+QCAINFO: "SCC"' | grep -o '"NR5G BAND [0-9]\+"' | tr -d '"') + + # Check if both SCC and NR bands are non-empty + if [ -n "$SCC_BANDS" ] && [ -n "$NR_BAND" ]; then + # Concatenate LTE BANDs with NR5G BANDs + SC_BANDS="$SCC_BANDS
$NR_BAND" + else + # Set SC_BANDS to the non-empty variable or empty if both are empty + SC_BANDS="${SCC_BANDS}${NR_BAND}" + fi + + # Get the PCI value. For example: 264 based on this +QCAINFO: "PCC",1775,75,"LTE BAND 3",1,264,-103,-13,-71,0 + MAIN_PCI=$(echo "$OX" | grep '+QCAINFO: "PCC"' | grep -o ',[0-9]\{1,5\},' | tr -d ',') +} + +# Get the modem model from /tmp/modemmodel.txt and parse it +MODEM_MODEL=$( /tmp/modnetwork if [ -n "$QENG5" ]; then QENG5=$QENG5",," - PCI=$(echo $QENG5 | cut -d, -f4) + # Append the initial PCI value rather than overwriting it + PCI="$PCI, "$(echo $QENG5 | cut -d, -f4) SCHV=$(echo $QENG5 | cut -d, -f8) SLBV=$(echo $QENG5 | cut -d, -f9) # Now correctly captures the NR band - BW=$(echo $QENG5 | cut -d, -f10 | grep -o "[0-9]\{1,3\}") + BW=$(echo $QENG5 | cut -d, -f10) # Now gets the correct BW if [ -n "$SLBV" ]; then LBAND=$LBAND"
n"$SLBV if [ -n "$BW" ]; then @@ -194,7 +239,8 @@ case $RAT in CHANNEL=$CHANNEL", -" fi else - LBAND=$LBAND"
nxx (unknown NR5G band)" + # removed the (unknown NR5G BAND) and replaced with No NR5G Band to avoid confusion + LBAND=$LBAND"
No NR5G Band Detected" CHANNEL=$CHANNEL", -" fi RSCP=$RSCP" dBm
"$(echo $QENG5 | cut -d, -f5) @@ -261,7 +307,9 @@ case $RAT in PCI=$(echo $QENG5 | cut -d, -f8) CHANNEL=$(echo $QENG5 | cut -d, -f10) LBAND=$(echo $QENG5 | cut -d, -f11) + PC_BAND="NR5G BAND "$LBAND BW=$(echo $QENG5 | cut -d, -f12) + nr_bw LBAND="n"$LBAND" (Bandwidth $BW MHz)" RSCP=$(echo $QENG5 | cut -d, -f13) ECIO=$(echo $QENG5 | cut -d, -f14) @@ -429,12 +477,11 @@ if [ -z "$LAC" ]; then RNC="-" fi - LUPDATE=$(date +%s) rm -fR /tmp/signal.txt MODEZ=$(echo $MODE | tr -d '"') { - echo 'PROVIDER="'"$PROVIDER"'"' + echo 'PROVIDER="'"$PROVIDER"'"' echo 'CSQ="'"$CSQ"'"' echo 'CSQ_PER="'"$CSQ_PER"'"' echo 'CSQ_RSSI="'"$CSQ_RSSI"'"' @@ -447,6 +494,11 @@ MODEZ=$(echo $MODE | tr -d '"') echo 'NETMODE="'"$NETMODE"'"' echo 'CHANNEL="'"$CHANNEL"'"' echo 'LBAND="'"$LBAND"'"' + echo 'PC_BAND="'"$PC_BAND"'"' + echo 'SC_BANDS="'"$SC_BANDS"'"' + echo 'APN="'"$APN"'"' + echo 'MODEM_MODEL="'"$MODEM_MODEL"'"' + echo 'SIMSLOT="'"$SIMSLOT"'"' echo 'PCI="'"$PCI"'"' echo 'TEMP="'"$CTEMP"'"' echo 'SINR="'"$SINR"'"' @@ -454,6 +506,7 @@ MODEZ=$(echo $MODE | tr -d '"') echo 'COPS="'"$COPS"'"' echo 'COPS_MCC="'"$COPS_MCC"'"' echo 'COPS_MNC="'"$COPS_MNC"'"' + echo 'MCCMNC="'"$MCCMNC"'"' echo 'LAC="'"$LAC"'"' echo 'LAC_NUM="'""'"' echo 'CID="'"$CID"'"' @@ -463,4 +516,4 @@ MODEZ=$(echo $MODE | tr -d '"') } > /tmp/signal.txt # Pregenerate JSON File -/usrdata/simpleadmin/scripts/tojson.sh /tmp/signal.txt > /tmp/modemstatus.json +/usrdata/simpleadmin/scripts/tojson.sh /tmp/signal.txt > /tmp/modemstatus.json \ No newline at end of file diff --git a/simpleadmin/scripts/tojson.sh b/simpleadmin/scripts/tojson.sh index 199bd94..80295ad 100644 --- a/simpleadmin/scripts/tojson.sh +++ b/simpleadmin/scripts/tojson.sh @@ -2,21 +2,32 @@ # sarav (hello@grity.com) # convert key=value to json # Created at Gritfy ( Devops Junction ) -# +# Updated by: dr-dolomite to make it more robust since it was failing on some casess -file_name=$1 -last_line=$(wc -l < $file_name) -current_line=0 +file_name="$1" echo "{" -while read line -do - current_line=$(($current_line + 1)) - if [[ $current_line -ne $last_line ]]; then - [ -z "$line" ] && continue - echo $line|awk -F'=' '{ print " \""$1"\" : "$2","}'|grep -iv '\"#' - else - echo $line|awk -F'=' '{ print " \""$1"\" : "$2""}'|grep -iv '\"#' - fi -done < $file_name +last_line=$(wc -l < "$file_name") + +while IFS='=' read -r key value || [[ -n "$key" ]]; do + # Skip empty lines and comments + if [[ -z "$key" || "$key" == \#* ]]; then + continue + fi + + # Trim leading and trailing whitespace from key and value + key=$(echo "$key" | awk '{$1=$1};1') + value=$(echo "$value" | awk '{$1=$1};1') + + # Print key-value pair in JSON format without surrounding double quotes on value + printf ' "%s" : %s' "$key" "$value" + + # Check if not the last line, add comma + if [ $((++current_line)) -lt "$last_line" ]; then + printf ',' + fi + + printf '\n' +done < "$file_name" + echo "}" \ No newline at end of file diff --git a/simpleadmin/www/atcommander.html b/simpleadmin/www/atcommander.html index 0896aa2..fd76614 100644 --- a/simpleadmin/www/atcommander.html +++ b/simpleadmin/www/atcommander.html @@ -19,7 +19,7 @@
diff --git a/simpleadmin/www/index.html b/simpleadmin/www/index.html index dce2290..90cf979 100644 --- a/simpleadmin/www/index.html +++ b/simpleadmin/www/index.html @@ -1,233 +1,244 @@ + + + + + + Simple Admin - - - - - RM5xxx Connection Info - - - - - - + + + +
-
-
-
-
-
-

- Quectel RMxxx Connection Info -

-

- Data Updated: -

-
-
-
-
-
-
-
-

-

Network

-
-
-
-
-

-

Signal Strength

-
-
-
-
-

-

Modem Temperature

-
-
-
-
-

-

Band

-
-
-
-
-
-
-
-
-

- Signal Information -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Provider -
CSQ -
Signal Strength -
RSSI -
ECIO3G/RSRQ4G/SS_RSRQ5G -
RSCP3G/RSRP4G/SS_RSRP5G -
SINR -
-
-
-
-
-
-
-
-

- Cell Information -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MCC MNC - - / - -
RNC3G/eNB ID4G/5G - - -
Lag3G/TAC4G/5G - - -
Cell ID -
Band -
Channel -
PCI -
-
-
-
-
-
+
+
+
+
+
+ +

+ Quectel Connection + Info +

+

+ Data Updated: +

+
+
+
+
+
+
+ +

+

Current APN

+

+

Current SIM

+
+
+
+
+ +

+

Network

+

+

Primary Band

+
+
+ +
+
+

+

Aggregated Bands

+
+
+
+
+

+

Signal Strength

+

+

Modem Temperature

+
+
+
+
+
+
+
+
+

Signal Information

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Provider
CSQ
Signal Strength
RSSI
+ ECIO3G/RSRQ4G/SS_RSRQ5G +
+ RSCP3G/RSRP4G/SS_RSRP5G +
SINR
+
+
+
+
+
+
+
+

Cell Information

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MCC MNC + +
RNC3G/eNB ID4G/5G + + +
Lag3G/TAC4G/5G + + +
Cell ID
Band
Channel
PCI
+
+
+
+
+
+
- - + diff --git a/simpleadmin/www/ttl.html b/simpleadmin/www/ttl.html index 0a5c178..d493e37 100644 --- a/simpleadmin/www/ttl.html +++ b/simpleadmin/www/ttl.html @@ -19,7 +19,7 @@ -
- + \ No newline at end of file