Last active
July 29, 2024 03:29
-
-
Save dybber/e2a137c65e7714be2c2ebcc255e95e3d to your computer and use it in GitHub Desktop.
MicroPython wifi connection w. timeout
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import machine | |
import time | |
import network | |
import urequests | |
# Function to connect to a specific wifi network | |
def connectToWifi(wifi, essid, password, timeout): | |
if not wifi.isconnected(): | |
print("Connecting to WiFi network...") | |
wifi.connect(essid, password) | |
# Wait until connected | |
t = time.ticks_ms() | |
while not wifi.isconnected(): | |
if time.ticks_diff(time.ticks_ms(), t) > timeout: | |
wifi.disconnect() | |
print("Timeout. Could not connect.") | |
return False | |
print("Successfully connected to " + essid) | |
return True | |
else: | |
print("Already connected") | |
return True |
If you change line 10, it will not connect, and thus the while-loop will only stop when the timeout runs out and it gives up.
It works by attempting to call wifi.connect(...), then waiting for a while (determined by the timeout parameter), if the time passes and it hasn't connected it will time out and call wifi.disconnect()
This was written as part of an educational initiative, and is not at all production level code, and shouldn't be used for anything but small non-important projects.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Could you explain me why does this works? Fo instance if I change line 10: wifi.connect(essid, password) for another function that takes time to execute it does not work.