Anirey
December 10, 2014, 6:51am
1
Hi!
How to split this value ^HCSQ:“LTE”,56,47,101,18 ?
I would like to get 5 value by script:
Signal = LTE (maybe WDMA)
RSSI = 56 (the first)
RSSP = 47 (the second)
SINR = 101 (the next)
RSRQ = 18 (only for LTE).
ex.:
^HCSQ:“LTE”,56,47,101,18
^HCSQ:“WDMA”,45,147,60
^HCSQ:“LTE”,58,39,99,32
Thanks!
skot
December 10, 2014, 4:41pm
2
You can split the string to get rid of the prefix, and then convert the remaining string into an array.
{
:local var "^HCSQ:\"LTE\",56,47,101,18"
:local myArray [:toarray [:pick $var ([:find $var ":"]+1) [:len $var]]]
:local signal [:pick $myArray 0]
:put "Signal: $signal"
:local rssi [:pick $myArray 1]
:put "RSSI: $rssi"
etc...
}
Anirey
December 17, 2014, 11:33am
3
Thanks!
It works.
Do you know how to send “Q” using script?
interface ppp-client info ppp-out1 user-command=“AT^HCSQ?”
modem-status: ready
pin-status: no password required
functionality: full
manufacturer: ^HCSQ:“LTE”,52,47,156,26
model: E3372
revision: 21.285.01.02.143
serial-number: 864346021423076
current-operator: Beeline (cellid bc4ae05)
access-technology: Evolved 3G (LTE)
signal-strengh: -69 dBm
frame-error-rate: n/a
– [Q quit|D dump|C-z pause]
skot
December 18, 2014, 6:48pm
4
I don’t think you can send Q from a script, but you can tell it to just run once. And from there you can get data. Paste this in the terminal and it should output ^HCSQ:“LTE”,52,47,156,26.
{
:local mf
/interface ppp-client info ppp-out1 user-command="AT^HCSQ\?" once do={
:set mf $manufacturer
}
:put $mf
}
Anirey
December 19, 2014, 9:03am
5
It is the problem =(
[mikatmbank@TEST2] > interface ppp-client info ppp-out1 user-command=“AT^HCSQ?”
works
– [Q quit|D dump|C-z pause]
interface ppp-client info ppp-out1 user-command=“AT^HCSQ?” once
modem-status:
pin-status:
functionality:
manufacturer:
model:
revision:
serial-number:
current-operator: (cellid )
access-technology:
signal-strengh:
frame-error-rate:
nterface ppp-client info ppp-out1 user-command=“AT^HCSQ?” once do={:delay 10}
modem-status:
pin-status:
functionality:
manufacturer:
model:
revision:
serial-number:
current-operator: (cellid )
access-technology:
signal-strengh:
frame-error-rate:
doesn’t work
skot
December 19, 2014, 4:05pm
6
For the one that works, does it take some time before the information shows up?
Anirey
December 19, 2014, 7:09pm
7
Yes.
But delay doesn’t help.
skot
December 22, 2014, 8:20pm
8
You could try just sending the letter, or echoing it with :put, but I doubt either of these will work…
/interface ppp-client info ppp-out1 user-command="AT^HCSQ\?" do={
:if ([:len $manufacturer] > 0) do={
:put $manufacturer
q
}
}
/interface ppp-client info ppp-out1 user-command="AT^HCSQ\?" do={
:if ([:len $manufacturer] > 0) do={
:put $manufacturer
:put "q"
}
}
Anirey
December 23, 2014, 7:36am
9
Thanks for your help!
It works!
My script has name QTY_Signal
/interface ppp-client info ppp-out1 user-command="AT^HCSQ\?" do={
:if ([:len $manufacturer] > 0 ) do={
:set HCSQ $"manufacturer"
/system script job remove [find script=QTY_Signal]
}
}
Anirey
December 23, 2014, 8:19am
10
Sorry.
Can you hep me yet?
How do this variable add to the content of existing file?
skot
December 23, 2014, 6:25pm
11
Anirey:
Thanks for your help!
It works!
My script has name QTY_Signal
/interface ppp-client info ppp-out1 user-command="AT^HCSQ\?" do={
:if ([:len $manufacturer] > 0 ) do={
:set HCSQ $"manufacturer"
/system script job remove [find script=QTY_Signal]
}
}
Well done, good solution.
You can add content to existing file by doing something like this:
{
:local fileContent [/file get myFile.txt content];
:local manufacturer "^HCSQ:\"LTE\",52,47,156,26"
/file set myFile.txt contents=($fileContent . "\n" . $manufacturer);
}
Anirey
December 24, 2014, 7:08am
12
Thanks!
Well done, good solution.
maybe, but it generates log message “script error:interrapted”
greek
January 12, 2017, 12:44am
13
Anirey:
Thanks for your help!
It works!
My script has name QTY_Signal
/interface ppp-client info ppp-out1 user-command="AT^HCSQ\?" do={
:if ([:len $manufacturer] > 0 ) do={
:set HCSQ $"manufacturer"
/system script job remove [find script=QTY_Signal]
}
}
Try this script:
/interface ppp-client info ppp-out1 user-command="AT^HCSQ\?" do={
:if ([:len $manufacturer] > 0 ) do={
:set HCSQ $"manufacturer"
:quit;
}
}
greek
January 12, 2017, 12:49am
14
I use this variant:
/system script
add name=lte owner=admin policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive source=":local i 0;\
\n/interface ppp-client info ppp-WAN do={\
\n:set i (\$i+1);\
\n:if (\$i=5) do={\
\n:global lte \$\"access-technology\" ;\
\n:global signalstrengh \$\"signal-strengh\";\
\n:global itog (\$lte.\" \".\$signalstrengh); \
\n:log warn \$itog;\
\n:quit;\
\n}\
\n}\
\n\
\n\
\n"
greek
January 12, 2017, 12:55am
15
And after reading this topic my final variant:
/interface ppp-client info ppp-WAN do={
:if ([:len $"access-technology"] > 0 ) do={
:global lte $"access-technology" ;
:global signalstrengh $"signal-strengh";
:global itog ($lte." ".$signalstrengh);
:log warn $itog;
:quit;
}
}