基于阿里云物联网平台的设备之间传输十六进制数据

基于阿里云物联网平台的设备之间传输十六进制数据

1. 创建阿里云物联网产品
1.1 创建新的产品

登录阿里云 [阿里云-为了无法计算的价值 (aliyun.com)](https://www.aliyun.com/)
点击搜索框,搜索物联网平台

在这里插入图片描述

在这里插入图片描述

点击企业物联网平台,并进入控制台

在这里插入图片描述

在这里插入图片描述

点击 公共实例 -> 设备管理 -> 产品 -> 创建产品

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建参数如下图

在这里插入图片描述

1.2 为产品创建自定义topic

在这里插入图片描述

选择Topic类列表 -> 自定义Topic -> 定义Topic类

在这里插入图片描述

创建两个自定义Topic,分别用于发送数据和订阅数据,即云到设备和设备到云
在这里插入图片描述
在这里插入图片描述

下图框中为我们新建的Topic

在这里插入图片描述

1.3 创建设备

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建完设备后可在产品下看到下面的内容

在这里插入图片描述

2. 发送设备

发送设备可以是嵌入式端,也可以是阿里云物联网平台上的设备模拟器等,本文以Java构建了一个MQTT发送端,构建方式请参考:

https://blog.csdn.net/m0_67401270/article/details/126459764

https://blog.csdn.net/li371518473/article/details/118306572

  • 发送端数据处理代码如下:
// 字符串通过处理转换成0xAAAA01642710F1AF0A1F1CAB0102634E200E51E337E8AD02
// 实际发送的就是一组十六进制数0xAAAA01642710F1AF0A1F1CAB0102634E200E51E337E8AD02
// 以字符串的形式定义是为了方便查看
String content = "AA AA 01 64 27 10 F1 AF 0A 1F 1C AB 01 02 63 4E 20 0E 51 E3 37 E8 AD 02";
content = content.replace(" ", "");                // 去除空格
content = content.toUpperCase();                   // 全转大写
char[] chars = content.toCharArray();              // 转换成字符数组
int length = chars.length / 2;
// 将字符串先转换成整型数据
int[] realNums = new int[length];
for (int i = 0; i < length; i++) {
    realNums[i] = charToInt(chars[2 * i], chars[2 * i + 1]);
    System.out.print(Integer.toHexString(realNums[i]) + " ");  // 打印信息确认是否转换正确
}
byte[] sendBytes = intGetBytes(realNums);          // 将整型数据转换成字节数据用来发送
public static int charToInt(char c1, char c2) {
    String num = "0123456789ABCDEF";
    int highBits = num.indexOf(c1);
    int lowBits = num.indexOf(c2);

    return (highBits * 16 + lowBits);
}

public static byte[] intGetBytes(int[] arrays) {
    byte[] bytes = new byte[arrays.length];
    for (int i = 0; i < arrays.length; i++) {
        bytes[i] = (byte) (arrays[i] & 0xff);
    }
    return bytes;
}

设备端上传数据需订阅之前定义的自定义Topic / P r o d u c t K e y / {ProductKey}/ ProductKey/{deviceName}/user/post1

3. 接收设备

与发送端一样,接收端也采用JAVA构建一个MQTT接收端,具体构建方式参考如下网址:

[Paho-MQTT Java接入示例 (aliyun.com)](https://help.aliyun.com/document_detail/146631.html?scm=20140722.S_help%40%40文档%40%40146631._.ID_146631-RL_me域名 审核-LOC_main-OR_ser-V_2-P0_3797)

// 对其中的数据接收函数进行修改
public void messageArrived(String var1, MqttMessage var2) throws Exception {
    System.out.println("reply topic  : " + var1);
    // 通过追MqttMessage的源码发现,最原始的数据就是payload,其数据类型为byte[]
    byte[] dataBytes = var2.getPayload();
    for (int i = 0; i < dataBytes.length; i++) {
        // 将收到的byte数组转换成对应的无符号整数,并以十六进制字符串的形式进行打印,对比上传与下发的数据是否一致
        System.out.print(Integer.toHexString(Byte.toUnsignedInt(dataBytes[i])) + " ");
    }
}

接收端接收数据需订阅之前定义的自定义Topic / P r o d u c t K e y / {ProductKey}/ ProductKey/{deviceName}/user/set1

4. 云产品流转

在前面的内容中,我们已经创建了产品,以及上传数据与下发数据的设备,并创建了相应的客户端,在阿里云物联网平台上,我们想要实现不同设备之间的数据收发,还需要建立相应的云产品流转规则,具体步骤如下:

在这里插入图片描述

点击返回旧版后的界面如下:

在这里插入图片描述

创建新的规则

在这里插入图片描述

规则名称随意,数据格式选择二进制

在这里插入图片描述

查看新创建的规则,编写SQL,编写完毕后点击确认

在这里插入图片描述

在这里插入图片描述

在转发数据一栏添加操作,编写完毕后点击确认

在这里插入图片描述

在这里插入图片描述

返回上一级界面,启动规则

5. 效果演示
5.1 发送端

在这里插入图片描述

5.2 阿里云物联网平台日志

在这里插入图片描述

设备到云

在这里插入图片描述
在这里插入图片描述

规则引擎

在这里插入图片描述

云到设备

在这里插入图片描述

5.3 接收端

在这里插入图片描述

6. 总结

本文讲述了基于阿里云物联网平台的多设备之间实现十六进制数据的传输,主要应用在嵌入式设备中传输传感器数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值