MQTT自定义透传_DTU连接阿里云

这篇具有很好参考价值的文章主要介绍了MQTT自定义透传_DTU连接阿里云。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

阿里云物联网平台定义的标准数据格式为Alink JSON。对于低配置且资源受限或者对网络流量有要求的设备,不适合直接构造JSON数据与物联网平台通信,可将原数据透传到物联网平台。物联网平台提供数据解析功能,可以根据您提交的脚本,将数据在设备自定义格式和JSON格式之间转换。

自定义透传适合的场景为采用廉价单片机、功能比较弱的DTU方案,这些DTU对json这种格式解析可能比较费劲。

一、新建产品

1.新建产品

我们选择“自定义品类”,节点类型为“直连设备”,最重要的是数据格式一定要选择“透传/自定义”。

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

 2.添加功能

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

 3.编写解析脚本

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

 

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, 云端 下发属性控制指令 到设备端

/**
 * 将设备自定义topic数据转换为json格式数据, 设备上报数据到物联网平台时调用
 * 入参:topic   string 设备上报消息的topic
 * 入参:rawData byte[]数组 不能为空
 * 出参:jsonObj JSON对象 不能为空
 */
function transformPayload(topic, rawData) {
	var jsonObj = {};
	return jsonObj;
}   

/**
 * 将设备的自定义格式数据转换为Alink协议的数据,设备上报数据到物联网平台时调用
 * 入参:bytes byte[]数组 不能为空
 * 出参:jsonMap Alink JSON对象 不能为空
 */
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;
}

/**
 *  将Alink协议的数据转换为设备能识别的格式数据,物联网平台给设备下发数据时调用
 *  入参:json Alink JSON对象  不能为空
 *  出参:payloadArray byte[]数组      不能为空
 *
 */
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'];
            //按照自定义协议格式拼接 rawdata
            payloadArray = 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);
}

// 以下为脚本模版,您可以基于以下模版进行脚本编写

/**
 * 将设备自定义topic数据转换为json格式数据, 设备上报数据到物联网平台时调用
 * 入参:topic   string 设备上报消息的topic
 * 入参:rawData byte[]数组 不能为空
 * 出参:jsonObj JSON对象 不能为空
 */
/* function transformPayload(topic, rawData) {
    var jsonObj = {};
    return jsonObj;
} */

/**
 * 将设备的自定义格式数据转换为Alink协议的数据,设备上报数据到物联网平台时调用
 * 入参:rawData byte[]数组 不能为空
 * 出参:jsonObj Alink JSON对象 不能为空
 */
/* function rawDataToProtocol(rawData) {
    var jsonObj = {};
    return jsonObj;
} */

/**
 *  将Alink协议的数据转换为设备能识别的格式数据,物联网平台给设备下发数据时调用
 *  入参:jsonObj Alink JSON对象  不能为空
 *  出参:rawData byte[]数组      不能为空
 *
 */
/* function protocolToRawData(jsonObj) {
    var rawdata = [];
    return rawdata;
}
 */

二、配置dtu

如下图所示记录好平台的如下几个连接参数

ProductKey

DeviceName

DeviceSecret

mqttHostUrl

port

订阅Topic

发布Topic

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网  

我们要用到的topic为物模型通信Topic,打开产品详情,并选择Topic类列表-物模型通信Topic,我们需要的是下面红框内的这两个topic

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

 

配置DUT三要素及通信参数

按如下次序操作设置DTU,并将上面记录的通信参数对应填入。

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

 

三、测试上传

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

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

 阿里云状态变更

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

 上报一条新的000320f2e30000000500

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

 状态立即更新

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

 

四、测试下发

找到监控运维,在线调试,我们在属性调试内设置好属性数据然后点击“设置”下发一条指令

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

 

设备端收到的数据如下(注意:记得选择十六进制显示不然是乱码)

阿里云tcp下发指令dtu,物联网,阿里云,云计算,物联网

 本文参考自:dtu阿里云自定义透传 (openluat.com)文章来源地址https://www.toymoban.com/news/detail-779848.html

到了这里,关于MQTT自定义透传_DTU连接阿里云的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MQTT】MQTT协议与指令下发;MQTT与Kafka比较

    相关文章: (一)MQTT协议与指令下发;MQTT与Kafka比较 (二)用MQTT在Spring Boot项目中实现异步消息通信 详细讲讲MQTT协议 当涉及到 物联网 和 设备通信 时,MQTT(Message Queuing Telemetry Transport)是一种轻量级、开放、灵活的协议。MQTT最初是为低带宽、不稳定网络环境下的传感器

    2024年02月02日
    浏览(29)
  • DTU和MQTT网关优缺点

    目前市面上有两种设备实现Modbus转MQTT网关。网关式、DTU式。 钡铼技术网关内部进行转换 网关式 优点: 1、通讯模块和MCU分开,通讯模块只做通讯功能,协议转换有单独主控MCU,“硬转换”; 2、数据点是通过映射到主控ARM芯片,配置更方便,点表多更加无压力; 3、网关式,

    2024年02月07日
    浏览(29)
  • MQTT.fx1.7连接阿里云mqtt

    1. 登录进入阿里云mqtt控制台 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 2. 进入自己的实例,左侧菜单有产品和设备选项   3. 创建产品 ==》 创建设备 【过程相对清晰,略过】 4. 进入设备列表页,点击具体设备,查看详情 5. 如下图,有个mqtt连接参数,点开后

    2024年02月16日
    浏览(33)
  • ESP32无法连接阿里云,MQTT通讯失败

    小白一枚,最近在学习物联网,不曾想倒在门槛上。 找了个ESP32控制小灯的教程,根据教程一步一步做的,可最后就是无法激活阿里云设备,云端运行日志不停刷460代码,MQTT消息和设备信息对不上,找不到原因。 恳请大佬帮忙解惑。         代码: #include WiFi.h #include PubS

    2024年02月06日
    浏览(30)
  • java连接mqtt(tcp、ssl单双向)

    mqtt服务器的选择与安装 emqx拥有界面,可视化比较好,但是windows下安装有问题,后面采用虚拟机安装没问题 mosquitto:windows下安装简单,使用也简单,但是功能比较单一,只能通过命令操作,无界面 2.mosquitto的安装: windows下搭建mqtt服务器 3.java相关坐标 4.创建客户端:发布客

    2024年04月29日
    浏览(42)
  • ESP-01S烧录MQTT固件连接阿里云

    用到的所有烧录攻击和固件都放百度云链接了 提取码:qwlo 淘宝上10块钱左右一个CH340C下载烧录器ESP8266的就可以了。 连接好硬件打开ESPFlashDownloadTool_v3.6.2.2.exe软件(记得放到英文目录下不然可能打不开)  选择第一个    com口选择你自己的,波特率115200,然后点start,等待下

    2024年02月01日
    浏览(36)
  • ESP8266连接阿里云通过MQTT上报状态属性

    1、新建一个产品 2、添加物模型,物模型用于显示上报的消息的 编辑草稿,也就是添加属性  可以选择标准的和自定义的,我这里选择自定义的 设置物模型功能 我这里添加了两个,完成后发布上线 3、到设备中添加设备,用于ESP8266连接  添加成功后,可以看到  我这里多添

    2023年04月09日
    浏览(32)
  • MQTT连接阿里云物联网上报物模型数据

    目录 1. 创建产品(物联网平台 - 产品 - 创建产品) 2. 为产品添加设备 3. 添加物模型 4. mqtt.fx连接测试 5. 调试物模型 6. 使用mqtt.fx上报温度数据  我这里再新建一个名为 \\\"Test01\\\" 的产品作为演示 选择 \\\"添加自定义功能\\\" 添加 温度 属性: 创建好后,点击 发布上线 MQTT.fx是一款基

    2024年04月12日
    浏览(36)
  • Android MQTT连接阿里云使用Json解析数据

    这里有两种方法: 这里先介绍第一种方法: 切换到Android 目录: 按照如下图,添加依赖即可: 第二种方法: 打开Android Studio 然后切换到Android 目录找到Lib文件夹,将MQTT的JAR包复制进去即可。 然后点击project目录然后将MQTT JAR包导进去 添加完成之后作为库导入工程中 在MainA

    2024年02月03日
    浏览(31)
  • esp8266(MQTT固件)+串口助手连接阿里云服务测试

    esp8266烧录MQTT固件 阿里云创建产品步骤 登录阿里云,没有阿里云账号的需自行注册。 创建产品 在物联网平台下,点击 设备管理 - 产品 -创建产品 产品名称根据自身需求填写,选择自定义品类,选择直连设备,连网方式选wifi,数据格式选JSON格式(配置可根据自己需求选择)

    2023年04月08日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包