当前的AT框架好像没有支持开启TCP SERVER。
我想问一下,用ESP8266作为网卡设备的话,怎么进行模块的SSID和PWD的配置,有没有好的建议。
我通过大幅度修改底层的方法, 做到了一种ESP8266的配网方法, 很简陋, 只适用于同时最多一个APP为设备配网的情况, 发出来求大佬指导.
首先修改at_socket_esp8266.c
中的esp8266_init_thread_entry
函数, 添加代码
使得ESP8266创建WIFI, 并且创建AP服务器
其次,修改rt-thread/components/net/at/at_socket/at_socket.c文件中的alloc_socket_by_device函数, 修改代码
将idx=0改为idx=1的目的是, 为前面使用AT命令创建的AP服务器留出一个连接号,这样通过RT-thread的其他网络功能(例如:MQTT,NTP等等)通信时, 不会去使用 0号连接, 不会有影响. 当然, 此处很简陋很生涩, 求各位对协议更了解的大佬帮忙.
最后, 修改at_socket_esp8266.c中的urc_recv_func函数, 在函数的最后添加代码
代码的作用是, 在收到+IPD的通信之后, 去解析是否存在一定格式的WIFI配网的SSID和PSWD数据, 如果解析成功,则调用设备的重新联网的控制字, 去联网
我设置的格式是,
, 其他格式请自行修改ssanf函数或者添加其他制约条件, 也可以自行添加固化代码.
小弟我乱七八糟一通修改, 目前勉强能用, 求各位大佬斧正.
你好,首先修改at_socket_esp8266.c中的esp8266_init_thread_entry函数, 添加代码 这里是添加吗?应该是修改吧?还少了配置为AP吧? 设置好WIFI之后用手机连接这个WIFI? 192.168.4.1 打不开,怎么把SSID和密码发送给WIFI模块?
我修改了esp8266_init_thread_entry,修改的内容是,添加了代码,添加的代码是创建ap server的at命令。
还有,ap server,是tcp server,不是web server,你打不开这个IP,只能对你设置的ap server的IP和端口建立tcp链接。
关于配网,你建立ap和ap server之后,就可以用手机版的tcp client APP,连接到esp8266的ap热点,再建立tcp链接,再通过tcp把你要配网的ssid和pswd发给ap server,通过解析之后,调用库里原有的联网函数去配置esp8266联网。
解析函数需要自己写,可以参考urc。
还有另外一个思路,给esp烧录最新版的固件,在-初始化函数里面,添加对联网状态的判断,如果联网失败,则开启smartconfig,具体的at命令自行百度,然后你就可以用esp touch APP来配网了。