Source code for openbci_stream.utils.scan_wifi_modules

"""
=================
Scan WiFi modules
=================
"""

import requests
from typing import Dict


# ----------------------------------------------------------------------
[docs]def scan_wifi_modules(network: str = "wlan0") -> Dict[str, str]: """Scan for WiFi modules. Explore the local network with `nmap` in search of WiFi modules, the way to check if a device is a WiFi module is reading the `/board` endopint, the `JSON` is stored and returned too. Parameters ---------- network The network interface name used e.g. `wlan0`, `wlp2s0`, 'eth0'... Returns ------- dict Dictionay with IPs as keys of WiFi modules on network and `/board` as value. """ # Optional requieres are imported only inside the function import netifaces import nmap ip_list = {} local_net = netifaces.ifaddresses(network)[netifaces.AF_INET][0]["addr"] nm = nmap.PortScanner() nm.scan(hosts=f"{local_net}/24", arguments="-sn") hosts = nm.all_hosts() for host in hosts: try: response = requests.get(f"http://{host}/board", timeout=0.1) if response.ok: ip_list[host] = response.json() except: continue return ip_list
if __name__ == "__main__": print(scan_wifi_modules())