参考
新建产品
使用MQTT.fx接入雁飞·格物DMP平台
MQTT.fx是一款基于Eclipse Paho,使用Java语言编写的MQTT客户端工具,支持通过Topic订阅和发布消息。下面以MQTT.fx为例,介绍使用第三方软件以MQTT协议接入雁飞·格物DMP平台。
前提条件:已在雁飞·格物DMP平台创建产品和设备,并获取设备的鉴权信息(ProductKey、DeviceKey和DeviceSerect等)。创建产品和设备具体操作细节,请参考创建产品、单个创建设备或批量创建设备文档。
以MQTT直连设备使用一机一密认证方式鉴权接入平台为例,其他接入认证方式详见设备上线说明文档。
连接信息
deviceId可以自定义,只需要全局唯一即可;
使用hmac_sha256算法http://www.jsons.cn/allencrypt在线签名得到密码
数据上报
单属性上报
$sys/cu10pusjit6gfi1n/yangchen1/property/pub
// 内容
{
"messageId": "1234",
"params": {
"key": "windSpeed",
"value": 13,
"ts": "1678759768157"
}
}
多属性批量上报
$sys/cu10pusxxx/yangchen1/property/batch
// 内容
{
"messageId": 54691,
"params": {
"data": [{
"key": "tsp",
"value": 10
},
{
"key": "pm25",
"value": 9.93
},
{
"key": "pm10",
"value": 12.93
},
{
"key": "windSpeed",
"value": 5
},
{
"key": "powerSavingMode",
"value": 1
},
{
"key": "geoLocation",
"value": {
"longitude": 118.763334,
"latitude": 32.0175,
"altitude": 3.93,
"coordinateSystem":1
}
}
],
"ts": 1600695731000
}
}
显示数据
设备影子
平台下发更新
设备监听影子主题
平台下发之后,设备监听到指令,然后进行本地设置,之后响应$sys/{productKey}/{deviceKey}/deviceShadow/command_reply
# $sys/cu10pusjit6gfi1n/yangchen1/deviceShadow/command
{
"messageId": "2",
"params": {
"state": {
"desired": {
"tsp": 12,
"pm25": 2,
"pm10": 23,
"windSpeed": 23.0
},
"reported": {
}
},
"metadata": {
"desired": {
"tsp": {
"ts": "1678766756862"
},
"pm25": {
"ts": "1678766756862"
},
"pm10": {
"ts": "1678766756862"
},
"windSpeed": {
"ts": "1678766756862"
}
},
"reported": {
}
},
"ts": "1678766756862",
"version": 3
}
}
使用http方式接入烟感
获取token
扫描二维码关注公众号,回复:
14934606 查看本文章
{
"productKey":"cu1twobqbsa4bftp",
"deviceKey":"yangan1",
"operator":"0",
"secretKey":"264F1FFA2F89FC0BA3078CFF8D0303",
"deviceId":"yanganjiance1",
"timestamp":"{
{timestamp}}",
"signMethod":"hmacsha256",
"sign":"{
{sign}}"
}
Pre-request Script
// 获取当前时间戳
var timestamp = new Date().getTime();
var body =pm.request.body;
console.log("body:",body);
var raw = body.raw;
console.log("raw:",raw);
var data = JSON.parse(raw);
console.log("data:",data);
var productKey = data.productKey;
var deviceKey = data.deviceKey;
var deviceId = data.deviceId;
var deviceSecret = data.secretKey;
var signMethod = data.signMethod;
var operator = data.operator;
console.log("productKey:",productKey);
console.log("deviceKey:",deviceKey);
console.log("deviceId:",deviceId);
console.log("deviceSecret:",deviceSecret);
var reqContent = deviceId+deviceKey+productKey+signMethod+operator+timestamp;
console.log("reqContent:",reqContent);
var reqSign=(CryptoJS.HmacSHA256(reqContent,deviceSecret)).toString() // 加密 转化为字符串
var sign = reqSign.toString(CryptoJS.enc.Hex) // 转化为16进制
console.log("sign:",sign);
pm.environment.set("timestamp", timestamp);
pm.environment.set("sign", sign);
属性上报
{
"messageId": 54691,
"params": {
"data": [
{
"key": "batteryPower",
"value": 10
},
{
"key": "signalStrength",
"value": 9.93
},
{
"key": "smokeScope",
"value": 12.93
},
{
"key": "dirtyPercent",
"value": 5
},
{
"key": "signalSNR",
"value": 1
},
{
"key": "geoLocation",
"value": {
"longitude": 118.763334,
"latitude": 32.0175,
"altitude": 3.93,
"coordinateSystem": 1
}
}
],
"ts": {
{
timestamp}}
}
}
事件上报
{
"messageId": 54691,
"params": {
"data": [
{
"key": "fireAlarm_event",
"value": 10
},
{
"key": "power_event",
"value": 9.93
},
{
"key": "communication_event",
"value": 12.93
},
{
"key": "dirtyPercent",
"value": 5
},
{
"key": "signalSNR",
"value": 1
},
{
"key": "geoLocation",
"value": {
"longitude": 118.763334,
"latitude": 32.0175,
"altitude": 3.93,
"coordinateSystem": 1
}
}
],
"ts": {
{
timestamp}}
}
}