AT

esp8266 AT指令 MQTT连接问题

发布于 2018-08-26 10:58:46
    本帖最后由 loock 于 2018-8-26 11:01 编辑


本人大学僧一枚,第一次用rtthread。
我用esp8266+MQTT连接服务器,出现了点问题,请大佬指点一下

已经做的工作:
1、配置AT-device,根据应用笔记配置,AT client能够正常运行,https://www.rt-thread.org/docume ... d-system-at-client/
2、参考github文档(https://github.com/RT-Thread-packages/at_device
文档内容如下:
AT device 软件包是对 AT 组件库和 AT socket 功能的移植,需开启 AT 组件库和 AT socket 功能来获取 AT device 软件包。

先要开启 AT 组件库和 AT socket 功能, 具体路径如下所示:

RT-Thread Components --->
Network stack --->
Socket abstraction layer --->
protocol family type --->
[ ] Support lwIP stack
(*) Support AT Commands stack

开启 AT socket 功能之后,默认开启 AT device 软件包, 具体路径如下所示:

RT-Thread online packages --->
IoT - internet of things --->
-*- AT DEVICE: RT-Thread AT component porting or samples for different device
AT socket device modules (Not selected, please select) --->
Version (latest) --->
AT socket device modules: AT 设备选择,目前支持 ESP8266、M26/MC20 等设备;
Version: 下载软件包版本;

参考文档没有找到【 Support AT Commands stack】配置选项,不知道是不是这个问题。
在第二部分中已经选择ESP8266.


2、配置mqtt,并选择例程
        --- Paho MQTT: Eclipse Paho MQTT C/C++ client for Embedded platforms  
│ │ MQTT mode (Pipe mode: high performance and depends on DFS) --->
│ │ [ ] Enable MQTT example
│ │ (*) Enable MQTT test
│ │ [ ] Enable support tls protocol
│ │ (4096) Set MQTT thread stack size
│ │ (1) Max pahomqtt subscribe topic handlers
│ │ [ ] Enable debug log output
│ │ version (latest) --->


3、在main中启动AT_Client
#include 
#include
int main(void)
{
/* user app entry */
at_client_init();

return 0;
}



4、目前AT-client能够正常运行,并能通过TCP连接到服务器端口
msh />at client
======== Welcome to using RT-Thread AT command client cli ========
Cli will forward your command to server port(uart2). Press 'ESC' to exit.
AT+CIPSTART="TCP","115.159.62.111",1883
AT+CIPSTART="TCP","115.159.62.111",1883
CONNECT

OK


5、mqtt例程不能正常运行
msh />mqtt_test start
[D/MQTT] ipv4 address port: 1883
[D/MQTT] HOST = '115.159.62.111'
[E/MQTT] getaddrinfo err: -1 '115.159.62.111'
[E/MQTT] resolve uri err
[E/MQTT] Net connect error(-1)

Waiting mqtt is connected!
[D/MQTT] restart!
[D/MQTT] ipv4 address port: 1883
[D/MQTT] HOST = '115.159.62.111'
[E/MQTT] getaddrinfo err: -1 '115.159.62.111'
[E/MQTT] resolve uri err
[E/MQTT] Net connect error(-1)
Waiting mqtt is connected!
例程mqtt_test.c中我只是改改了clientid和passward,还有ip
#define MQTT_TEST_SERVER_URI    "tcp://115.159.62.111:1883"
#define MQTT_CLIENTID 。。。
#define MQTT_USERNAME 。。。
#define MQTT_PASSWORD 。。。
#define MQTT_SUBTOPIC "/mqtt/test"
#define MQTT_PUBTOPIC "/mqtt/test"
#define MQTT_WILLMSG "Goodbye!"
#define MQTT_TEST_QOS 1
#define MQTT_PUB_SUB_BUF_SIZE 1024

#define CMD_INFO "'mqtt_test '"
#define TEST_DATA_SIZE 256
#define PUB_CYCLE_TM 1000

static rt_thread_t pub_thread_tid = RT_NULL;

static char *pub_data = RT_NULL;
mqtt错误显示获取add是出错,个人认为是mqtt软件包个AT通信的问题,请大佬指点一下。

查看更多

关注者
0
被浏览
4.2k
4 个回答
Cheney_Chen
Cheney_Chen 2018-08-26
  1. AT Socket 功能开启在 AT 组件下的 Provide similar BSD Socket API by AT 选项,具体配置流程可以参考官网 AT Client 应用笔记,

    2.详细查看完应用笔记,确定配置正确,设备能够连接网络 at_ping 能够成功运行之后,接着再继续下面 MQTT 连接操作

    3.上面显示 MQTT 连接的问题是域名解析不正确导致的,你可以先使用默认的网站连接 MQTT 试试,确定域名解析是否有问题,如果成功再改为自己的网站测试。
loock
loock 2018-08-26
Cheney_Chen 发表于 2018-8-26 12:31
[md] 1. AT Socket 功能开启在 AT 组件下的 ` Provide similar BSD Socket API by AT ` 选项,具体配置流程 ...


好了,果然是wocket问题。我之前以为哪个socket和mqtt没关系,所以就没配。多谢大佬
郝焓博
郝焓博 2018-08-28
楼主,把代码贴出来借鉴一下呗
loock
loock 2018-09-03
郝焓博 发表于 2018-8-28 15:24
楼主,把代码贴出来借鉴一下呗


全是ENV生成的示例代码,在mqtt里面选择示例就可以了。在帖子里【2、配置mqtt,并选择例程】有选择例程说明

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友