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

Mon, 20 Jan 2025 15:48:41 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 20 Jan 2025 15:48:41 +0100
branch
eric7
changeset 11121
c4937b06b58a
parent 11038
918bc08e1f89
permissions
-rw-r--r--

MicroPython
- Updated the list of known CircuitPython boards for CPy 9.2.3.

11038
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
1 def has_ntp():
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
2 try:
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
3 import ntptime
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
4 return True
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
5 except ImportError:
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
6 return False
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
7
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
8 def set_ntp_time(server, tz_offset, timeout):
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
9 import ntptime
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
10 import machine
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
11
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
12 ntptime.host = server
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
13 ntptime.timeout = timeout
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
14 ntptime.settime()
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
15
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
16 rtc = machine.RTC()
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
17 t = list(rtc.datetime())
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
18 t[4] += tz_offset
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
19 rtc.datetime(t)
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
20
9890
66a6d3f131cc Changed the MCU script to a pythonic naming.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
21 def connect_wifi():
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 import esp32
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 from time import sleep
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 nvs = esp32.NVS("wifi_creds")
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 buf = bytearray(1024)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 size = nvs.get_blob("ssid", buf)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 ssid = buf[:size].decode()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 size = nvs.get_blob("password", buf)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 password = buf[:size].decode()
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
33 size = nvs.get_blob("hostname", buf)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
34 hostname = buf[:size].decode()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
35 size = nvs.get_blob("country", buf)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
36 country = buf[:size].decode()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
37
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
38 print("Connecting WiFi to '{0}'...".format(ssid))
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
39
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
40 if country:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
41 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
42 network.country(country)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
43 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
44 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
45
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
46 if hostname:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
47 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
48 network.hostname(hostname)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
49 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9890
diff changeset
50 pass
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 wifi.active(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 wifi.active(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 wifi.connect(ssid, password)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 max_wait = 140
11038
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
57 while max_wait and wifi.status() != network.STAT_GOT_IP:
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 max_wait -= 1
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 sleep(0.1)
11038
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
60 if wifi.isconnected():
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
61 print("WiFi connected:", wifi.ifconfig()[0])
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
62 if has_ntp():
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
63 set_ntp_time("pool.ntp.org", 0, 10)
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
64 print("Time snchronized to network time (UTC).")
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
65 else:
918bc08e1f89 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
66 print("WiFi connection failed. Status:", wifi.status())
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 except:
9828
32c8a5b57332 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
68 print("WiFi secrets are kept in NVM. Please store them there!")
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
9890
66a6d3f131cc Changed the MCU script to a pythonic naming.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
70 connect_wifi()

eric ide

mercurial