MQTT客户端(基于mosquitto库)上报温度到腾讯云
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库)上报温度到腾讯云相关推荐
- MQTT客户端(基于mosquitto库)上报温度到阿里云
Linux C MQTT客户端上报温度到阿里云 一.创建产品 1.进入阿里云官方页面,右上角点击登陆或注册阿里云账号 2.登录阿里云账号后点击右上角进入控制台 3.鼠标移到左上角展开导航 4.进入在物 ...
- 【MQTT】使用MQTT.fx上报温度到腾讯云
1.打开腾讯云官网,注册并登录. 2.登录之后点击右上角的控制台点进去 3.在搜索框[物联网通信],点击进入 4.点击创建新产品 5.选择普通产品,名称随便,选择密钥认证,选择json格式 6.在设备 ...
- MQTT客户端(基于mosquitto)上报温度到华为云 ——DS18B20发布订阅温度(Linux C编程)
目录 一.创建产品 二.创建产品功能 三.创建设备 四.获取MQTT连接参数 五.消息主体 六.连接华为云 七.完整代码 回顾记录 一.创建产品 1.进入华为云官网,注册或登录后,点击右上角的&quo ...
- python jieba库分词_Python基于jieba库进行简单分词及词云功能实现方法
本文实例讲述了Python基于jieba库进行简单分词及词云功能实现方法.分享给大家供大家参考,具体如下: 目标: 1.导入一个文本文件 2.使用jieba对文本进行分词 3.使用wordcloud包 ...
- 【MQTT】基于mosquitto的学习和使用
文章目录 前言 一.MQTT简介 MQTT特性 MQTT协议原理 MQTT协议数据包结构 二.安装MQTT 1.mosquitto简介 2.安装mosquitto库 2.常用MQTT库函数 三.代码实 ...
- 初识 MQTT (基于 mosquitto)
目录 一.什么是MQTT 二.MQTT 的主要特性 1)MQTT 的消息类型(Message Type) 2)消息质量(QoS) 3)遗愿标志(Will Flags) 4)连接保活心跳机制(Keep ...
- 短信平台专业版软件客户端功能详解源码搭建|移讯云短信系统
国际短信平台专业版软件客户端功能详解|移讯云短信系统 首页显示 剩余条数 充值总数 提交总数 成功数量 失败数量 未知数量 代发数量 签名数量 最新提交 平台公告 API接口文档 短信发送 发送短信选 ...
- phpcms视频库第三方托管-接入腾讯云点播
phpcms视频库KU6改为优酷简单上传 phpcms已经不再更新,酷6网也已经相当于废了,想使用phpcms原本的视频功能,只能进行二次开发.本人在开发了优酷云视频的托管的基础上,继续开发了腾讯云点 ...
- Android Studio实现MQTT客户端
初学Android Studio,在实现MQTT客户端的过程中遇到了很多坑,而在查阅博文的时候发现各个博文能提供的解决方法很零碎,我也是结合了诸多博文才最终解决了问题,于是打算做一个小总结 我用的版本 ...
最新文章
- python local函数_python中的函数
- loadrunner中错误为27796的一个解决方法
- mysql索引检测_mysql检测重复索引
- Satori变种正在通过替换钱包地址盗取ETH数字代币
- RF无线电射频接口静电保护方案图
- line-height:1.5和line-height:150%的区别
- python异常处理输入不是整数_Python异常处理大全(二)
- java新手的第一个小东西,或许小东西都算不上=。 =
- Silverlight3游戏开发之空当接龙基础篇
- 【Tensorflow、Keras】关于Reshape层小结(部分问题未解决)
- 2019春年第三次课程设计实验报告
- cad动态块制作翻转_CAD黑科技丨300份动态图库让你制图速度飞起来丨动态块制作教程...
- 小红书支付老显示服务器开小差,常见问题
- STM32F103RC单片机ADC1使用TIM1自动触发注入通道组的AD转换
- 单例模式的七种写法,你都知道吗?
- 廊坊-北京,一月期满,回顾、感恩、奋进。。。
- 对38位互联网大佬奇葩癖好的奇葩解读
- Java将UTC格式时间转换为北京时间
- Web前端知识——JavaScript
- LSD(线段检测测试文件)