diff --git a/simpleadmin/scripts/build_modem_status b/simpleadmin/scripts/build_modem_status
index 23b5215..def3a5d 100644
--- a/simpleadmin/scripts/build_modem_status
+++ b/simpleadmin/scripts/build_modem_status
@@ -1,9 +1,21 @@
#!/bin/bash
+# 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
+
while true; do
# 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..461f72c 100644
--- a/simpleadmin/scripts/modemstatus_parse.sh
+++ b/simpleadmin/scripts/modemstatus_parse.sh
@@ -36,6 +36,40 @@ 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 modem model from /tmp/modemmodel.txt and parse it
+MODEM_MODEL=$(n"$SLBV
if [ -n "$BW" ]; then
@@ -194,7 +235,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,6 +303,7 @@ 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)
LBAND="n"$LBAND" (Bandwidth $BW MHz)"
RSCP=$(echo $QENG5 | cut -d, -f13)
@@ -429,12 +472,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 +489,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 +501,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 +511,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 @@