阿里云物联网消息透传设备端payLoad设置问题

概述

由于低配置且资源受限,或者对网络流量有要求的设备,不适合直接构造JSON数据与物联网平台通信,可将原数据透传到物联网平台。本文主要针对文档中未对设备端payLoad的设置进行介绍,初次使用容易出错,结合官方示例对payLoad对象的处理进行介绍。

测试步骤

1、参考官方示例进行设置测试。

2、物理型的定义截图;
_

3、测试验证

0x00002233441232013fa00000

_

4、发送端payLoad处理,注意传入的是byte[]对象,不是String对象。

String hexString = "00002233441232013fa00000";
byte[] payLoad = hexToByteArray(hexString);
request.payloadObj = payLoad;
  • hexToByteArray方法实现:
    /**
     * hex字符串转byte数组
     * @param inHex 待转换的Hex字符串
     * @return  转换后的byte数组结果
     */
    public static byte[] hexToByteArray(String inHex){
        int hexlen = inHex.length();
        byte[] result;
        if (hexlen % 2 == 1){
            //奇数
            hexlen++;
            result = new byte[(hexlen/2)];
            inHex="0"+inHex;
        }else {
            //偶数
            result = new byte[(hexlen/2)];
        }
        int j=0;
        for (int i = 0; i < hexlen; i+=2){
            result[j]=hexToByte(inHex.substring(i,i+2));
            j++;
        }
        return result;
    }

    /**
     * Hex字符串转byte
     * @param inHex 待转换的Hex字符串
     * @return  转换后的byte
     */
    public static byte hexToByte(String inHex) {
        return (byte) Integer.parseInt(inHex, 16);
    }

5、设备运行状态:

_

参考链接

数据解析使用示例
Java 十六进制(Hex)与byte数组之间的转换

猜你喜欢

转载自yq.aliyun.com/articles/706989