Tx/Rx signal strength in time

Hello folks,

need some help with scripting. Am new to the subject, but have some experience with C/C++/Java.

At my place I have made a bridge connection between two A-52HPn routers (one works in CPE, the second in WISP AP). Now I would like to find the best place where I can position the devices. It is an indoor environment and I have a line of sight (LOS).

Unfortunatly I am left alone with this issue. I made my first measurements by placing one device in a place and going back to the second to read the results (Tx/Rx rates) from the “Quick Set” screen. But I got tired of this.

I am now trying to get raw data saved into a file for further options. And I am wondering, how I could make it. The file should have a form of:

1s Tx 61 Rx 73
2s Tx 63 Rx 76
3s Tx 59 Rx 69
etc.

Ofc it is only an example.
Also I have no problem with value coverting.

For now I know, how to execute a script and how to show me some values via the following command:

“interface wireless registration-table print oid”

but I do not know much more.


I appreciate any help

Regards

Ok, made some progress. My code looks like this now:

:local x 1
:for x from=1 to=10 step=1 do={
:foreach i in=[/interface wireless registration-table find] do {
:put "\n"
:put "$x"
:put "Rx Signal Strength: "
:put [/interface wireless registration-table get $i signal-strength]
:put "Tx Signal Strength: "
:put [/interface wireless registration-table get $i tx-signal-strength]
:put "Signal to noise: "
:put [/interface wireless registration-table get $i signal-to-noise]
:put "Router Uptime "
:put [/interface wireless registration-table get $i uptime]
:delay 1
}
}

I get, what I wanted but wonder, if I count time in a different way, then “Router Uptime”. Like from the moment, when the loop has been initiated. Also, the delay of 1 second is not a must.

Thanks for all the help I could get from this forum.

My next step will be to save this data into a .txt file.

Offtop:
Is there an API for the above script existing?


Thanks in advance

Regards

Hello folks, I am some steps further.

The save to file task works for me. Now I wanted to create a new file with every iteration. I am stuck at the following:

#file with next test number is created
:local fileNumber 1;
:local fileName ("range_test_" . $fileNumber . ".txt");
:local checkFile [/file find name=$fileName]

:if ($checkFile=$fileName) do {
:set fileNumber ($fileNumber + 1)
} else {
/file print file=$fileName
}

/file set $fileName contents=""

#Router will beep one time to ensure, that script has started
:beep frequency=860 length=500ms;

:delay 1

#Here variables are declared to save the signals present value and afterwards to save it to a file.
:local signalStrength 0;
:local txSignalStrength 0;
:local signalToNoise 0;
:local routerUptime 0;
:local fileContent 0;

#char x determines how many measuring should be taken
#change the value "to= n", where 'n' is the desired iteration number
:local x 1;

:set fileContent [file get $fileName content];
/file set $fileName contents=($fileContent  . "No" . "\t" . "Rx" . "\t\t" . "Tx" . "\t" . "StN" . "\t" . "Router Uptime");

:for x from=1 to=10 step=1 do={
:foreach i in=[/interface wireless registration-table find] do {
:foreach j in=[/interface wireless registration-table find] do {
:put "\n"
:put "$x"
:set fileContent [file get $fileName content];
/file set $fileName contents=($fileContent . "\r\n" . "$x ;" . "\t");

:put "Rx Signal Strength: " 
:put [/interface wireless registration-table get $i signal-strength]
:set signalStrength [/interface wireless registration-table get $j signal-strength];
:set fileContent [file get $fileName content];
:set fileContent ($fileContent . $signalStrength);
/file set $fileName contents=($fileContent . " ;" . "\t");

:put "Tx Signal Strength: "
:put [/interface wireless registration-table get $i tx-signal-strength]
:set txSignalStrength [/interface wireless registration-table get $j tx-signal-strength];
:set fileContent [file get $fileName content];
:set fileContent ($fileContent . $txSignalStrength);
/file set $fileName contents=($fileContent . " ;" . "\t");

:put "Signal to noise: "
:put [/interface wireless registration-table get $i signal-to-noise]
:set signalToNoise [/interface wireless registration-table get $j signal-to-noise];
:set fileContent [file get $fileName content];
:set fileContent ($fileContent . $signalToNoise);
/file set $fileName contents=($fileContent . " ;" . "\t");

:put "Router Uptime: "
:put [/interface wireless registration-table get $i uptime]
:set routerUptime [/interface wireless registration-table get $j uptime];
:set fileContent [file get $fileName content];
:set fileContent (fileContent . $routerUptime);
/file set $fileName contents=($fileContent . " ;" . "\t");

#the 'delay' commend sets the time interval measurements made
#in seconds (s)
:delay 0.5

#reseting variables to save memory
:local signalStrength 0;
:local txSignalStrength 0;
:local signalToNoise 0;
:local routerUptime 0;
:local fileContent 0;
}
}
}

#double beep for finished measurements
:beep frequency=860 length=350ms;
:delay 0.5
:beep frequency=860 length=500ms;
:delay 0.5

The code now works as follows:

  1. For the first time I get in the console a message: “no such item”, but a file named “range_test_1.txt” is created.
  2. Second time I run the script, the measurements flows on my screen. The file name does not increas. In the file I see only the last line of the measurements from the console.


    Can anyone help me with this issue?

Oh, and if someone would wonder, how my previous solutions worked, here they are:

#to execute script write in console
#system script run 0

#here a file is created
/file print file=range_test.txt
/file set range_test.txt contents=""

#Router will beep one time to ensure, that script has started
:beep frequency=860 length=500ms;

:delay 1

#Here variables are declared to save the signals present value and after save it to a file.
:local signalStrength 0;
:local txSignalStrength 0;
:local signalToNoise 0;
:local routerUptime 0;
:local fileContent 0;

#char x determines how many measuring should be taken
#change the value "to= n", where 'n' is the desired iteration number
:local x 1;
:for x from=1 to=10 step=1 do={
:foreach i in=[/interface wireless registration-table find] do {
:foreach j in=[/interface wireless registration-table find] do {
:put "\n"
:put "$x"
:set fileContent [file get range_test.txt content];
/file set range_test.txt contents=($fileContent . "\r\n" . "$x" . "\r\n");
:put "Rx Signal Strength: "
:set fileContent [file get range_test.txt content];
/file set range_test.txt contents=($fileContent  . "Rx Signal Strength: ");
:put [/interface wireless registration-table get $i signal-strength]
:set signalStrength [/interface wireless registration-table get $j signal-strength];
:set fileContent [file get range_test.txt content];
:set fileContent ($fileContent . $signalStrength);
/file set range_test.txt contents=($fileContent . "\r\n");
:put "Tx Signal Strength: "
:set fileContent [file get range_test.txt content];
/file set range_test.txt contents=($fileContent . "Tx Signal Strength: ");
:put [/interface wireless registration-table get $i tx-signal-strength]
:set txSignalStrength [/interface wireless registration-table get $j tx-signal-strength];
:set fileContent [file get range_test.txt content];
:set fileContent ($fileContent . $txSignalStrength);
/file set range_test.txt contents=($fileContent . "\r\n");
:put "Signal to noise: "
:set fileContent [file get range_test.txt content];
/file set range_test.txt contents=($fileContent . "Signal to noise: ");
:put [/interface wireless registration-table get $i signal-to-noise]
:set signalToNoise [/interface wireless registration-table get $j signal-to-noise];
:set fileContent [file get range_test.txt content];
:set fileContent ($fileContent . $signalToNoise);
/file set range_test.txt contents=($fileContent . "\r\n");
:put "Router Uptime "
:set fileContent [file get range_test.txt content];
/file set range_test.txt contents=($fileContent . "Router uptime: ");
:put [/interface wireless registration-table get $i uptime]
:set routerUptime [/interface wireless registration-table get $j uptime];
:set fileContent [file get range_test.txt content];
:set fileContent ($fileContent . $routerUptime);
/file set range_test.txt contents=($fileContent . "\r\n");

#the 'delay' commend sets the time interval measurements made
#in seconds (s)
:delay 0.5

#reseting variables to save ram
:local signalStrength 0;
:local txSignalStrength 0;
:local signalToNoise 0;
:local routerUptime 0;
:local fileContent 0;
}
}
}

#double beep for finished measurements
:beep frequency=860 length=350ms;
:delay 0.5
:beep frequency=860 length=500ms;
:delay 0.5

The file content looks asame as the one on the screen.
The file is rewritten each time I start the measurements.


#############
Script 2 (ready for Matlab)

Here i changed the way, the information is saved in the .txt file.
The rewritting still occurs.

#to execute script write in console
#system script run 1

#here a file is created
/file print file=range_test.txt
/file set range_test.txt contents=""

#Router will beep one time to ensure, that script has started
:beep frequency=860 length=500ms;

:delay 1

#Here variables are declared to save the signals present value and after save it to a file.
:local signalStrength 0;
:local txSignalStrength 0;
:local signalToNoise 0;
:local routerUptime 0;
:local fileContent 0;

#char x determines how many measuring should be taken
#change the value "to= n", where 'n' is the desired iteration number
:local x 1;

:put ("Rx" . "\t" . "Tx" . "\t" . "StN" . "\t" . "rU")
:set fileContent [file get range_test.txt content];
/file set range_test.txt contents=($fileContent  . "No" . "\t" . "Rx" . "\t\t" . "Tx" . "\t" . "StN" . "\t" . "Router Uptime");

:for x from=1 to=10 step=1 do={
:foreach i in=[/interface wireless registration-table find] do {
:foreach j in=[/interface wireless registration-table find] do {
:put "\n"
:put "$x"
:set fileContent [file get range_test.txt content];
/file set range_test.txt contents=($fileContent . "\r\n" . "$x" . "\t");

:put "Rx Signal Strength: "
:put [/interface wireless registration-table get $i signal-strength]
:set signalStrength [/interface wireless registration-table get $j signal-strength];
:set fileContent [file get range_test.txt content];
:set fileContent ($fileContent . $signalStrength);
/file set range_test.txt contents=($fileContent . "\t");

:put "Tx Signal Strength: "
:put [/interface wireless registration-table get $i tx-signal-strength]
:set txSignalStrength [/interface wireless registration-table get $j tx-signal-strength];
:set fileContent [file get range_test.txt content];
:set fileContent ($fileContent . $txSignalStrength);
/file set range_test.txt contents=($fileContent . "\t");

:put "Signal to noise: "
:put [/interface wireless registration-table get $i signal-to-noise]
:set signalToNoise [/interface wireless registration-table get $j signal-to-noise];
:set fileContent [file get range_test.txt content];
:set fileContent ($fileContent . $signalToNoise);
/file set range_test.txt contents=($fileContent . "\t");

:put "Router Uptime "
:put [/interface wireless registration-table get $i uptime]
:set routerUptime [/interface wireless registration-table get $j uptime];
:set fileContent [file get range_test.txt content];
:set fileContent ($fileContent . $routerUptime);
/file set range_test.txt contents=($fileContent . "\t");

#the 'delay' commend sets the time interval measurements made
#in seconds (s)
:delay 0.5

#reseting variables to save ram
:local signalStrength 0;
:local txSignalStrength 0;
:local signalToNoise 0;
:local routerUptime 0;
:local fileContent 0;
}
}
}

#double beep for finished measurements
:beep frequency=860 length=350ms;
:delay 0.5
:beep frequency=860 length=500ms;
:delay 0.5

Regards