Linux C MQTT上报温度到腾讯云(基于mosquitto库)

一、创建产品

1.进入腾讯云官网,登陆或注册账号

2.进入控制台

3.鼠标滑到云产品,进入物联设备服务中的物联网通信

4.点击创建新产品,现在我们来创建一个上报温度产品

5.产品创建信息如下,点击确定

二、创建设备

1.我们已经创建好了一个产品,如下,现在来创建设备。(设备是产品的实例,一个产品下可以有多个设备。)

2.进入产品页面后点击设备列表,此时该产品下还没有任何设备,点击添加新设备,我们来创建一个设备来实现温度上报的功能

3.设备创建信息如下,点击保存,点击开始管理设备

三、获取MQTT连接信息

1.设备已经创建好了,现在我们收集一下MQTT连接腾讯云的信息。将红线框住的信息保存在txt文件中。

2.现在我们已经知道了Client ID、MQTT Username和MQTT Password还需要知道腾讯云MQTT服务端口、服务器地址、消息通信的topic。在Topic列表中选择图中的topic(选择这个topic的原因有关设备影子,下面会解释)同样保存到刚才的txt文件中

3.在右上角物联网通信帮助文档中有服务器地址选择,文档链接:https://cloud.tencent.com/document/product/634/61228,将替换后的地址:FQ87P6RD9P.iotcloud.tencentdevices.com保存在刚才的txt文件中

4.同样根据腾讯云提供的文档:https://cloud.tencent.com/document/product/634/32546,由于我们创建产品时选择的是密钥认证,故连接端口应为1883,将端口保存在刚才的txt文件中

5.现在我们txt文件中的内容如下,有了这些信息,我们的MQTT客户端已经可以连接上腾讯云,激活设备了,但要想腾讯云正确解析我们上报的消息还需要了解消息主体格式。

四、消息主体

先了解一下设备影子文件,帮助文档“设备影子详情”:https://cloud.tencent.com/document/product/634/11918。设备影子文档是服务器端为设备缓存的一份状态和配置数据。

1.如下图,左边部分就是我们可以配置的设备文档,可以向其中添加设备状态,desired是期待的设备状态,reported是设备上报的状态。现在预备向设备文档中添加temperature属性来记录设备上报的温度,每次上报都会更新该文档。

现在文档版本是0,每次更新该文档版本都会自增1。

2.更改后的设备影子文档如下

3.根据帮助文档“设备影子数据流”:https://cloud.tencent.com/document/product/634/14072

我们可以知道,如果要将temperature属性值由初设的21.5更改为10,则消息主体应该如下

{"type": "update","state": {"reported": {"temperature": 27}},"version": 1,"clientToken": "clientToken"
}

clientToken是用来标识这个消息会话的id,可以由我们自己设为任意值。

五、连接腾讯云

现在我们在Linux下运行我们的C程序客户端来修改设备影子文件。

1.这里展示MQTT客户端相关登录数据传递和消息上报的Linux C代码

char    *hostname = "FQ87P6RD9P.iotcloud.tencentdevices.com";
char    *topic = "$shadow/operation/FQ87P6RD9P/TGT-DS18B20-1";
char    *clientId = "FQ87P6RD9PTGT-DS18B20-1";
char    *username = "FQ87P6RD9PTGT-DS18B20-1;12010126;BEWMO;1677010298";
char    *password = "259854990dbf546fbf48d57841b5f1a6b4d759511b39522dbc05b7cfb87e45bb;hmacsha256";
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);


查看设备影子文件,temperature的值已修改成功,版本自增1证明温度上报已成功

注意:当设备影子服务端收到此消息时,首先判断消息中的 version 是否与设备影子服务端中的 version 一致。如果一致,设备影子服务端才会执行更新设备影子流程。

MQTT客户端(基于mosquitto库)上报温度到腾讯云相关推荐

  1. MQTT客户端(基于mosquitto库)上报温度到阿里云

    Linux C MQTT客户端上报温度到阿里云 一.创建产品 1.进入阿里云官方页面,右上角点击登陆或注册阿里云账号 2.登录阿里云账号后点击右上角进入控制台 3.鼠标移到左上角展开导航 4.进入在物 ...

  2. 【MQTT】使用MQTT.fx上报温度到腾讯云

    1.打开腾讯云官网,注册并登录. 2.登录之后点击右上角的控制台点进去 3.在搜索框[物联网通信],点击进入 4.点击创建新产品 5.选择普通产品,名称随便,选择密钥认证,选择json格式 6.在设备 ...

  3. MQTT客户端(基于mosquitto)上报温度到华为云 ——DS18B20发布订阅温度(Linux C编程)

    目录 一.创建产品 二.创建产品功能 三.创建设备 四.获取MQTT连接参数 五.消息主体 六.连接华为云 七.完整代码 回顾记录 一.创建产品 1.进入华为云官网,注册或登录后,点击右上角的&quo ...

  4. python jieba库分词_Python基于jieba库进行简单分词及词云功能实现方法

    本文实例讲述了Python基于jieba库进行简单分词及词云功能实现方法.分享给大家供大家参考,具体如下: 目标: 1.导入一个文本文件 2.使用jieba对文本进行分词 3.使用wordcloud包 ...

  5. 【MQTT】基于mosquitto的学习和使用

    文章目录 前言 一.MQTT简介 MQTT特性 MQTT协议原理 MQTT协议数据包结构 二.安装MQTT 1.mosquitto简介 2.安装mosquitto库 2.常用MQTT库函数 三.代码实 ...

  6. 初识 MQTT (基于 mosquitto)

    目录 一.什么是MQTT 二.MQTT 的主要特性 1)MQTT 的消息类型(Message Type) 2)消息质量(QoS) 3)遗愿标志(Will Flags) 4)连接保活心跳机制(Keep ...

  7. 短信平台专业版软件客户端功能详解源码搭建|移讯云短信系统

    国际短信平台专业版软件客户端功能详解|移讯云短信系统 首页显示 剩余条数 充值总数 提交总数 成功数量 失败数量 未知数量 代发数量 签名数量 最新提交 平台公告 API接口文档 短信发送 发送短信选 ...

  8. phpcms视频库第三方托管-接入腾讯云点播

    phpcms视频库KU6改为优酷简单上传 phpcms已经不再更新,酷6网也已经相当于废了,想使用phpcms原本的视频功能,只能进行二次开发.本人在开发了优酷云视频的托管的基础上,继续开发了腾讯云点 ...

  9. Android Studio实现MQTT客户端

    初学Android Studio,在实现MQTT客户端的过程中遇到了很多坑,而在查阅博文的时候发现各个博文能提供的解决方法很零碎,我也是结合了诸多博文才最终解决了问题,于是打算做一个小总结 我用的版本 ...

最新文章

  1. python local函数_python中的函数
  2. loadrunner中错误为27796的一个解决方法
  3. mysql索引检测_mysql检测重复索引
  4. Satori变种正在通过替换钱包地址盗取ETH数字代币
  5. RF无线电射频接口静电保护方案图
  6. line-height:1.5和line-height:150%的区别
  7. python异常处理输入不是整数_Python异常处理大全(二)
  8. java新手的第一个小东西,或许小东西都算不上=。 =
  9. Silverlight3游戏开发之空当接龙基础篇
  10. 【Tensorflow、Keras】关于Reshape层小结(部分问题未解决)
  11. 2019春年第三次课程设计实验报告
  12. cad动态块制作翻转_CAD黑科技丨300份动态图库让你制图速度飞起来丨动态块制作教程...
  13. 小红书支付老显示服务器开小差,常见问题
  14. STM32F103RC单片机ADC1使用TIM1自动触发注入通道组的AD转换
  15. 单例模式的七种写法,你都知道吗?
  16. 廊坊-北京,一月期满,回顾、感恩、奋进。。。
  17. 对38位互联网大佬奇葩癖好的奇葩解读
  18. Java将UTC格式时间转换为北京时间
  19. Web前端知识——JavaScript
  20. LSD(线段检测测试文件)

热门文章

  1. vmware虚拟机出现此电脑无法运行win11,虚拟机中安装win11系统教程
  2. iOS的 gRPC 之路
  3. java计算长方形面积代码小数_求一个计算正方形面积的Java程序
  4. 林学与计算机技术,林学訚
  5. Lightroom 中照片的修改信息储存在哪了?
  6. 应对安全漏洞:如何将LFI变为RFI
  7. 日常:如何修改网页源代码
  8. 我不是药神,救不了你的穷根
  9. iOS9下App Store新应用提审攻略
  10. Video标签的基本使用