串口调试助手的结果图如下
onenet上连接结果如下
main.c 函数核心代码如下
步骤
①先初始化mqtt ②connect mqtt ③publish
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "uart1.h"
#include "dht11.h"
#include "esp8266.h"
#include "onenet.h"
int main(void)
{
HAL_Init(); /* 初始化HAL库 */
stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
led_init();
uart1_init(115200);
esp8266_init(115200);
printf("hello world!\r\n");
printf("MQTT初始化...\r\n");
mqtt_init();
printf("MQTT连接...\r\n");
mqtt_connect(MQTT_ClientID,MQTT_UserName,MQTT_PassWord); //第一个参数为客户端标识符(设备名) 第二个参数为用户名(产品名) 第三个参数为密码(token)
uint8_t data_send[512] = {0};
uint8_t dht11_data[4] = {0};
while(1)
{
memset(dht11_data,0,4);
dht11_read(dht11_data);
sprintf((char *)data_send,"{\"id\":\"1386772172\",\"version\":\"1.0\",\"params\":{\"CurrentTemperature\":{\"value\":%d.%d},\"CurrentHumidity\":{\"value\":%d.%d}}}",dht11_data[2],dht11_data[3],dht11_data[0],dht11_data[1]);
mqtt_publish_data(POST_TOPIC,(char *)data_send,0);
delay_ms(3000);
printf("\r\n ^^^^^^^^^^^^^^^^^^^^发送心跳包^^^^^^^^^^^^^^^^^^^^\r\n");
mqtt_send_heart();
printf("\r\n ^^^^^^^^^^^^^^^^^^^^发送心跳包结束^^^^^^^^^^^^^^^^^^^^\r\n");
}
}
主要更改的代码部分时宏函数
①onenet.h 的宏函数更改
②esp8266.h宏函数定义