def getDistanceFromAP(wifiname, signalAttenuation, ref_distance, ref_signal,
                      n_iter):
    rssi_scanner = rssi.RSSI_Scan('wlan0')
    ap_info = np.zeros(n_iter)
    #t0=time.time()
    for i in range(0, n_iter):
        ap_info[i] = getAPinfo(rssi_scanner, networks=wifiname,
                               sudo=True)[0]['signal']
        print(i, ap_info[i])
    #t1=time.time()
    #print('Running time: ', t1-t0)
    fl = open('m5.csv', 'w')
    writer = csv.writer(fl)
    for values in ap_info:
        writer.writerow([values])
    fl.close()
    signalStrength = sum(ap_info) / n_iter
    print('Average signal: ', signalStrength)
    #     for signalAttenuation in np.arange(1.0,4.0,0.1):
    beta_numerator = float(ref_signal - signalStrength)
    beta_denominator = float(10 * signalAttenuation)
    beta = beta_numerator / beta_denominator
    distanceFromAP = round(((10**beta) * ref_distance), 4)
    print(signalAttenuation, distanceFromAP)
    return distanceFromAP
Exemple #2
0
def wifi_publisher():
    # Initializes node
    rospy.init_node("wifi_signals", anonymous=True)

    # Publisher
    pub = rospy.Publisher("wifi_strength", Int32, queue_size=10)

    print("Initializing WiFi signal...")

    # Select the correct interface (depends on the machine)
    interface = "wlp3s0"
    rssi_scanner = rssi.RSSI_Scan(interface)

    # List of access points to scan
    ssids = ['eduroam']

    while not rospy.is_shutdown():
        ap_info = rssi_scanner.getAPinfo(networks=ssids, sudo=True)

        if type(ap_info) is not bool:
            print(ap_info)
            minimo = float("inf")
            for ap in ap_info:
                if abs(ap["signal"]) < minimo:
                    minimo = ap["signal"]

            # print(minimo)
            pub.publish(minimo)
def main(args):
    """

    :param args: arguements given by the user

    arguments for main:

        Required:
        -nwi: the name of your WIFI interface.
            For MAC users, use this terminal command: system_profiler SPNetworkDataType | grep Wi-Fi -A10
            The name is denoted by "BSD Device Name", in my case, it's en0
        -itv: time interval between samples, unit = millisecond
        -drt: the duration during which to capture samples, unit = millisecond

        Optional:
        -ave: take the average of give number of samples
    """
    # start parsing arguments
    nt_interface = args.nwInterface
    sampling_interval = args.interval
    sampling_duration = args.duration

    num_samples = int(sampling_duration / sampling_interval)

    config_msg = 'The WI-FI interface for scanning is ' + nt_interface
    sampling_msg = 'This will take ' + str(num_samples) + ' samples in ' + str(
        sampling_duration) + ' ms.\nPress enter to continue...'
    input(config_msg + '\n' + sampling_msg)
    # end of parsing arguments

    # initialize scanner
    rssi_scanner = rssi.RSSI_Scan(nt_interface)
def getAP():
    interface = 'wlan0'
    
    rssi_scanner = rssi.RSSI_Scan(interface)
    ssids = ['GL-MT300N-V2-bd4', 'GL-MT300N-V2-303', 'GL-MT300N-V2-d22', 'GL-MT300N-V2-d2a']
    
    ap_info = rssi_scanner.getAPinfo(ssids, sudo=True)
    
    return ap_info
def radius():
	interface = 'wlan0'
	rssi_scanner = rssi.RSSI_Scan(interface)
	ssids = ['Aj*','linksys']

# sudo argument automatixally gets set for 'false', if the 'true' is not set manually.
# python file will have to be run with sudo privileges.
	ap_info = rssi_scanner.getAPinfo(networks=ssids,sudo=True)
#dist = rssi_scanner.getDistanceFromAP(sudo=True)

	#print(ap_info[0]['signal'])
	
	#calculating the distance using the formula
	rss=ap_info[0]['signal']
	Ptx=-63
	n = 1.8
	distance =  10**((Ptx-rss)/(10*n))
	return (distance)
def get_RSSI(iteration):
	interface = 'wlan0'
	rssi_scanner = rssi.RSSI_Scan(interface)

	ssids = ['JayHotSpot']

	rssi_val = 0
	rssi_list = []

	for x in range(0, iteration):
		info = rssi_scanner.getAPinfo(networks=ssids, sudo=True)
		if info != False and len(info) > 0:
			for network in info:
				rssi_list.append(int(network['signal']))

	if len(rssi_list) > 0:
		rssi_val = max(set(rssi_list), key=rssi_list.count)

	return rssi_val
Exemple #7
0
def handle_wifi_signals(req):
    # Select the correct interface (depends on the machine)
    interface = "wlp3s0"
    rssi_scanner = rssi.RSSI_Scan(interface)

    # List of access points to scan
    ssids = [req.ssid]

    ap_info = rssi_scanner.getAPinfo(networks=ssids, sudo=True)

    if type(ap_info) is not bool:
        minimo = float("inf")
        for ap in ap_info:
            if abs(ap["signal"]) < minimo:
                minimo = ap["signal"]

        return (minimo)
    else:
        return (0)
Exemple #8
0
import rssi
from time import sleep, time
import socket

host = socket.gethostname()
port = 5005
BUFFER_SIZE = 2000

tcpClientA = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
interface = 'wlan0'
rssi_scanner = rssi.RSSI_Scan(interface)

ssids = ['pi-mobile']
TCP_IP = "192.168.16.1"

# Variables from power regression of RSSI data
# distance=A*(r/t)^B+C
# where r is the RSSI value and t is the RSSI at 1m
A = 0.812080813887844
B = 3.63550212364731
C = 0.1879191861
t = -37

now = time()
rollingaverage = []
collecttime = 5  # how long to average before sending data
avgamt = 60  # how many datapoints for rolling average
while True:
    MESSAGE = ""
    # get RSSI data
    ap_info = rssi_scanner.getAPinfo(networks=ssids, sudo=True)
def get_all_aps():
    rssi_scanner = rssi.RSSI_Scan('enp33s0')
    ap_info = rssi_scanner.getAPinfo()
    print(ap_info)
Exemple #10
0
 def __init__(self, host, port, interface, ssid):
     self.ssids = [ssid]
     self.rssi_scanner = rssi.RSSI_Scan(interface)
     self.get_connection(host, port)
def getAPinfo(self, networks=False, sudo=False):
    # TODO implement error callback if error is raise in subprocess
    # Unparsed access-point listing. AccessPoints are strings.
    raw_scan_output = self.getRawNetworkScan(sudo)['output']
    print(raw_scan_output)
    # Parsed access-point listing. Access-points are dictionaries.
    all_access_points = formatCells(self, raw_scan_output)
    print(all_access_points)
    # Checks if access-points were found.
    if all_access_points:
        # Checks if specific networks were declared.
        if networks:
            # Return specific access-points found.
            return self.filterAccessPoints(all_access_points, networks)
        else:
            # Return ALL access-points found.
            return all_access_points
    else:
        # No access-points were found. 
        return False
    

# rssi_scanner = rssi.RSSI_Scan('wlan0')
for i in range(0,10):
    
    rssi_scanner = rssi.RSSI_Scan('wlan0')
    print(rssi_scanner.getRawNetworkScan(True)['output'])
    rssi_scanner = rssi.RSSI_Scan('wlan0')
    print(rssi_scanner.getRawNetworkScan(True))
#     print(getAPinfo(rssi_scanner, networks='EdgeCloud1', sudo=True))
Exemple #12
0
import rssi
import numpy as np

rssi_scanner = rssi.RSSI_Scan('en6')
ap_info = rssi_scanner.getAPinfo(sudo=True)
Exemple #13
0
 def __init__(self, interface, ssid):
     self.interface = interface
     self.ssid = ssid
     self.rssi_scanner = rssi.RSSI_Scan(interface)
     print("init rssi scanner")
Exemple #14
0
 def __init__(self):
     self.interface = 'wlan0'
     self.rssi_scanner = rssi.RSSI_Scan(self.interface)
     self.config = configparser.ConfigParser()
     self.config.read(mapping.online_status)