这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» STM32» STM32G070RB探测37-MQTT协议剖析3PUBLISH②

共11条 1/2 1 2 跳转至

STM32G070RB探测37-MQTT协议剖析3PUBLISH②

高工
2021-05-30 01:39:45 打赏
publish协议已经解析完了,这篇写程序,实际单片机应用中很多都不用心跳,因为心跳的作用就是告诉服务器自己没有死,实际单片机应用中隔一段时间上报一次,起到一样的作用,所以很多都不用心跳,这篇依然使用onenet之前写好的库。依然是上次的文件中

写法应该跟CONNECE差不多,大概就是下边这样

void OneNet_Publish(const char *topic, const char *msg) { MQTT_PACKET_STRUCTURE mqttPacket = {NULL, 0, 0, 0}; UsartPrintf("Publish Topic: %s, Msg: %s\r\n", topic, msg); if(MQTT_PacketPublish(MQTT_PUBLISH_ID, topic, msg, strlen(msg), MQTT_QOS_LEVEL0, 0, 1, &mqttPacket) == 0) { ESP8266_SendData(mqttPacket._data, mqttPacket._len); MQTT_DeleteBuffer(&mqttPacket); } }

其中 topic就是发送的主题,msg就是所要上传的信息

主题可以直接定义好,类似下边

const char devPubTopic[] = "$sys/407529/G0701/dp/post/json";

msg跟之前的POST一样,是json数据,这里依然使用字符串拼接的方法。

void OneNet_FillBuf(char *buf) { char buf1[64]; memset(buf1, 0, sizeof(buf1)); sprintf(buf1, "{\"id\":123,\"dp\":{\"tem\":[{\"v\":%.1f,}],",pv.tem); strcat(buf, buf1); memset(buf1, 0, sizeof(buf1)); sprintf(buf1, "\"hum\":[{\"v\":%d,}],",pv.hum); strcat(buf, buf1); memset(buf1, 0, sizeof(buf1)); sprintf(buf1, "\"lux\":[{\"v\":%d,}]}}",pv.lux_16); strcat(buf, buf1); }

下边就是把程序整合起来

while (1) { if(time6_count1>10) { time6_count1 = 0; AHT10ReadData(&pv.tem,&pv.hum); BH1750_Read_Dat(pv.lux);//读取数据 pv.lux_16 = BH1750_Dat_To_Lux(pv.lux);//转换数据 printf("lux:%d\r\n",pv.lux_16); printf("tem:%.1f\r\nhum:%d%%\r\n",pv.tem,pv.hum); BH1750_Send_Cmd(ONCE_H_MODE);//单次模式 sprintf(buf,"tem:%.1f",pv.tem); OLED_P8x16Str(0u,4u,(uint8_t *)buf); sprintf(buf,"hum:%d%%",pv.hum); OLED_P8x16Str(64u,4u,(uint8_t *)buf); sprintf(buf,"lux:%d ",pv.lux_16); OLED_P8x16Str(0u,6u,(uint8_t *)buf); } if(time6_count>120) { time6_count = 0; memset(PUB_BUF, 0, sizeof(PUB_BUF)); OneNet_FillBuf(PUB_BUF); printf("PUB_BUF:%s\r\n",PUB_BUF); OneNet_Publish(devPubTopic, PUB_BUF); } }

5s中采集一次并刷新一次OLED屏幕,然后一分钟上传一次



专家
2021-05-30 07:26:22 打赏
2楼

学习


高工
2021-05-30 11:32:50 打赏
3楼

Very Nice


助工
2021-05-30 15:33:17 打赏
4楼

q


高工
2021-05-30 23:46:43 打赏
5楼

代码写的非常简单


专家
2021-05-31 00:03:06 打赏
6楼

感谢楼主的分享,很实用了。


工程师
2021-05-31 00:11:32 打赏
7楼

感谢楼主的分享,很实用了。


专家
2021-05-31 06:28:50 打赏
8楼
谢谢分享!



工程师
2021-06-12 23:59:32 打赏
9楼

代码写的蛮不错的


高工
2021-07-08 22:04:27 打赏
10楼

谢谢分享


共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]