由于控制dtu的单片机可能是非常便宜功能很弱,所以对json这种格式解析可能比较费劲,所以阿里云在高级版中为客户提供了自定义格式的数据透传解析服务。用户可以方便的使用十六进制等数据格式上传,由于我们的dtu可以方便的实现对阿里云的透传,所以开发起来也很简单。

1,阿里云新建产品

为了和以前的功能统一这次还是用的自定义,大家可以根据需要自己选择,重要的是数据格式一定要选择自定义透传。

添加功能

编写解析脚本

var COMMAND_REPORT = 0x00;
var COMMAND_SET = 0x01;
var ALINK_PROP_REPORT_METHOD = 'thing.event.property.post'; //标准ALink JSON格式topic, 设备 上传属性数据到 云端
var ALINK_PROP_SET_METHOD = 'thing.service.property.set'; //标准ALink JSON格式topic, 云端 下发属性控制指令 到设备端function rawDataToProtocol(bytes) {var uint8Array = new Uint8Array(bytes.length);for (var i = 0; i < bytes.length; i++) {uint8Array[i] = bytes[i] & 0xff;}var dataView = new DataView(uint8Array.buffer, 0);var jsonMap = new Object();var fHead = uint8Array[0];if (fHead == COMMAND_REPORT) {jsonMap['method'] = ALINK_PROP_REPORT_METHOD;jsonMap['version'] = '1.0';jsonMap['id'] = '' + dataView.getInt32(1);var params = {};params['LightVolt'] = dataView.getInt32(5);params['PowerSwitch'] = uint8Array[9];jsonMap['params'] = params;}return jsonMap;}function protocolToRawData(json) {var method = json['method'];var id = json['id'];var version = json['version'];var payloadArray = [];if (method == ALINK_PROP_SET_METHOD){var params = json['params'];var prop_int32 = params['LightVolt'];var prop_bool = params['PowerSwitch'];//按照自定义协议格式拼接 rawdatapayloadArray = payloadArray.concat(buffer_uint8(COMMAND_SET));payloadArray = payloadArray.concat(buffer_int32(parseInt(id)));payloadArray = payloadArray.concat(buffer_int32(parseInt(prop_int32)));payloadArray = payloadArray.concat(buffer_uint8(prop_bool));}return payloadArray;}//以下是部分辅助函数
function buffer_uint8(value) {var uint8Array = new Uint8Array(1);var dv = new DataView(uint8Array.buffer, 0);dv.setUint8(0, value);return [].slice.call(uint8Array);
}
function buffer_int16(value) {var uint8Array = new Uint8Array(2);var dv = new DataView(uint8Array.buffer, 0);dv.setInt16(0, value);return [].slice.call(uint8Array);
}
function buffer_int32(value) {var uint8Array = new Uint8Array(4);var dv = new DataView(uint8Array.buffer, 0);dv.setInt32(0, value);return [].slice.call(uint8Array);
}
function buffer_float32(value) {var uint8Array = new Uint8Array(4);var dv = new DataView(uint8Array.buffer, 0);dv.setFloat32(0, value);return [].slice.call(uint8Array);
}

脚本是根据功能编写的,具体方法可以看传送门,脚本有不明白或需要帮助可以私信我,也可以在dtu群里问我(dtu群名片和在这里的网名一样)。

2,配置dtu

这次我们用到的topic和以前不同,上面给出的链接中有具体说明,看我们的产品,我们需要的是这两个topic

和以前配置方法一样,修改参数保存即可

3,测试上传

先发一个初始数据000320f2e30000000001(注意使用十六进制发送)

阿里云状态变更

上报一条新的000320f2e30000000500

状态立即更新

4,测试下发

找到运维监控,在线调试,我们模拟下发一条指令

设备端(注意:记得选择十六进制显示不然是乱码)

设置电源为1,发送

设备

5,总结

自定义透传可以灵活的使用单片机组织报文,通过阿里云脚本进行解析,减小了设备端压力,方便了开发。同时使用16进制报文极大的减小了流量开支,只需要以前十分之一甚至百分之一的流量,降低了成本。

dtu阿里云自定义透传相关推荐

  1. 树莓派摄像头拍照上传阿里云自定义OCR识别

    树莓派加按钮,实现每次按下按钮摄像头拍照上传OCR识别.本次使用的是自定义识别. 主函数 主要是拍照和自定义OCR两个板块 # -*- coding: utf-8 -*- ""&q ...

  2. 教你三分钟上手阿里云OOS上传操作

    教你三分钟上手阿里云OOS上传操作 1.注册登录 如果小伙伴需要进行使用阿里云oss操作,第一步我们得注册/登录阿里云 https://www.aliyun.com/,小编建议大家尽量使用支付宝登录, ...

  3. 阿里云oss上传svg等格式的文件,返回的路径打开后是下载而不是预览

    在做的一个项目,阿里云oss上传svg等格式的文件,返回的路径打开后是下载而不是预览.之后web同事跟产品说不好处理,换回了使用jpg格式的文件.但是最终这个问题都是要解决的,产品要求下期也要上传sv ...

  4. 阿里云自定义RAM策略之【对象存储服务(OSS)的权限】

    阿里云自定义RAM策略之[对象存储服务(OSS)的权限] 如果系统策略无法满足您的需求,您可以通过创建自定义策略实现精细化权限管理. 在网上查阅资料很少有针对OSS的自定义策略说法 场景:给运营人员使 ...

  5. Nginx 代理转发阿里云OSS上传的实现代码

    这篇文章主要介绍了Nginx 代理转发阿里云OSS上传的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 前言 因为小程序上传需要https,服务器https用的是 ...

  6. 阿里云自定义监控tomcat进程数

    阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置. 阿里提供了2个版本的自定义监控接口: 自定义监控SDK(python版) : ...

  7. 利用阿里云自定义镜像实现服务器数据/网站快速迁移

    一.通过实例创建自定义镜像 1.登录阿里云 ECS 管理控制台,在实例列表页面顶部,选择目标实例所在的地域.单击左侧导航栏中的 实例.找到需要的实例,单击列表最右侧的 更多 >> 磁盘和镜 ...

  8. 阿里云文件上传工具类

    文件实体类 @Data public class UploadFile {private String fileName;private String fileType;private long fi ...

  9. SpringBoot整合阿里云OSS上传文件

    一.需求分析 文件上传是一个非常常见的功能,就是通过IO流将文件写到另外一个地方,这个地方可以是项目下的某个文件夹里,或者是本地电脑某个盘下面,还可以是云服务OSS里面,这里就是我要讲到的OSS,我写 ...

  10. thinkPHP 阿里云OSS 上传文件、直接下载

    阿里云OSS 上传文件.直接下载 1. 安装OSS SDK composer require aliyuncs/oss-sdk-php 2. thinkPHP接口 public function up ...

最新文章

  1. CSS中关于margin的理解误区
  2. MIRO/MIR7有何差别
  3. 关于 Blazor Server Side 的一些杂项, 感想
  4. Oracle入门(十四.20)之创建DML触发器:第一部分
  5. 美国留学计算机 奖学金,美国留学 计算机专业奖学金申请解析
  6. MYSQL临时表创建索引
  7. CentOS 6 编译安装subversion-1.8.10+Apache2.4
  8. 人生永无止境的意思是什么_人生追求永无止境名言
  9. centos7.0KVM虚拟化
  10. 5G网络切片安全隔离机制与应用
  11. 关于PHP=5.5时密码哈希校验的使用案例
  12. 程序员根本不是稳定工作!
  13. 0XU天气上线 从纯粹的网址导航我们正在造纯粹的工具集
  14. PyImport_ImportModule
  15. 【2021年第三届全国高校计算机能力挑战赛】大数据应用赛
  16. 直方图规定化(直方图匹配)
  17. npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolve dependency
  18. 用python画小仓鼠教程_彩铅画教程:教你画小仓鼠
  19. 覆盖Laracon:在线会议会向内倾吗?
  20. 10以内的分解与组成怎么教_“10以内数的组成”训练方法

热门文章

  1. WebLogic安装教程
  2. matlab各种文件读写,Matlab的各种数据读取、文件读写等操作汇总
  3. Firefox配置更改导致B站视频加载失败(MEDIA SEGMENT下载错误)的某种情况
  4. stm32单片机驱动L298N模块
  5. CRC8算法的解读,以及在E2E通信保护的应用
  6. Java获取一个月每周星期一至星期日的日期
  7. 多选框的 全选 与 取消全选
  8. 计算机验证iq oq pq,验证、确认、鉴定过程、DQ、IQ、OQ、PQ这几个概念如何理解?...
  9. vue使用jsMind思维导图类库
  10. 凯恩帝绝对坐标清零_凯恩帝 K90T i 数控车床系统使用手册分享