Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Secure your Raspberry Pi by changing the default password. Optionally, you may enable SSH to access the command line of a Raspberry Pi remotely or setup remote desktop. Next, you have to connect to the wireless network you want to measure.

The WiFiMon Hardware Probe (WHP) regularly performs performance tests against the WiFiMon Test Server (WTS) in an automated manner, thus simulating end users from a fixed location in the monitored WiFi network. To that end, WHPs leverage on a crontab script. Within the crontab script, the tests that will be executed Then, you have to set which tests will be executed (NetTest/boomerang/speedtest) and how oftenshould be defined. To do that, open the terminal (as user "pi") and enter the command: crontab -e. The last 6 lines of the crontab file should be as in the following example:. You will see the following code block. You are required to modify the parts of the crontab that are denote

19,39,59 * * * * export DISPLAY=:0 && firefox --new-window https://www.google.com >/dev/null 2>&1

00,05,10,15,20,25,30,35,40,45,50,55 * * * * export DISPLAY=:0 && firefox --new-tab URL_TO_nettest.html >/dev/null 2>&1

01,22,42 ,06,11,16,21,26,31,36,41,46,51,56 * * * * export DISPLAY=:0 && firefox --new-tab URL_TO_speedworker.html >/dev/null 2>&1

04,24,44 02,07,12,17,22,27,32,37,42,47,52,57 * * * * export DISPLAY=:0 && firefox --new-tab URL_TO_boomerang.html >/dev/null 2>&1

03,08,13,18,23,28,33,38,43,48,53,58 /home/pi/wireless.py >> ~/cron.log 2>&1

0618,2638,46 58 * * * * scripts/kill-firefox.sh >/dev/null 2>&1

10 0 * * 0 scripts/pi-reboot.sh >/dev/null 2>&1

...

Code Block
languagepy
firstline1
titlewireless.py
linenumberstrue
#!/usr/bin/python

import subprocess
import datetime
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

def return_command_output(command):
    proc = subprocess.Popen(command, stdout = subprocess.PIPE, shell = True)
    (out, err) = proc.communicate()
    out_without_carriage_return = out.rstrip('\n')
    return out_without_carriage_return

def parse_iwconfig():
    command1 = "sudo iwconfig wlan0 | grep \"Link Quality\""
    command1_output = return_command_output(command1)
    command1_output = ' '.join(command1_output.split())
    command1_parsed = command1_output.split(" ")
    link_quality = command1_parsed[1].split("=")[1]
    link_quality = link_quality.split("/")[0]
    signal_level = command1_parsed[3].split("=")[1]
    command2 = "sudo iwconfig wlan0 | grep \"Tx-Power\""
    command2_output = return_command_output(command2)
    command2_output = ' '.join(command2_output.split())
    command2_parsed = command2_output.split(" ")
    bit_rate = command2_parsed[1].split("=")[1]
    tx_power = command2_parsed[3].split("=")[1]

    timestamp = int(datetime.datetime.now().strftime("%s")) * 1000
    probeNo = "WHP_NUMBER"

    headers = {'content-type':"application/json"}
    data = "{\"timestamp\":" + str(timestamp) + ", \"bitRate\":" + bit_rate + ", \"txPower\":" + tx_power + ", \"linkQuality\":" + link_quality + ", \"signalLevel\":" + signal_level + ", \"probeNo\":\"" + probeNo + "\"}"
    try:
        session = requests.Session()
        session.verify = False
        session.post(url='https://WAS_FQDN:8443/wifimon/probes/', data=data, headers=headers, timeout=15)
    except:
        pass
    return None

if __name__ == "__main__":
    parse_iwconfig()

Readers are required User has to edit lines 31 and 38 according to their setup. In line 31, "WHP_NUMBER" should match the number assigned to the testtools of the particular WiFiMon Hardware Probe (WHP), e.g. for the WHP assigned the number 1, the value should be "1". Assigning numbers to WHPs is possible by appropriately setting the testtool attribute included in the websites monitored by them. More information related to assigning number to WHPs is available in the WiFiMon Test Server installation guide. In line 38, "WAS_FQDN" should match the FQDN of the WiFiMon Analysis Server (WAS) responsible for processing the wireless performance metrics of the WHP. The above code block assumes that the WAS uses the WiFiMon Secure Agent. In case of using the WiFiMon Non-Secure Agent, the URL of line 38 should be modified; instead of "https", the WiFiMon Non-Secure Agent requires "http" and the port on which the WAS listens is "9000" instead of "8443".

...