参考

使用MQTT.fx接入雁飞·格物DMP平台

新建产品

使用MQTT.fx接入雁飞·格物DMP平台

MQTT.fx是一款基于Eclipse Paho,使用Java语言编写的MQTT客户端工具,支持通过Topic订阅和发布消息。下面以MQTT.fx为例,介绍使用第三方软件以MQTT协议接入雁飞·格物DMP平台。

前提条件:已在雁飞·格物DMP平台创建产品和设备,并获取设备的鉴权信息(ProductKey、DeviceKey和DeviceSerect等)。创建产品和设备具体操作细节,请参考创建产品、单个创建设备或批量创建设备文档。
以MQTT直连设备使用一机一密认证方式鉴权接入平台为例,其他接入认证方式详见设备上线说明文档。

连接信息

域名和端口:dmp-mqtt.cuiot.cn,端口为1883

参数说明:

  • clientId:构成:{deviceId}|{productKey}|{signMethod}|{authType}|{operator}
    例如:647e8d84bccf2204837a99ae|cukp2zkmsn50xdim|0|0|0
  • userName:构成:{deviceKey}|{productKey}
    例如:2023060103100002|cukp2zkmsn50xdim
  • password:将deviceId, deviceKey,productKey参数值依次进行拼接;然后用函数加密hmac_sha256(deviceIddeviceKeyproductKey,deviceSecret)或者SM3(deviceIddeviceKeyproductKey,deviceSecret)

备注: deviceId和deviceKey可以一致,但是要记得备份好deviceId,一旦被使用之后则无法修改

deviceId可以自定义,只需要全局唯一即可;

使用hmac_sha256算法http://www.jsons.cn/allencrypt在线签名得到密码

数据上报

参考文档:https://help-dmp.cuiot.cn/?6WSscvjNEnkN=1678755274556#/onlineDocument/display?articleId=69&articleTypeId=0

单属性上报

$sys/cu10pusjit6gfi1n/yangchen1/property/pub
// 内容{"messageId": "1234","params": {"key": "windSpeed","value": 13,"ts": "1678759768157"}
}

多属性批量上报

$sys/cu10pusxxx/yangchen1/property/batch
// 内容
{"messageId": 54692,"params": {"data": [{"key": "tsp","value": 10},{"key": "db","value": 20}, {"key": "temperature","value": 19.93}, {"key": "atmospheric","value": 133}, {"key": "windDirection","value": 14},{"key": "pm25","value": 9.93},{"key": "pm10","value": 12.93},{"key": "windSpeed","value": 5},{"key": "geoLocation","value": {"longitude": 118.763334,"latitude": 32.0175,"altitude": 3.93,"coordinateSystem": 1}}],"ts": 1686535161028}
}

显示数据

事件上报

// topic: $sys/cukp2zkmsn50xdim/DUST20230612001/event/pub
// 内容数据
{"messageId": 54692,"params": {"key": "alarm_event","ts": 1686535161028,"info": [{"key": "alarmType","value": 1}, {"key": "alarmValue","value": 32.01}, {"key": "thresholdValue","value": 23.93}]}}

设备影子

平台下发更新

设备监听影子主题

平台下发之后,设备监听到指令,然后进行本地设置,之后响应$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方式接入烟感

dmpUrl:https://dmp-https.cuiot.cn:8943

获取token

{"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}}}
}

规则转发

Kafka数据转发

文档参考:Kafka数据转发

http客户端

文档参考:http客户端

sign接口签名


调用时,会在header中携带appKey和sign字段

属性上报

body

{"productKey":"$(product.key)",
"deviceKey":"$(device.key)",
"deviceName":"$(device.name)",
"messageId":"$(messageId)",
"data": $(property.data)
}

调用结果

{"productKey": "cukp2zkmsn50xdim","deviceKey": "DUST20230612001","deviceName": "奥斯恩01","deviceStatus": "$(device.status)","ts": "$(device.prop.ts)","messageId": "54692","data": [{"device.prop.value": "10","device.prop.ts": "2023-06-12 17:46:23.183","device.prop.name": "总颗粒悬浮物","device.prop.key": "tsp"}, {"device.prop.value": "9.93","device.prop.ts": "2023-06-12 17:46:23.183","device.prop.name": "pm2.5","device.prop.key": "pm25"}, {"device.prop.value": "133","device.prop.ts": "2023-06-12 17:46:23.183","device.prop.name": "大气压","device.prop.key": "atmospheric"}, {"device.prop.value": {"altitude": 3.93,"latitude": 32.0175,"coordinateSystem": 1,"longitude": 118.763334},"device.prop.ts": "2023-06-12 17:46:23.183","device.prop.name": "坐标","device.prop.key": "geoLocation"}, {"device.prop.value": "12.93","device.prop.ts": "2023-06-12 17:46:23.183","device.prop.name": "pm10","device.prop.key": "pm10"}, {"device.prop.value": "19.93","device.prop.ts": "2023-06-12 17:46:23.183","device.prop.name": "温度","device.prop.key": "temperature"}, {"device.prop.value": "14","device.prop.ts": "2023-06-12 17:46:23.183","device.prop.name": "风向","device.prop.key": "windDirection"}, {"device.prop.value": "5","device.prop.ts": "2023-06-12 17:46:23.183","device.prop.name": "风速","device.prop.key": "windSpeed"}, {"device.prop.value": "20","device.prop.ts": "2023-06-12 17:46:23.183","device.prop.name": "噪音","device.prop.key": "db"}]
}

事件上报

{
“productKey”:“ ( p r o d u c t . k e y ) " , " d e v i c e K e y " : " (product.key)", "deviceKey":" (product.key)","deviceKey":"(device.key)”,
“deviceName”:“ ( d e v i c e . n a m e ) " , " e v e n t K e y " : " (device.name)", "eventKey":" (device.name)","eventKey":"(device.event.key)”,
“eventType”:“ ( d e v i c e . e v e n t . t y p e ) " , " t s " : " (device.event.type)", "ts":" (device.event.type)","ts":"(device.event.ts)”,
“messageId”:“$(messageId)”,
“data”: $(device.event.outParams)
}

调用结果

{"productKey": "cukp2zkmsn50xdim","deviceKey": "DUST20230612001","deviceName": "奥斯恩01","eventKey": "alarm_event","eventType": "alarm","ts": "2023-06-12 17:43:31.953","messageId": "54692","data": [{"value": 1,"key": "alarmType"}, {"value": 32.01,"key": "alarmValue"}, {"value": 23.93,"key": "thresholdValue"}]
}

白名单ip

218.98.16.69,218.98.16.71

联通雁飞格物IOT接入烟感和扬尘相关推荐

  1. Air780E|联通|雁飞格|AT命令|物联网|三元组|鉴权|算法|密钥生成|(4)-联通雁飞格物手动接入步骤

    目录 基础资料 探讨重点 实现功能 硬件准备 软件版本 在雁飞格物平台上创建产品 1.创建产品 2.查看雁飞格物平台接入协议 组成ClientId 组成userName 3.设备鉴权信息 鉴权参数计算 ...

  2. 联通雁飞格物云平台,单片机连接MQTT服务器

    最近疫情解封了,好多人都发烧请病假,单位也放假了,我到一直没事儿,在家空闲时间很多,自己做了一个4G边缘网关连接云平台,折腾了半个月,连接联通的燕飞格物云平台成功,现将过程和一些注意事项分享给大家,国 ...

  3. 张雁飞 mysql_张雁飞:新一代分布式关系型数据库RadonDB

    [IT168 评论]各位观众大家好,我们很荣幸地邀请到了青云QingCloud数据库高级技术专家张雁飞老师来接受我们的采访,欢迎张老师的到来,张老师您好. 张雁飞:你好. 2.刚才您的演讲题目是< ...

  4. 讯飞离线语音合成接入

    讯飞离线语音合成接入: 文字转语音的方法 1.Google TextToSpeech + 中文语音引擎 Google提供了原生的方法TextToSpeech,但是不支持中文,sad- 不过可以用第三方 ...

  5. 物联网IoT接入技术分类以及华为OC平台特性

    一.主流物联网接入技术应用场景划分 4G/5GLTE-V: 传输速率>10Mbps:功耗较高 应用业务:车联网.视频监控.智能机器 eMTC/GPRS 传输速率<1Mbps:成本较低,功耗 ...

  6. 【文献学习】热电偶信号调理、IOT接入

    这是在做一个高精度高温传感器配套测试系统时的文献学习笔记.仅做记录总结,方便自己之后查看汇总,言语如有不得体之处还请见谅,转载注明出处. 1.基础知识复习 热电偶传感器利用热电效应来进行工作的, 其热 ...

  7. 移动联通电信wap和net接入点判断

    在android网络开发中,对接入点判断是必不可少的,因为连接网络的时候如果是wap接入点,需要设置代.移动联通wap(代理相同:10.0.0.172:80),电信wap(代理:10.0.0.200: ...

  8. ESP32 WIFI MESH学习笔记9-百度IOT接入(服务器部分)

    系列文章目录 文章目录 系列文章目录 前言 一.百度IOT-Core 二.Core计费 三.IOT-Core设置 四.设备测试 前言 接入DFROBOT 的公用IOT服务还是比容易,但服务也较为简单, ...

  9. 移动、联通、电信卡的接入点名称

    一.APN名称 2G: 移动的CMWAP =联通的UNIWAP 移动的CMNET =联通的UNINET 3G/4G: 移动CMNET 联通3GNET 电信CTNET

最新文章

  1. struts文件上传
  2. [Web API] 如何让 Web API 统一回传格式以及例外处理[转]
  3. GRPC协议的相关原理
  4. javaScript学习笔记之运算符
  5. 95-40-032-java.util.concurrent-ConcurrentHashMap
  6. HeadFirst设计模式之观察者模式学习
  7. 8025枚BTC在未知钱包间转移 价值约3.09亿美元
  8. es6 日期字符串转日期_小数转成百分数,日期字符串互相转换,这几个SQL问题该如何解决?...
  9. MOOS学习笔记3——命令行
  10. xstream-0 使用入门
  11. java.lang.ClassFormatError
  12. c++下字符串分割函数split实现
  13. 基于LSTM+Attention机制的IMDB影评数据分类学习实践
  14. Python 数据恢复实战 - 恢复U盘中的chk文件,以及误删的文件
  15. 两种自动化测试工具AutoRunner与Selenium的对比
  16. python抠图 removebg,removebg包:一键抠图换证件照底色
  17. Python——类的继承
  18. Qt - 换肤功能实现
  19. 国产智能AI对话:技术狂潮之下,要有梦元宇宙正在改变世界
  20. 你想要拥有自己的搜索引擎吗?

热门文章

  1. 伯克利大学计算机专业排名,美国加州大学伯克利分校计算机专业排名
  2. 网站模板html psd,20个新鲜出炉的网站模板【HTML PSD】
  3. (最小割)洛谷P4474 王者之剑
  4. C#--第2周实验--任务五--编写一个控制台应用--求两个整数的最小公倍数与最大公约数
  5. 高速多通道误码测试仪BERT
  6. Python升级之路( Lv11 ) GUI图形界面编程
  7. CScrollBar的使用
  8. 人力资源数字化如何导致组织成功的 3 个示例
  9. 卓训教育:孩子不听话怎么办,家长试试这几种教育方法
  10. IPV6服务器地址列表