
MQTT客户端(基于mosquitto)上报温度到华为云 ——DS18B20发布订阅温度(Linux C编程)
回顾记录。
目录
回顾记录
一、创建产品
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参数替换上去
程序编译
连接成功
数据上报成功
七、完整代码
【下面留言,私聊给】
更多推荐
所有评论(0)