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参数替换上去

程序编译

 连接成功

 数据上报成功

七、完整代码

【下面留言,私聊给】

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值