打印
[STM32F1]

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

[复制链接]
楼主: 无法去污粉
手机看帖
扫描二维码
随时随地手机跟帖
41
无法去污粉|  楼主 | 2022-5-29 16:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
5.2.7.服务器发布消息


使用特权

评论回复
42
无法去污粉|  楼主 | 2022-5-29 16:14 | 只看该作者
当服务器发布消息的时候,会进入此函数,对数据进行解析数据,数据格式为json格式,如代码所示。
u8 MQTT_Publish(unsigned char* data,int len)
{
        int buflen = sizeof(buf);
        int rc = 0;
        unsigned char dup;
        int qos;
        unsigned char retained = 0;
        unsigned short msgid = 1;
        int payloadlen_in;
        unsigned char* payload_in;
        MQTTString receivedTopic;
               
        cJSON *json , *json_params, *json_id, *json_led, *json_display;
       
        memcpy(buf,data,len);
       
        rc = MQTTDeserialize_publish(&dup, &qos, &retained, &msgid, &receivedTopic,&payload_in, &payloadlen_in, (unsigned char*)buf, buflen);        //服务器有推送信息
        printf("message arrived : %s\r\n", payload_in);
       
        json = cJSON_Parse((char *)payload_in);                        //解析数据包
        if (!json)  
        {  
                printf("Error before: [%s]\r\n",cJSON_GetErrorPtr());  
        }
        else
        {
                json_id = cJSON_GetObjectItem(json , "id");
                if(json_id->type == cJSON_String)
                {
                        printf("id:%s\r\n", json_id->valuestring);  
                }
                json_params = cJSON_GetObjectItem(json , "params");  
                if(json_params)  
                {  
                        if(cJSON_GetObjectItem(json_params, "LED0"))
                        {
                                json_led  = cJSON_GetObjectItem(json_params, "LED0");
                                if(json_led->type == cJSON_Number)
                                {
                                        printf("LED:%d\r\n", json_led->valueint);  
                                        if(json_led->valueint == 1)
                                        {
                                                LED0 = 0;
                                        }
                                        else
                                        {
                                                LED0 = 1;
                                        }                       
                                }
                        }
                        if(cJSON_GetObjectItem(json_params, "display"))
                        {
                                json_display = cJSON_GetObjectItem(json_params, "display");
                                if (json_display->type == cJSON_String)  
                                {  
                                        //暂不处理
                                }  
                        }
                }
        }
        cJSON_Delete(json);
       
        return TRUE;
}

使用特权

评论回复
43
无法去污粉|  楼主 | 2022-5-29 16:15 | 只看该作者
5.2.8.轮询,读MQTT返回数据类型


使用特权

评论回复
44
无法去污粉|  楼主 | 2022-5-29 16:16 | 只看该作者
5.2.9.向服务器发送dht12温湿度传感器的数据


使用特权

评论回复
45
无法去污粉|  楼主 | 2022-5-29 16:17 | 只看该作者
注释:由于本设计使用了ESP8266来联网,ESP8266联网部分代码就不再过多解释,可参考相关的例子进行。

使用特权

评论回复
46
无法去污粉|  楼主 | 2022-5-29 16:17 | 只看该作者
6.连接信息


使用特权

评论回复
47
无法去污粉|  楼主 | 2022-5-29 16:19 | 只看该作者
注释:串口通信这块使用串口DMA的方式,开启串口DMA中断收发的方式,同时使用了freertos操作系统。

使用特权

评论回复
48
无法去污粉|  楼主 | 2022-5-29 16:20 | 只看该作者
7.实物图

使用特权

评论回复
49
无法去污粉|  楼主 | 2022-5-29 16:21 | 只看该作者

使用特权

评论回复
50
gygp| | 2022-6-6 13:03 | 只看该作者
stm32可以接收并保存从esp8266传输过来的的文件吗?

使用特权

评论回复
51
51xlf| | 2022-6-7 12:19 | 只看该作者
stm32+esp8266怎么将数据传给云平台

使用特权

评论回复
52
hellosdc| | 2022-6-7 15:55 | 只看该作者
esp8266 ap模初始化  

使用特权

评论回复
53
selongli| | 2022-6-7 16:41 | 只看该作者
WIFI模块怎么通过STM32自组网

使用特权

评论回复
54
cehuafan| | 2022-6-7 17:48 | 只看该作者
STM32+ESP8266怎样使用TCP

使用特权

评论回复
55
mickit| | 2022-6-20 19:13 | 只看该作者
stm32和esp8266 功耗多少?

使用特权

评论回复
56
skyred| | 2022-6-20 20:40 | 只看该作者
8266怎么烧写的固件?

使用特权

评论回复
57
touser| | 2022-6-22 21:45 | 只看该作者
和esp8266连接完成mqtt协议通信

使用特权

评论回复
58
quickman| | 2022-6-24 09:33 | 只看该作者
ESP8266如何配置

使用特权

评论回复
59
macpherson| | 2022-6-24 12:43 | 只看该作者
stm32收不到阿里云ping包回复

使用特权

评论回复
60
mmbs| | 2022-6-24 14:27 | 只看该作者
ESP8266如何实现与服务器的TCP通讯

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则