通过MQTT协议连接设备

MQTT是一种为物联网(一定程度上)应用开发的协议。它解决的是物联网的传感器基于互联网的数据传输(低带宽,不可靠网络传输连续实时数据),订阅/发布使用机制也非常灵活。

  • 实现MQTT协议需要:客户端和服务器端

  • MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中消息的发布和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者

image-20210701112643127

  1. 选择通用协议中的MQTT协议

    类别 内容 说明
    一般 名称,描述,是否启用 输入连接的名称和描述,默认创建时直接启用
    连接性 主机名,端口号,超时,MQTT的topic和clientID,以及 输入主机ip地址和端口号和选择数据协议
    高级属性 用户名和密码(如有设置) 具体可参见不同协议连接文档
  2. 输入对应的参数
    (1)解析所需要的参数类型要求为基本类型,或者对象数组类型。参数个数必须与要解析脚本形参的个数对应。
    (2)解析返回的结果默认为Json字符串,需要前端在脚本中进行转义。

  3. 点击自定义协议,需要输入脚本语言
    (1)解析所需要的脚本必须遵循ES6以下版本语法,后端解析脚本,只支持部分es6的语法。
    (2)解析所需要的脚本必须保证满足一定的业务处理,最终处理完成只返回一个结果。
    (3)解析脚本类型中的函数名称默认使用parse 函数名称,并且函数创建以及变量的创建,必须遵循ES6以下语法,解析JS脚本暂时不支持JS中的LET关键字,函数类型例如:function parse(a,b);
    (4)解析函数尽量不能使用递归,时间复杂度较大的类型。

  1. 复制mqtt的输入数据,点击执行可对脚本进行调试,完成后点击保存。

  2. 点击连接测试,成功后点击提交。

示例脚本:

// 这是一个简单的JavaScript脚本。在这个脚本中,我们将定义一个函数,将获取的msg转换为iot可以处理的业务数据。
// 定义一个函数,接受msg
function process(msg) {
  const data = JSON.parse(msg);

  const results = [];
  // 属性标识符
  let equipmentName = '';
  // 上传数据类型
  // 1=收新酒
  // 2=盘勾出库
  // 3=盘勾入库
  // 4=勾兑出库
  // 5=勾兑入库
  // 6=腾转出库
  // 7=腾转入库/罐区
  // 8=发包装
  const type = data.type;
  switch (type) {
      case 1: equipmentName = 'NewWine';break;
      case 2: equipmentName = 'HookOutBound';break;
      case 3: equipmentName = 'HookInBound';break;
      case 4: equipmentName = 'BlendOutBound';break;
      case 5: equipmentName = 'BlendInBound';break;
      case 6: equipmentName = 'MoveOutBound';break;
      case 7: equipmentName = 'MoveInBound';break;
      case 8: equipmentName = 'PackSent';break;
      default: break;
  }
  delete data.type;
  const fieldData = {
  		tcode: 'YH',  // 设备编码
  		fieldName: equipmentName,  // 属性标识符
  		value: data,   // 点位值
  		origin: equipmentName
  };

	results.push(fieldData);

  return results
}
2026-01-21
0