Skip to content

Instantly share code, notes, and snippets.

@taylor224
Last active July 11, 2024 20:17
Show Gist options
  • 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')
@rgsgomes
Copy link

Hi!

Any solution for the returned non-zero error returned by the scheme.activate() method?

Here is the complete error message below:
Traceback (most recent call last):
File "/home/pi/projects/wifi_connect.py", line 106, in
print(Connect('test', '12345678'))
File "/home/pi/projects/wifi_connect.py", line 54, in Connect
scheme.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.

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