前言
之前有一篇文章介绍LoRaWAN透传数据,不过还是用物模型+云端数据解析脚本,不是真正的透传。腾讯云物联网开发平台也支持对LoRaWAN原始数据的透传、转发。今天来介绍下。
腾讯云 IoT Explorer 是腾讯云主推的一站式物联网开发平台,IoT 小能手从设备侧开发、平台功能操作、应用侧开发三个部分来进行学习分享,另外还分享了一些动手实践作品及收录官方发布的产业合作案例,帮助读者更好地理解整个开发链路。详情可点此查看。
1 云控制台操作
创建产品、配置LoRaWAN基础参数、创建设备。这样即可,不用做过多配置。
原本的 设备开发-云端解析 页面中 “设备数据解析功能” 不需要打开,默认也是关闭的。
2 实物透传测试
实物测试,使用LoRaWAN模组进行通信测试,验证通过。
上行通信
设备调试-设备云端日志-内容日志 页面中,选择日志类型为“二进制透传”则可以看到相关的透传数据,是经过base64编码的数据。设备调试-设备云端日志-透传日志-原始日志 页面中,也能看到经过base64编码的原始数据。
下行通信
下行控制可以通过平台提供的云API,具体见文档 设备透传指令控制。关于下行API的调用代码,接口文档中给出了 API Explorer 工具,点击跳转即可使用。这个工具可以方便生成各个语言的调用代码。
下面是下行通信示例:假设我要下发“1234”的字符串,对应原始数据是0x31,0x32,0x33,0x34,从LoRa通道下发的话还得增加上 FPort 和 MType 字段。
第1字节:下发给设备的 LoRaWAN 协议数据的 FPort 字段。
第2字节:bytes 为下发给设备的 LoRaWAN 协议数据的 MType(0表示 Unconfirmed Data Down,1表示 Confirmed Data Down)。
因此,原始下行HEX数据补齐为:07 00 31 32 33 34。
API请求格式参考:
{
"Action": "PublishMessage",
"ProductId": "yourProductID",
"DeviceName": "yourDeviceName",
"Topic": "$thing/down/raw/yourProductID/yourDeviceName",
"Payload": "BwAxMjM0",
"PayloadEncoding": "base64"
}
设备侧实测收到下行数据:
time="2023-04-10T16:23:12+08:00" level=debug msg="downlink phypayload: {\"mhdr\":{\"mType\":\"UnconfirmedDataDown\",\"major\":\"LoRaWANR1\"},\"macPayload\":{\"fhdr\":{\"devAddr\":\"20201107\",\"fCtrl\":{\"adr\":true,\"adrAckReq\":false,\"ack\":true,\"fPending\":false,\"classB\":false},\"fCnt\":5577,\"fOpts\":[{\"bytes\":\"A0D/AAEFAEgaTQ==\"}]},\"fPort\":7,\"frmPayload\":[{\"bytes\":\"MTIzNA==\"}]},\"mic\":\"093c7f4a\"}\n"
MTIzNA== 经过 Base64 解码,得到 HEX 数据:31 32 33 34
3 数据转发到第三方服务器
自定义透传可以将数据转发到第三方服务器,或者消息队列CKafka。注意,自定义透传设备不能将数据转发到 云MySQL,因为非物模型协议,无法落表。
具体转发到第三方服务器的操作可以参考:https://cloud.tencent.com/document/product/1081/61105
规则引擎配置
功能配置界面位于 基础服务 -> 规则引擎。
筛选数据 填写参考:
行为操作 填写参考:
最后的整体配置参考:
工具测试
我用工具 pipedream 做个第三方服务器的转发测试。
这是 pipedream 上收到的物联网开发平台发出的LoRaWAN透传数据。
将透传数据的payload进行base64解码可以看到原始数据。
eyJyYXciOiJNVEl6TkE9PSIsIm1ldGFMb1JhIjoie1wiZnJhbWVUeXBlXCI6NCxcImZQb3J0XCI6NSxcImZDbnRcIjowLFwiZnJlcXVlbmN5XCI6NDcwMzAwMDAwLFwiZHJcIjo0LFwicnNzaVwiOi03MyxcInNuclwiOi00LjMsXCJwYXlsb2FkU2l6ZVwiOjR9In0=
base64解码后得到:
{"raw":"MTIzNA==","metaLoRa":"{\"frameType\":4,\"fPort\":5,\"fCnt\":0,\"frequency\":470300000,\"dr\":4,\"rssi\":-73,\"snr\":-4.3,\"payloadSize\":4}"}
End
That's all
IoT小能手的其他精彩文章:
* 行业围观
LoRaEdge LR1120 卫星直连通信解读
深度报道 第1个从太空发回的LoRa信号(含视频)
* 技术分享
LoRaWAN介绍 - LoRa从业者读这篇就够了
干货 | LoRaWAN 协议中文版,你要的pdf来了
无线节点的空中唤醒技术解析
* 玩玩硬件
13块钱DIY微信小程序远程浇花神器
自制一个 LoRa PM2.5 监测器
语音控制智能家居的抽风小仓鼠
* 心得分享
文档啊,最重要的还是层次感
技术管理入门课_先做个不讨厌的人
你没中过勒索病毒,不知道备份有多重要