从零开始,打造基于阿里IoT云平台的LoRa解决方案(3)_配置产品功能,将上传数据解析为阿里云平台数据格式
本篇是 《从零开始,打造基于阿里IoT云平台的LoRa解决方案》系列教程的第3 篇,将为大家讲解:1-如何配置产品功能?2-如何将产品的上传数据解析为阿里云平台数据格式?
查看阿里物联网平台上产品的功能定义和数据解析
- 1-配置产品功能定义
- 2-将产品的上传数据解析为阿里云平台数据格式
- 本期内容到此结束~下一篇文章为大家讲解==如何在IoT Studio上创建web可视化界面==。
1-配置产品功能定义
RAK5205 lora 节点硬件上包含 GPS、温度、湿度和加速度、电池电量、速度的相关传感 器,所以需要在阿里云平台上我们已经新建的 RAK5205 产品里加上这些属性。
进入阿里云 IoT 控制台,选择“设备管理”下的“产品”:
找到 RAK5205 产品,点击右侧“查看”:
点击在该页面**“自定义功能”右侧的<添加功能>**按钮,在弹出框里配置相应数据。 以配置“温度”属性为例,功能类型为“属性”,功能名字为 “温度”,标识符为 “Temperature”,数据类型为 double 型,取值范围为-99 到 100, 步长为 0.01, 单位 为“摄氏度”。
点击<确定>按钮,“温度”属性配置成功。如法炮制,依次配置“湿度”,“经度”, “纬度”,“海拔”,“X 加速度”,“Y 加速度”,“Z 加速度”,“速度”,“电池 电压”,“大气压”属性,具体数据如下:
创建后的结果如下图:
2-将产品的上传数据解析为阿里云平台数据格式
RAK5205 上报的数据是二进制格式,如 01880537A5109D5A00846C,其中 1,2 字节为数 据标识码:01 88,3,4,5 字节为 altitude 数据:(altitude:339m),6,7,8 字节为 latitude 数据:(latitude:34.1925),9,10,11 字节为 longitude 数据:(longitude:108.8858)。 而阿里云平台的数据格式为 Alink-JSON 格式。
接下来需要使用产品定义里的“数据解析”,把二进制数据自动转化为 Alink-JSON 格式, 转化规则可以参考文档。
打开 RAK5205 产品的“数据解析”界面:
“编辑脚本”里输入数据解析脚本,“模拟输入”里输入模拟数据,验证脚本的正确性, <保存草稿>可以保存已编写的解析脚本,输入模拟数据后点击<运行>按钮,右侧“运行结 果”里会显示解析后的 JSON 格式,只有运行正确的解析脚本,才能点击<提交>按钮提 交。
在“编辑脚本”里输入如下解析脚本:
1. // var COMMAND_REPORT = 02;
2. // var COMMAND_SET = 01;
3. var ALINK_PROP_REPORT_METHOD = 'thing.event.property.post'; //标准 ALink JSON 格式 topic, 设备 上传属性数据到 云端
4. var ALINK_PROP_SET_METHOD = 'thing.service.property.set';
5.
6. function rawDataToProtocol(bytes) {
7. var uint8Array = new Uint8Array(bytes.length);
8. for (var i = 0; i < bytes.length; i++) {
9. uint8Array[i] = bytes[i] & 0xff;
10. }
11.
12. var dataView = new DataView(uint8Array.buffer, 0);
13. var jsonMap = {};
14. // var fHead = uint8Array[0]; // 第 0 个 BYTE 为上报协议
15. // if (fHead == COMMAND_REPORT)
16. {
17. jsonMap['method'] = ALINK_PROP_REPORT_METHOD; //ALink JSON 格式 - 属性上报 topic
18. jsonMap['version'] = '1.0'; //ALink JSON 格式 - 协议版本号固定字段
19. jsonMap['id'] = '' + 12345; //ALink JSON 格式 - 标示该次请求id值
20. var params = {};
21. switch (dataView.getInt16(0)) {
22. case 0x0267:
23. params['Temperature'] = dataView.getInt16(2) * 0.1;
24. params['Humidity'] = 100 * dataView.getUint8(6)*0.01 / 2;
25. params['Atmosphere'] = dataView.getInt16(9) * 0.1;
26. break;
27. case 0x0188:
28. var buffer = new Uint8Array(4);
29. buffer[0] = 0;
30. buffer[1] = uint8Array[2];
31. buffer[2] = uint8Array[3];
32. buffer[3] = uint8Array[4];
33. var latitude = new DataView(buffer.buffer, 0);
34. params['Latitude'] = latitude.getInt32(0)*0.0001;
35.
36. buffer[0] = 0;
37. buffer[1] = uint8Array[5];
38. buffer[2] = uint8Array[6];
39. buffer[3] = uint8Array[7];
40. var longitude = new DataView(buffer.buffer, 0);
41. params['Longitude'] = longitude.getInt32(0)*0.0001;
42.
43. buffer[0] = 0;
44. buffer[1] = uint8Array[8];
45. buffer[2] = uint8Array[9];
46. buffer[3] = uint8Array[10];
47. var altitude = new DataView(buffer.buffer, 0);
48. params['Altitude'] = altitude.getInt32(0)*0.01;
49. break;
50. case 0x0371:
51. params['Battery_voltage'] = dataView.getInt16(2) * 10;
52. params['Battery_voltage'] = dataView.getInt16(4) * 10;
53. params['Battery_voltage'] = dataView.getInt16(6) * 10;
54. break;
55. case 0x0902:
56. params['Gas_resistance'] = dataView.getInt16(2) * 10;
57. params['Speed'] = dataView.getInt16(6) * 0.01;
58. break;
59. case 0x0902:
60. params['Gas_resistance'] = dataView.getInt16(2);
61. break;
62. }
63.
64. jsonMap['params'] = params; //ALink JSON 格式 - params 标准字段
65. }
66. return jsonMap;
67. }
68.
69. function protocolToRawData(bytes) {
70. var method = json['method'];
71. var id = json['id'];
72. var version = json['version'];
73. var payloadArray = [];
74.
75. return payloadArray;
76. }
然后点击<保存草稿>。
之后输入我们的原始数据“01880537A5109D5A00846C”进行调试:
可以看到右侧有“运行成功”的提示,并且解析出了 Latitude、Longitude 和 Altitude。 这时候点击<提交>即可让脚本生效。
点击右侧的“监控运维”,然后点击日志服务,在右侧产品下拉框选择 RAK5205:
点击“物理模型数据分析”,
筛选出指定 DeviceName,就可以看到 RAK5205 节点上报的数据了,有“原始数据”和 解析后的“内容(全部)”数据。以其中一条记录为例,原始数据为01880537a9109d5b00c670,“内容(全部)”为:
可以看到上传的数据已经能正常解析了。
本期内容到此结束~下一篇文章为大家讲解如何在IoT Studio上创建web可视化界面。
搭建一个基于阿里IoT云平台的LoRa解决方案,可以分为四个步骤:
1-配置LoRaWAN网关
2-在阿里物联网平台创建产品和设备
3-配置产品功能,数据解析
4-创建web可视化界面
从零开始,打造基于阿里IoT云平台的LoRa解决方案(3)_配置产品功能,将上传数据解析为阿里云平台数据格式相关推荐
- 利用串口网络助手上传数据、图片到OneNet平台以及获取数据(HTTP)
利用串口网络助手上传数据.图片到OneNet平台以及获取数据(HTTP) 使用网络助手连接OneNet服务器 HTTP上传数据至OneNet 获取数据 上传图片至OneNet 使用网络助手连接OneN ...
- 怎么把手机文件导入华为云服务器,华为手机如何上传数据到云服务器
华为手机如何上传数据到云服务器 内容精选 换一换 对象存储服务OBS是华为云提供的稳定.安全.高效.易用的云存储服务,具备标准Restful API接口,可存储任意数量和形式的非结构化数据.弹性文件服 ...
- MQTT协议-报文分析及网络客户端报文测试(MQTT报文连接阿里云上传数据+订阅数据)
文章目录 一.本文章所涉及到的内容 二.感性认识MQTT协议 三.准备信息 (一)工具获取 (二)获取信息 1.获取三元组信息 2.获取发布topic和订阅topic 3.客户端ID,用户名,哈希加密 ...
- 树莓派上传数据到onenet云平台
背景:通过树莓派上传数据到onenet云平台 操作:看代码 # -*- coding:utf-8 -*- # File: cputemp.py #向平台已经创建的数据流发送数据点 import url ...
- excel oss 上传_java实现上传文件到oss(阿里云)功能示例
本文实例讲述了java实现上传文件到oss(阿里云)功能.分享给大家供大家参考,具体如下: 做这个功能之前我们需要导入阿里云OSS官方提供的工具包 aliyun-sdk-oss-2.5.0.jar 这 ...
- stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭
stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭 接触stm32已经有一年半的时间了,从最开始的stm32F103ZET ...
- 【MQTT】利用MQTT.fx上传数据节点到中移OneNET云平台
在学习使用OneNET云平台过程中,使用MQTT协议向平台上传数据,利用MQTT.fx输入发布tpoic,为了确保设备上传消息确实被平台所接受处理,设备可以订阅系统 topic ,从而获取上传数据点的 ...
- Docker 镜像上传到私有云和阿里云的超详细图文步骤
打开阿里云登录账号打开控制台 阿里云-为了无法计算的价值 (aliyun.com) 进入控制台点击折叠框 找到容器服务里面的容器镜像服务 找到实例创建个人实例记住你输入的密码 创建命名空间 创建镜 ...
- **关于阿里云oss图片批量上传问题解析**
关于阿里云oss图片批量上传问题解析 背景 最近在项目开发过程中遇到的问题,消耗了比较久的时间,过程曲折,虽然最终达到目的,但是鉴于各种常用的云数据在对象存储方面大同小异,所以记录一下. 理一下思路: ...
最新文章
- CPU 核数与线程数有什么关系?
- 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型
- 2015-12-15 关于数量个
- 【JAVA基础篇】反射
- PyQt5教程——组件(7)
- 从0开始搭建基于Zookeeper的Spark集群
- P0INP = 0Xfd;P1DIR |= 0X01;
- ubuntu下打开.chm文件的方法(比如交换机参考手册)
- mysql case then效率快_详解Mysql case then使用
- 网页内嵌多媒体 IE,Mozilla、Firefox、NetScape、Opera
- 速达启动时显示“对象名ACCSET无效“
- Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地~~~附源代码...
- 职场上做“独狼”注定失败
- 突发收购,亚信科技在谋划什么?
- 微信订阅号“头条化”,内容创业要重新洗牌?
- 关于《职场路上》专栏介绍
- P1139 再分麦粒
- 圖譜謎宮(2019年6月28日於鄂爾多斯)
- 在python中布尔表达式的应用——判断语句
- 【Web API系列教程】1.3 — 实战:用ASP.NET Web API和Angular.js创建单页面应用程序(上)
热门文章
- IHS Markit报告:44亿美元的SDN市场,思科第一、VMware第二,华为第五!
- ubuntu下用evernote
- 数项级数的Leibniz判别法理解
- android-percent-support-extend
- 确定一个字符串的所有字符是否全都不同
- 永久删除计算机硬盘中数据的快捷键,如何使用老毛桃winpe的分区助手删除硬盘所有分区并快速擦除硬盘数据?...
- android 图片质量,Android微信朋友圈图片不如 IOS的质量好
- MySQL时间字段效率_MYSQL数据库时间字段INT,TIMESTAMP,DATETIME性能效率比较
- 凡人无法打开的文件3
- 掌握这些Flowjo技巧,帮你轻松搞定流式数据