MQTT客户端(基于mosquitto)上报温度到华为云 ——DS18B20发布订阅温度(Linux C编程)
目录
一、创建产品
二、创建产品功能
三、创建设备
四、获取MQTT连接参数
五、消息主体
六、连接华为云
七、完整代码
回顾记录
一、创建产品
1、进入华为云官网,注册或登录后,点击右上角的“控制台”

2、点击左上角的导航栏,在展开的页面找到“设备接入 IoTDA”

3、点击“产品” ,再点击“创建产品”


二、创建产品功能
1、点击“查看”

2、点击“自定义模型”

3、服务描述如下,点击确定

4、添加属性

5、新增属性信息如下,点击确定,产品一个发布温度的功能就创建好了

三、创建设备
1、点击“设备”中的“所有设备”,点击“注册设备”

2、填写相关信息,设备就创建成功了
四、获取MQTT连接参数
1、上一个步骤完成后会弹出下面的这个界面,我们点击保存并关闭,保存设备信息到txt文件中以便等会儿MQTT客户端连接华为云使用

2、Huaweicloud IoTDA Mqtt ClientId Generator这是华为云根据设备id和设备密钥生成MQTT客户端连接信息的一个网页:Huaweicloud IoTDA Mqtt ClientId Generator
将前面保存的文件中的的 device_id 和 secret 填入后按“Generate”,并将生成的连接信息复制到txt文件中,方便后面使用和校正

3、获取 端口和服务器地址,并将信息保存到txt文件中

4、获取“topic ”


注意Topic中的{device_id}需要替换为我们前面获取到的 device_id
五、消息主体
华为云设备属性上报的官方文档链接:https://support.huaweicloud.com/api-iothub/iot_06_v5_3010.html
通过官方说明可以知道,如果我们只想将温度属性上报给华为云,我们的数据格式应该如下:
{"services": [{"service_id": value,"properties": {"CurrentTemperature": value}}]
}
属性名称是和服务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 = "{\"services\": [{\"service_id\": \"1\",\"properties\": {\"CurrentTemperature\": 27.980}}]}";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参数替换上去
程序编译

连接成功
数据上报成功
七、完整代码
【下面留言,私聊给】
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
