-
-
Save taylor224/516de7dd0b707bc0b1b3 to your computer and use it in GitHub Desktop.
# -*- 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') |
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.
Guys…can you give me pls an answer of this question…my devise is not rooted..
Can this script run without any problems ???