src/eric7/MicroPython/Devices/MCUScripts/esp32WiFiConnect.py

Thu, 03 Aug 2023 17:33:07 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 03 Aug 2023 17:33:07 +0200
branch
eric7
changeset 10153
ffe7432f716b
parent 9890
66a6d3f131cc
child 11038
918bc08e1f89
permissions
-rw-r--r--

MicroPython
- Added support to set the host name of the device (WiFi and Ethernet).
- Added support to set the WiFi country code (where supported by the device and the installed firmware).

9890
66a6d3f131cc Changed the MCU script to a pythonic naming.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
1 def connect_wifi():
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 import esp32
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 from time import sleep
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 nvs = esp32.NVS("wifi_creds")
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 buf = bytearray(1024)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 size = nvs.get_blob("ssid", buf)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 ssid = buf[:size].decode()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 size = nvs.get_blob("password", buf)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 password = buf[:size].decode()
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
13 size = nvs.get_blob("hostname", buf)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
14 hostname = buf[:size].decode()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
15 size = nvs.get_blob("country", buf)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
16 country = buf[:size].decode()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
17
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
18 print("Connecting WiFi to '{0}'...".format(ssid))
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
19
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
20 if country:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
21 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
22 network.country(country)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
23 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
24 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
25
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
26 if hostname:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
27 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
28 network.hostname(hostname)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
29 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
30 pass
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 wifi.active(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 wifi.active(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 wifi.connect(ssid, password)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 max_wait = 140
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 while max_wait and wifi.status() == network.STAT_CONNECTING:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 max_wait -= 1
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 sleep(0.1)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 print("Connection status:", wifi.isconnected())
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 except:
9828
32c8a5b57332 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
42 print("WiFi secrets are kept in NVM. Please store them there!")
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
9890
66a6d3f131cc Changed the MCU script to a pythonic naming.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
44 connect_wifi()

eric ide

mercurial