我正在使用ESP8266 SDK 1.5.2并试图让智能配置与Android应用程序一起使用。使用智能配置,我可以传输ESP8266应连接的接入点的SSID和密码。
我正在使用SDK 1.5.2 documentation page 108/109中的示例代码。
void ICACHE_FLASH_ATTR smartconfig_done(sc_status status, void *pdata)
{
switch (status) {
case SC_STATUS_WAIT:
os_printf("SC_STATUS_WAIT\n");
break;
case SC_STATUS_FIND_CHANNEL:
os_printf("SC_STATUS_FIND_CHANNEL\n");
break;
case SC_STATUS_GETTING_SSID_PSWD:
os_printf("SC_STATUS_GETTING_SSID_PSWD\n");
sc_type *type = pdata;
if (*type == SC_TYPE_ESPTOUCH) {
os_printf("SC_TYPE:SC_TYPE_ESPTOUCH\n");
}
else {
os_printf("SC_TYPE:SC_TYPE_AIRKISS\n");
}
break;
case SC_STATUS_LINK:
os_printf("SC_STATUS_LINK\n");
struct station_config *sta_conf = pdata;
wifi_station_set_config(sta_conf);
wifi_station_disconnect();
wifi_station_connect();
break;
case SC_STATUS_LINK_OVER:
os_printf("SC_STATUS_LINK_OVER\n");
if (pdata != NULL) {
uint8 phone_ip[4] = { 0 };
memcpy(phone_ip, (uint8*)pdata, 4);
os_printf("Phone ip: %d.%d.%d.%d\n",phone_ip[0],phone_ip[1],phone_ip[2],phone_ip[3]);
}
smartconfig_stop();
break;
}
}
在我打电话之前
smartconfig_start(smartconfig_done);
我从电台断开连接并将ESP8266设置为电台模式:
wifi_station_disconnect();
wifi_set_opmode_current(STATION_MODE);
启动智能配置后,将调用状态为SC_STATUS_FIND_CHANNEL的回调。然后我尝试通过以下androig应用程序进行连接:
使用ESP Smart Config和ESP8266 SmartConfig不会发生任何事情。我的smartconfig_done回调永远不会再次调用。
使用IOT_Espressif我会调用状态SC_STATUS_GETTING_SSID_PSWD并且日志告诉我使用了ESP-Touch协议以及将使用哪个电话MAC和哪个接入点MAC。但是我不会通过状态SC_STATUS_LINK和SC_STATUS_LINK_OVER来调用。
anyboby有没有SmartConfig 2.5.3在SDK 1.5.2中使用Android应用程序?
或者ESP-Touch协议应该用于SmartConfig 2.5.3所描述的地方吗?
可以找到IOT_Espressif的源代码here。并且找到了演示ESP-Touch android应用程序的源代码here。在演示应用程序中,它写道它只适用于SmartConfig 2.4。
SmartConfig 2.4和2.5.3之间可能发生了一些变化。但是改变了什么?