如何从esp32 Micropython html网络服务器获取数据?

问题描述 投票:0回答:1

我是 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)。 it looks like this

我希望获得有关如何编写脚本(JavaScript)的一些帮助,这对于...... ...将用户输入(所选 WiFi 的 ID 和密码)传回 ESP32,以便我可以使用 socket.receive() 或类似的东西接收它。 ...确保按下“bestätigen”按钮时选择单选按钮 (WLAN)。 预先感谢您对我的项目的帮助和想法。

javascript html esp32 micropython
1个回答
0
投票

Vielleicht versucht mal mit und href

© www.soinside.com 2019 - 2024. All rights reserved.