查看: 1754|回复: 0

[原创] [经验分享]mqtt上传数据

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20002
最后登录
2024-4-24
发表于 2020-9-2 10:06:16 | 显示全部楼层 |阅读模式
利用华为云,mqtt协议来上传一些数据。使用的例程是FRDM_K64的lwip_mqtt例程
关键点,一方面要在华为云创建设备,获得准备用来通信的数据,另一方面则是组织需要传递的topic,还有就是将需要传递的数据,使用json来表示
在华为云申请完设别以后可以获得名字和密码,client id还有主机服务器地址,在lwip_mqtt_freertos.c文件里宏定义这些参数
1.1.PNG
同时需要为这个设备添加属性,这样我们就可以往这个属性写值。我们添加一个adc_value的属性,创建设备,添加属性华为云都有说明文档不再赘述。
1.PNG
查阅华为云文档可以知道,如果要写数据进去,就要使用如下数据格式,topic要report这json字符串
5.PNG
我们要传递的json格式应该长这样,event_time可以不用改值,因为我们这个mqtt并不需要时间校验。
       {
              "services":[{
              "service_id":"adc_value",
                  "properties":{
                  "adc_value": 57
              },
              "event_time":"2020081013"
        }
      

       }
于是我们的代码,将这段字符分成三部分,adc值为一部分,adc值之前和之后各一部分,adc获得数据以后,拼接这三部分
1.3.PNG
然后根据查阅的文档,定义report这个topic
1.4.PNG
在publish_message函数里,使用mqtt_publish来上报数据。

mqtt_publish(mqtt_client, topic, message,strlen(message), 1, 0, mqtt_message_published_cb, (void *)topic);
结果如图
串口打印
3.PNG
页面结果
2.PNG
如果值没更新,华为云有消息日志可以查看消息到底是否成功发送
4.PNG


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-24 13:09 , Processed in 0.111560 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表