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
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
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)
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)
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))
import rssi import numpy as np rssi_scanner = rssi.RSSI_Scan('en6') ap_info = rssi_scanner.getAPinfo(sudo=True)
def __init__(self, interface, ssid): self.interface = interface self.ssid = ssid self.rssi_scanner = rssi.RSSI_Scan(interface) print("init rssi scanner")
def __init__(self): self.interface = 'wlan0' self.rssi_scanner = rssi.RSSI_Scan(self.interface) self.config = configparser.ConfigParser() self.config.read(mapping.online_status)