联通雁飞格物IOT接入烟感和扬尘
参考
使用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接入烟感和扬尘相关推荐
- Air780E|联通|雁飞格|AT命令|物联网|三元组|鉴权|算法|密钥生成|(4)-联通雁飞格物手动接入步骤
目录 基础资料 探讨重点 实现功能 硬件准备 软件版本 在雁飞格物平台上创建产品 1.创建产品 2.查看雁飞格物平台接入协议 组成ClientId 组成userName 3.设备鉴权信息 鉴权参数计算 ...
- 联通雁飞格物云平台,单片机连接MQTT服务器
最近疫情解封了,好多人都发烧请病假,单位也放假了,我到一直没事儿,在家空闲时间很多,自己做了一个4G边缘网关连接云平台,折腾了半个月,连接联通的燕飞格物云平台成功,现将过程和一些注意事项分享给大家,国 ...
- 张雁飞 mysql_张雁飞:新一代分布式关系型数据库RadonDB
[IT168 评论]各位观众大家好,我们很荣幸地邀请到了青云QingCloud数据库高级技术专家张雁飞老师来接受我们的采访,欢迎张老师的到来,张老师您好. 张雁飞:你好. 2.刚才您的演讲题目是< ...
- 讯飞离线语音合成接入
讯飞离线语音合成接入: 文字转语音的方法 1.Google TextToSpeech + 中文语音引擎 Google提供了原生的方法TextToSpeech,但是不支持中文,sad- 不过可以用第三方 ...
- 物联网IoT接入技术分类以及华为OC平台特性
一.主流物联网接入技术应用场景划分 4G/5GLTE-V: 传输速率>10Mbps:功耗较高 应用业务:车联网.视频监控.智能机器 eMTC/GPRS 传输速率<1Mbps:成本较低,功耗 ...
- 【文献学习】热电偶信号调理、IOT接入
这是在做一个高精度高温传感器配套测试系统时的文献学习笔记.仅做记录总结,方便自己之后查看汇总,言语如有不得体之处还请见谅,转载注明出处. 1.基础知识复习 热电偶传感器利用热电效应来进行工作的, 其热 ...
- 移动联通电信wap和net接入点判断
在android网络开发中,对接入点判断是必不可少的,因为连接网络的时候如果是wap接入点,需要设置代.移动联通wap(代理相同:10.0.0.172:80),电信wap(代理:10.0.0.200: ...
- ESP32 WIFI MESH学习笔记9-百度IOT接入(服务器部分)
系列文章目录 文章目录 系列文章目录 前言 一.百度IOT-Core 二.Core计费 三.IOT-Core设置 四.设备测试 前言 接入DFROBOT 的公用IOT服务还是比容易,但服务也较为简单, ...
- 移动、联通、电信卡的接入点名称
一.APN名称 2G: 移动的CMWAP =联通的UNIWAP 移动的CMNET =联通的UNINET 3G/4G: 移动CMNET 联通3GNET 电信CTNET
最新文章
- struts文件上传
- [Web API] 如何让 Web API 统一回传格式以及例外处理[转]
- GRPC协议的相关原理
- javaScript学习笔记之运算符
- 95-40-032-java.util.concurrent-ConcurrentHashMap
- HeadFirst设计模式之观察者模式学习
- 8025枚BTC在未知钱包间转移 价值约3.09亿美元
- es6 日期字符串转日期_小数转成百分数,日期字符串互相转换,这几个SQL问题该如何解决?...
- MOOS学习笔记3——命令行
- xstream-0 使用入门
- java.lang.ClassFormatError
- c++下字符串分割函数split实现
- 基于LSTM+Attention机制的IMDB影评数据分类学习实践
- Python 数据恢复实战 - 恢复U盘中的chk文件,以及误删的文件
- 两种自动化测试工具AutoRunner与Selenium的对比
- python抠图 removebg,removebg包:一键抠图换证件照底色
- Python——类的继承
- Qt - 换肤功能实现
- 国产智能AI对话:技术狂潮之下,要有梦元宇宙正在改变世界
- 你想要拥有自己的搜索引擎吗?