本篇是 《从零开始,打造基于阿里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)_配置产品功能,将上传数据解析为阿里云平台数据格式相关推荐

  1. 利用串口网络助手上传数据、图片到OneNet平台以及获取数据(HTTP)

    利用串口网络助手上传数据.图片到OneNet平台以及获取数据(HTTP) 使用网络助手连接OneNet服务器 HTTP上传数据至OneNet 获取数据 上传图片至OneNet 使用网络助手连接OneN ...

  2. 怎么把手机文件导入华为云服务器,华为手机如何上传数据到云服务器

    华为手机如何上传数据到云服务器 内容精选 换一换 对象存储服务OBS是华为云提供的稳定.安全.高效.易用的云存储服务,具备标准Restful API接口,可存储任意数量和形式的非结构化数据.弹性文件服 ...

  3. MQTT协议-报文分析及网络客户端报文测试(MQTT报文连接阿里云上传数据+订阅数据)

    文章目录 一.本文章所涉及到的内容 二.感性认识MQTT协议 三.准备信息 (一)工具获取 (二)获取信息 1.获取三元组信息 2.获取发布topic和订阅topic 3.客户端ID,用户名,哈希加密 ...

  4. 树莓派上传数据到onenet云平台

    背景:通过树莓派上传数据到onenet云平台 操作:看代码 # -*- coding:utf-8 -*- # File: cputemp.py #向平台已经创建的数据流发送数据点 import url ...

  5. excel oss 上传_java实现上传文件到oss(阿里云)功能示例

    本文实例讲述了java实现上传文件到oss(阿里云)功能.分享给大家供大家参考,具体如下: 做这个功能之前我们需要导入阿里云OSS官方提供的工具包 aliyun-sdk-oss-2.5.0.jar 这 ...

  6. stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭

    stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭 接触stm32已经有一年半的时间了,从最开始的stm32F103ZET ...

  7. 【MQTT】利用MQTT.fx上传数据节点到中移OneNET云平台

    在学习使用OneNET云平台过程中,使用MQTT协议向平台上传数据,利用MQTT.fx输入发布tpoic,为了确保设备上传消息确实被平台所接受处理,设备可以订阅系统 topic ,从而获取上传数据点的 ...

  8. Docker 镜像上传到私有云和阿里云的超详细图文步骤

    打开阿里云登录账号打开控制台 阿里云-为了无法计算的价值 (aliyun.com) 进入控制台点击折叠框  找到容器服务里面的容器镜像服务  找到实例创建个人实例记住你输入的密码 创建命名空间 创建镜 ...

  9. **关于阿里云oss图片批量上传问题解析**

    关于阿里云oss图片批量上传问题解析 背景 最近在项目开发过程中遇到的问题,消耗了比较久的时间,过程曲折,虽然最终达到目的,但是鉴于各种常用的云数据在对象存储方面大同小异,所以记录一下. 理一下思路: ...

最新文章

  1. CPU 核数与线程数有什么关系?
  2. 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型
  3. 2015-12-15 关于数量个
  4. 【JAVA基础篇】反射
  5. PyQt5教程——组件(7)
  6. 从0开始搭建基于Zookeeper的Spark集群
  7. P0INP = 0Xfd;P1DIR |= 0X01;
  8. ubuntu下打开.chm文件的方法(比如交换机参考手册)
  9. mysql case then效率快_详解Mysql case then使用
  10. 网页内嵌多媒体 IE,Mozilla、Firefox、NetScape、Opera
  11. 速达启动时显示“对象名ACCSET无效“
  12. Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地~~~附源代码...
  13. 职场上做“独狼”注定失败
  14. 突发收购,亚信科技在谋划什么?
  15. 微信订阅号“头条化”,内容创业要重新洗牌?
  16. 关于《职场路上》专栏介绍
  17. P1139 再分麦粒
  18. 圖譜謎宮(2019年6月28日於鄂爾多斯)
  19. 在python中布尔表达式的应用——判断语句
  20. 【Web API系列教程】1.3 — 实战:用ASP.NET Web API和Angular.js创建单页面应用程序(上)

热门文章

  1. IHS Markit报告:44亿美元的SDN市场,思科第一、VMware第二,华为第五!
  2. ubuntu下用evernote
  3. 数项级数的Leibniz判别法理解
  4. android-percent-support-extend
  5. 确定一个字符串的所有字符是否全都不同
  6. 永久删除计算机硬盘中数据的快捷键,如何使用老毛桃winpe的分区助手删除硬盘所有分区并快速擦除硬盘数据?...
  7. android 图片质量,Android微信朋友圈图片不如 IOS的质量好
  8. MySQL时间字段效率_MYSQL数据库时间字段INT,TIMESTAMP,DATETIME性能效率比较
  9. 凡人无法打开的文件3
  10. 掌握这些Flowjo技巧,帮你轻松搞定流式数据