本帖最后由 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通信的问题,请大佬指点一下。
查看更多