我是 Micropython 新手,目前正在使用 Micropython 开发一个使用 esp32S3 的 IoT 项目。对于初始化,我希望用户能够选择 WLAN 并输入相应的密码。我能够扫描 WLAN、连接到 esp32S3 作为接入点并发送 html 代码以设置一侧。然而现在我对如何将用户输入返回到 esp32 有点一无所知。
到目前为止我已经编写了以下代码:
import network
import gc
import socket
def format_scan(scan_results):
ssids = [result[0].decode("utf-8") for result in scan_results]
ssids = list(set(ssids))
if '' in ssids:
ssids.remove('')
form_results = []
for ssid in ssids:
rssis = []
for result in scan_results:
if result[0].decode("utf-8") == ssid:
rssis.append(result[3])
form_results.append((ssid, max(rssis)))
return form_results
def format_html(wlans):
html_wlan_tab = """<table>"""
for index, wlan in enumerate(wlans):
html_wlan_tab += """
<tr>
<td>
<input type="radio" name="wlan" id=""" + f"\"{index}\"" + """>
</td>
<td>
""" + f"{wlan[0]}" + """
</td>
<td>
""" + f"{wlan[1]}" + """
</td>
</tr>"""
html_wlan_tab += """
</table>"""
html_code = """
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WLAN Selector</title>
</head>
<style>
</style>
<body>
<h2>Wählen Sie ein WLAN</h2>
""" + html_wlan_tab + """
<div>
<h2>Passwort eingeben</h2>
<input type="password">
<button>bestätigen </button>
</div>
</body>
</html>
"""
return html_code
gc.collect()
# WLAN Konfiguration
wlan_ap = network.WLAN(network.AP_IF) # AP Objekt
wlan_sta = network.WLAN(network.STA_IF) # Station Objekt
wlan_sta.active(True)
wlan_werte = format_scan(wlan_sta.scan())
html = format_html(wlan_werte)
print(html)
wlan_sta.active(False)
wlan_ap.active(True)
wlan_ap.config(essid="SmartSwitch")
# Socket Konfiguration
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('', 80))
server_socket.listen(1)
try:
while True:
com_socket, com_adr = server_socket.accept()
com_socket.sendall(html)
com_socket.close()
except KeyboardInterrupt:
print("Programm durch REPL unterbrochen")
它会扫描可用的 WLAN(在工作站模式下),并使用 HTML 在接入点模式下设置 Web 服务器 (http://192.168.4.1)。
我希望获得有关如何编写脚本(JavaScript)的一些帮助,这对于...... ...将用户输入(所选 WiFi 的 ID 和密码)传回 ESP32,以便我可以使用 socket.receive() 或类似的东西接收它。 ...确保按下“bestätigen”按钮时选择单选按钮 (WLAN)。 预先感谢您对我的项目的帮助和想法。
Vielleicht versucht mal mit und href