Skip to content

Instantly share code, notes, and snippets.

@taylor224
Last active February 8, 2024 15:22
Show Gist options
  • Star 40 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save taylor224/516de7dd0b707bc0b1b3 to your computer and use it in GitHub Desktop.
Save taylor224/516de7dd0b707bc0b1b3 to your computer and use it in GitHub Desktop.
Python WiFi Example
# -*- coding: utf-8 -*-
import wifi
def Search():
wifilist = []
cells = wifi.Cell.all('wlan0')
for cell in cells:
wifilist.append(cell)
return wifilist
def FindFromSearchList(ssid):
wifilist = Search()
for cell in wifilist:
if cell.ssid == ssid:
return cell
return False
def FindFromSavedList(ssid):
cell = wifi.Scheme.find('wlan0', ssid)
if cell:
return cell
return False
def Connect(ssid, password=None):
cell = FindFromSearchList(ssid)
if cell:
savedcell = FindFromSavedList(cell.ssid)
# Already Saved from Setting
if savedcell:
savedcell.activate()
return cell
# First time to conenct
else:
if cell.encrypted:
if password:
scheme = Add(cell, password)
try:
scheme.activate()
# Wrong Password
except wifi.exceptions.ConnectionError:
Delete(ssid)
return False
return cell
else:
return False
else:
scheme = Add(cell)
try:
scheme.activate()
except wifi.exceptions.ConnectionError:
Delete(ssid)
return False
return cell
return False
def Add(cell, password=None):
if not cell:
return False
scheme = wifi.Scheme.for_cell('wlan0', cell.ssid, cell, password)
scheme.save()
return scheme
def Delete(ssid):
if not ssid:
return False
cell = FindFromSavedList(ssid)
if cell:
cell.delete()
return True
return False
if __name__ == '__main__':
# Search WiFi and return WiFi list
print Search()
# Connect WiFi with password & without password
print Connect('OpenWiFi')
print Connect('ClosedWiFi', 'password')
# Delete WiFi from auto connect list
print Delete('DeleteWiFi')
@chetanyaag
Copy link

chetanyaag commented Jul 6, 2021 via email

@Ganesh-Shanbhag-face
Copy link

Hi, I am getting this error. What may be wrong?

[Cell(ssid=mySSID)]
Traceback (most recent call last):
  File "/home/pi/wifi_con.py", line 89, in <module>
    print(Connect('mySSID', '@key12345'))
  File "/home/pi/wifi_con.py", line 34, in Connect
    savedcell.activate()
  File "/home/pi/.local/lib/python3.9/site-packages/wifi/scheme.py", line 172, in activate
    subprocess.check_output(['/sbin/ifdown', self.interface], stderr=subprocess.STDOUT)
  File "/usr/lib/python3.9/subprocess.py", line 424, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.9/subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/sbin/ifdown', 'wlan0']' returned non-zero exit status 1.

@peacekeeperrusev
Copy link

Guys…can you give me pls an answer of this question…my devise is not rooted..
Can this script run without any problems ???

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment