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:
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?
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:
For the first time I get in the console a message: “no such item”, but a file named “range_test_1.txt” is created.
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.
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