ESP8266 Micropython - 连接大学Wi-Fi(WPA2 Enterprise PEAP)

时间:2017-01-09 16:28:42

标签: python iot esp8266 arduino-esp8266 micropython

我有一块带有ESP8266芯片的电路板,运行Micropython固件v1.8.7。我的要求是通过大学Wi-Fi使用WebREPL,它使用WPA2 Enterprise EAP-MSCHAPv2身份验证。到目前为止,我的Google-fu告诉我,Arduino用户已经能够连接到WPA2 Enterprise EAP-TLS(基于证书的身份验证)(link),但不能连接到(SSID,用户名,密码)网络。

我到目前为止看到的关于这个主题的所有主题似乎都是从2016年中期开始的,所以我想知道是否有人能够从那时起弄清楚如何做到这一点。我之前从未涉足网络相关的东西(我也不是一个优秀的程序员),所以上面所有的大词对我来说都是新的。因此,我有以下问题:

  1. 这仅仅是ESP8266的固有限制吗?还是可以做到的? This discussion似乎表明可以完成,但需要对功能进行编码。
  2. 是否有可能以某种方式从WPA2企业分支出WPA2个人连接,可以被ESP8266和我的PC使用?到目前为止我尝试过尝试使用Connectify的热点,但那里没有运气。
  3. 我感谢你们提供的任何帮助。如果有任何我没有提供的相关信息,请告诉我,我会在其中进行编辑。

    编辑:@MaximilianGerhardt这对我来说对WPA2个人有用:

    import network
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.connect('ssid','pwd')
    wlan.ifconfig()
    
    import webrepl
    webrepl.start()
    

    在WPA2企业版上,我曾希望改变这一行是可行的,但没有乐趣:

    wlan.connect('ssid',auth=WPA2_ENT,'user','pwd')
    

    谢谢,我会查看Espressif Non-OS SDK V2.0.0,看看我是否可以使它工作。

1 个答案:

答案 0 :(得分:3)

正如我在评论中所链接的那样,问题显然已在最新的2.0 Espressif SDK中得到解决。但是既然你没有使用Espressif C SDK,而是使用python“Micropython”固件,这个改变还没有传播到这个python固件中。

您可以在此处的固件中查看网络功能(active()connect()ifconfig()等)的映射:https://github.com/micropython/micropython/blob/master/esp8266/modnetwork.c#L430。在第115行,您还可以看到wifi_station_connect()的调用,这是一个原生的Espressif-SDK函数。因此,您将看到,固件尚未使用WPA2身份验证的新功能。在line 490中,您可以看到所有可用的身份验证选项:

MP_OBJ_NEW_SMALL_INT(AUTH_OPEN) ,
MP_OBJ_NEW_SMALL_INT(AUTH_WEP) ,
MP_OBJ_NEW_SMALL_INT(AUTH_WPA_PSK) ,
MP_OBJ_NEW_SMALL_INT(AUTH_WPA2_PSK) ,
MP_OBJ_NEW_SMALL_INT(AUTH_WPA_WPA2_PSK)

WPA2企业身份验证还不是其中之一。

所以现在我说你的选择是:

  1. 打开一个github问题https://github.com/micropython/micropython/,要求他们为ESP8266实施WPA2身份验证
  2. 从Espressif切换到C SDK