篮之新喜 发表于 2024-9-26 02:41:52

MQTT客户端(基于mosquitto)上报温度到腾讯云 ——DS18B20发布订阅温度(L

目次
一、创建产物
二、创建立备
三、获取MQTT连接信息
四、消息主体
五、连接腾讯云
六、完备代码
回顾记录
一、创建产物

1、进入腾讯云官网,登陆或注册账号后,点击进入“控制台”
https://i-blog.csdnimg.cn/blog_migrate/435ce9885ce043cd5f699214c3f9b81d.png
 2、进入控制台后点击左上角的“云产物” ,找到“物联网通信”
https://i-blog.csdnimg.cn/blog_migrate/8041cb52e20cfda21a0484101f56df3b.png
3、点击公共实例中的“查看详情”(假如是第一次使用,可能页面会跟下面的不太一样)
https://i-blog.csdnimg.cn/blog_migrate/f8af1e1075f957f2ac3d260b67f6be4d.png
4、点击“创建产物”
https://i-blog.csdnimg.cn/blog_migrate/179f86417de5fef5e130dcea42587a81.png 5、这里只需填上产物名就行了,同时选择“密钥认证”
https://i-blog.csdnimg.cn/blog_migrate/0601a362870fbbe93ff734502cf745cb.png
二、创建立备

 1、进入“管理”https://i-blog.csdnimg.cn/blog_migrate/896855707954684ee10e68abd9ac5601.png
 2、添加设备 
https://i-blog.csdnimg.cn/blog_migrate/acbb04391294b77f8dc7ff7fc770a32b.png
https://i-blog.csdnimg.cn/blog_migrate/92575885a9b46fbb99758d4dbffc4c33.png
https://i-blog.csdnimg.cn/blog_migrate/d307dfb3a76071e1dc3556b52f3e2951.png
三、获取MQTT连接信息

将方框里的信息生存在txt文件中,方便后面操纵
这里还缺“topic”、服务器地址、端口,继续往下走
https://i-blog.csdnimg.cn/blog_migrate/d594e004e9406afe2e3ebcfc35fb3e94.png
 1、选择“topic”
https://i-blog.csdnimg.cn/blog_migrate/691906baefaaaae200cbfb3f36ff39d6.png
 2、在右上角物联网通信资助文档中有服务器地址选择,文档链接:
物联网通信 设备接入地区阐明-开发者手册-文档中心-腾讯云
https://i-blog.csdnimg.cn/blog_migrate/5e5c2b1d8b90ba64358cf7ac3f3d3d6c.png
 3、在上面的文档中找到我们所需要的端口,密钥认证的选择“1883”https://i-blog.csdnimg.cn/blog_migrate/4fdcf540f43ea1d347b00362640f56f2.png
有了这些信息,我们的 MQTT 客户端已经可以连接上腾讯云,激活设备了,但要想腾讯云正确分析我们上报的消息还需要了解消息主体格式 
四、消息主体

先了解一下设备影子文件,资助文档“设备影子详情”:https://cloud.tencent.com/document/product/634/11918。设备影子文档是服务器端为设备缓存的一份状态和配置数据。
如下图,左边部门就是我们可以配置的设备文档,可以向其中添加设备状态,desired 是期待的设备状态,reported 是设备上报的状态。现在准备向设备文档中添加 temperature 属性来记录设备上报的温度,每次上报都会更新该文档。
https://i-blog.csdnimg.cn/blog_migrate/bceae5bbcbe47f46f0140c3b50c00d5f.png
 根据资助文档“设备影子数据流”:https://cloud.tencent.com/document/product/634/14072
消息的主题格式如下
{
        "type": "update",
        "state": {
                "reported": {
                        "temperature": 27.836
                }
        },
        "version": 0,
        "clientToken": "clientToken"
}
version为0表示不验证设备消息的中version是否与设备中的version一致;clientToken是用来标识这个消息会话的id,可以由我们自己设为任意值。
五、连接腾讯云

char    *hostname = "xxxxx.iotcloud.tencentdevices.com";
char    *topic = "$shadow/operation/xxxxxx/TGT-DS18B20-1";
char    *clientId = "xxxxxxxx";
char    *username = "xxxxxxx1xxxxxx8";
char    *password = "2xxxxxx9522dbc05bxxxxxxxha2xxxxxxx";
int   port = 1883;
char        *payload = "{\"type\": \"update\",\"state\": {\"reported\": {\"temperature\": %.2f}},\"version\": 1,   
    \"clientToken\": \"clientToken\"}";

mosq = mosquitto_new(clientId, ture, NULL);
mosquitto_username_pw_set(mosq, username, password);
mosquitto_connect(mosq, serv_ip, port, 60);//serv_ip是经过hostname的DNS解析所得
mosquitto_publish(mosq, NULL, topic, strlen(payload)+1, payload, 0, 0);


//上面的xxxxx 用自己的MQTT参数替换上去

https://i-blog.csdnimg.cn/blog_migrate/939dbfd2366c2f723ddfe047e89d2841.png
数据上报成功
https://i-blog.csdnimg.cn/blog_migrate/2850b09761d7822a285c63932257d700.png
六、完备代码

【下方请留言,私聊给】

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: MQTT客户端(基于mosquitto)上报温度到腾讯云 ——DS18B20发布订阅温度(L