设备上报二进制数据在云端配置JS脚本解析

1. 阿里云IoT控制台配置



1.1 开通阿里云IoT物联网套件


IoT物联网套件官网地址

1.2 创建高级版产品,选择数据透传





1.3 添加产品属性定义




属性名

标识符

数据类型

温度

temperature

float

湿度

humidity

float




1.4 定义payload二进制格式




1位

2-5位

6-9位

9-13位

00

5b0232e1

41200000

42b00000

command

requestId

temperature

humidity


2.设备端代码



2.1 package.json引入sdk




2.2 应用程序代码


  1. /**
  2. * node iot_raw_data.js
  3. */
  4. const mqtt = require('aliyun-iot-mqtt');
  5. const COMMAND_REPORT = 0x00;
  6. //设备属性
  7. const options = {
  8.     productKey: "替换自己productKey",
  9.     deviceName: "替换自己deviceName",
  10.     deviceSecret: "替换自己deviceSecret",
  11.     regionId: "cn-shanghai"
  12. };
  13. //建立连接
  14. const client = mqtt.getAliyunIotMqttClient(options);
  15. //属性上报的Topic
  16. const topic = `/sys/${options.productKey}/${options.deviceName}/thing/model/up_raw`;
  17. setInterval(function() {
  18.     //发布数据到topic
  19.     client.publish(topic, getPostData());
  20. }, 5 * 1000);
  21. function getPostData() {
  22.     var temperature = Math.floor((Math.random() * 20) + 10)
  23.     var humidity = Math.floor((Math.random() * 80) + 20)
  24.     var payloadArray = [];
  25.     /**
  26.      * 按照自定义协议格式拼接 raw data
  27.      * 00|5b0232e1|41200000|42b00000
  28.      * command(1)|requestId(4)|temperature(4)|humidity(4)
  29.      */
  30.     //command字段
  31.     payloadArray = payloadArray.concat(buffer_uint8(COMMAND_REPORT));
  32.     // id
  33.     payloadArray = payloadArray.concat(buffer_int32(parseInt(new Date().getTime() / 1000)));
  34.     // 属性'temperature'的值
  35.     payloadArray = payloadArray.concat(buffer_float32(temperature));
  36.     // 属性'humidity'的值
  37.     payloadArray = payloadArray.concat(buffer_float32(humidity));
  38.     return new Buffer(payloadArray);
  39. }
  40. //uint8
  41. function buffer_uint8(value) {
  42.     var uint8Array = new Uint8Array(1);
  43.     var dv = new DataView(uint8Array.buffer, 0);
  44.     dv.setUint8(0, value);
  45.     return [].slice.call(uint8Array);
  46. }
  47. //int32
  48. function buffer_int32(value) {
  49.     var uint8Array = new Uint8Array(4);
  50.     var dv = new DataView(uint8Array.buffer, 0);
  51.     dv.setInt32(0, value);
  52.     return [].slice.call(uint8Array);
  53. }
  54. //float32
  55. function buffer_float32(value) {
  56.     var uint8Array = new Uint8Array(4);
  57.     var dv = new DataView(uint8Array.buffer, 0);
  58.     dv.setFloat32(0, value);
  59.     return [].slice.call(uint8Array);
  60. }



3. 云端数据解析脚本配置


高级版产品详情>数据解析


完整JS脚本如下:




4. 运行


启动设备模拟程序:


IoT控制台 产品详情-> 在线调试 观察上报数据:

设备详情->运行状态


5. 项目源代码



http://click.aliyun.com/m/1000003798/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值