概述

通过产品定义、编排引擎使用、流文件管理熟悉物联设备的整个接入过程。

本地编排引擎环境搭建

编排引擎工具下载

  • 编排引擎下载(源码下载)

  • 编排引擎运行

物联平台 - 测试环境

  • 测试账号地址(开发者共用)
    访问地址:http://iot.edge.flyrise.cn:7099/#/user/login
    账号:test
    密码:test1234

  • 物联平台 - 测试环境访问设置

本地 host 文件增加映射 120.196.114.119 iot.edge.flyrise.cn

  • 登录测试平台 - 注册本地编排引擎为边缘盒子

设备创建

MQTT认证配置

  • 开发者如果使用的是飞企内网

直接进行设备启动激活,边缘盒子流文件会自动部署到边缘引擎中

  • 开发者使用的是非飞企内网
  1. 官方标准”边缘盒子”流文件获取

    “边缘盒子”流文件

    全文替换内容:
    ${deviceId} =》 边缘盒子ID(edgebox01)
    ${tab_name} =》 边缘盒子名称(B1三楼网关盒子)
    ${mqtt
    broker_host} =》 固定内容(120.196.114.119)
    ${mqtt_broker_port} =》 固定内容(31884)
    ${mqtt_broker_clientid} =》 对应MQTT认证配置参数(edgebox01)
    ${mqtt_broker_username} =》 对应MQTT认证配置参数(edgebox01)
    ${mqtt_broker_password} =》 对应MQTT认证配置参数(edgebox01)

  1. 编排引擎导入”边缘盒子”流文件

  1. 流文件导入后点击部署

  • 物联平台 - 测试环境 - 查看边缘盒子状态

产品开发

产品分析

  • 产品 - 温湿度传感器

  • 属性包含光温度、湿度两种属性

  • 无控制功能

  • 无告警事件

  • 无特定标签

产品创建 - 温湿度传感器产品

  • 标准产品查询(查询是否有符合当前设备的标准产品)

  • 温度传感器标准产品,只有一个温度属性,因此需要创建新的产品,同时支持温度、湿度属性

  • 创建”光照温湿度传感器(demo)” 产品,产品创建必须选择一个标准产品作为基础物模型,这里我们选择官方的标准产品”温度传感器”,协议使用官方标准协议,传输协议使用MQTT

  • 设置”光照温湿度传感器(demo)”物模型,因为标准产品”温度传感器”已经提供了温度属性,因此我们只需要扩展增加湿度属性

  • “光照温湿度传感器(demo)”产品发布申请

  • “光照温湿度传感器(demo)”产品发布审核通过

添加设备 - 温湿度传感器(demo)

  • 添加设备,ID、名称系统内不能重复,产品选择刚才创建的”温湿度传感器(demo)”产品,其他属性为空即可

  • 设备绑定网关

  • 设备激活启动

设备流文件编排

  • 添加新流程

  • 修改流程名称

  • 流程内容

  • 定时任务

  • 添加数据上报函数

  • 消息发布

  • 平台设备状态查看

流文件管理

  • 流文件导出

  • 流文件创建

流文件示例

[
  {
    "id": "a7dc330937a81b7d",
    "type": "inject",
    "z": "${deviceId}",
    "name": "采集任务",
    "props": [
      {
        "p": "edgeboxId",
        "v": "${edgeboxId}",
        "vt": "str"
      },
      {
        "p": "deviceId",
        "v": "${deviceId}",
        "vt": "str"
      },
      {
        "p": "unitid",
        "v": "${unitid}",
        "vt": "str"
      }
    ],
    "repeat": "5",
    "crontab": "",
    "once": false,
    "onceDelay": 0.1,
    "topic": "",
    "x": 150,
    "y": 100,
    "wires": [
      [
        "b3dfdd522313a643"
      ]
    ]
  },
  {
    "id": "b3dfdd522313a643",
    "type": "function",
    "z": "${deviceId}",
    "name": "采集指令组装",
    "func": "msg.payload = {\n    'fc': 3,\n    'unitid': msg.unitid,\n    'address': 0,\n    'quantity': 7\n};\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 320,
    "y": 100,
    "wires": [
      [
        "1aea4aa514065ddb"
      ]
    ]
  },
  {
    "id": "1aea4aa514065ddb",
    "type": "modbus-flex-getter",
    "z": "${deviceId}",
    "name": "信息采集",
    "showStatusActivities": true,
    "showErrors": true,
    "logIOActivities": false,
    "server": "8f575d98f4f32633",
    "useIOFile": false,
    "ioFile": "",
    "useIOForPayload": false,
    "emptyMsgOnFail": true,
    "keepMsgProperties": true,
    "x": 480,
    "y": 100,
    "wires": [
      [
        "28c9ba29c7a68f34"
      ],
      [
        "28c9ba29c7a68f34",
        "96c36516f90d8ac8"
      ]
    ]
  },
  {
    "id": "28c9ba29c7a68f34",
    "type": "modbus-response",
    "z": "${deviceId}",
    "name": "",
    "registerShowMax": 20,
    "x": 670,
    "y": 100,
    "wires": []
  },
  {
    "id": "2cc45d7385ea9f50",
    "type": "function",
    "z": "${deviceId}",
    "name": "上报指令组装",
    "func": "var data = msg.payload.data;\nvar payload = {\n    deviceId:msg.deviceId,\n    properties:{\n        Illuminance: data[6],\n        temperature: data[1]/10,\n        humidity: data[0]/10\n    }\n}\n\n// 全局变量设置,用于避免重复上报\nvar flow_str = JSON.stringify(payload);\nif(flow.get(msg.deviceId) == flow_str){\n    return null;\n}\nflow.set(msg.deviceId,flow_str);\n// 全局变量设置,用于设备数量、在线状态监测\nglobal.set(msg.deviceId,{device_state:true});\n\nmsg.payload = payload;\nmsg.topic = \"/edgebox/\"+msg.edgeboxId+\"/child/\"+msg.deviceId+\"/properties/report\";\n\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 840,
    "y": 140,
    "wires": [
      [
        "e63cd7de8db6535c"
      ]
    ]
  },
  {
    "id": "e63cd7de8db6535c",
    "type": "mqtt out",
    "z": "${deviceId}",
    "name": "消息发布",
    "topic": "",
    "qos": "0",
    "retain": "",
    "respTopic": "",
    "contentType": "",
    "userProps": "",
    "correl": "",
    "expiry": "",
    "broker": "${edgeboxId}_mqtt",
    "x": 1000,
    "y": 160,
    "wires": []
  },
  {
    "id": "96c36516f90d8ac8",
    "type": "function",
    "z": "${deviceId}",
    "name": "终端连接状态",
    "func": "// 是否连接异常\nif(msg.error!=null){\n    // 离线通知\n    return  [null,msg];\n}\n\n// 数据上报\nreturn  [msg,null];",
    "outputs": 2,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 660,
    "y": 160,
    "wires": [
      [
        "2cc45d7385ea9f50"
      ],
      [
        "d9245c9f4dc1a631"
      ]
    ]
  },
  {
    "id": "d9245c9f4dc1a631",
    "type": "function",
    "z": "${deviceId}",
    "name": "离线指令组装",
    "func": "var payload = {\n    deviceId:msg.deviceId\n};\n\n// 全局变量设置,用于避免重复上报\nvar flow_str = JSON.stringify(payload);\nif(flow.get(msg.deviceId) == flow_str){\n    return null;\n}\nflow.set(msg.deviceId,flow_str);\n// 全局变量设置,用于设备数量、在线状态监测\nglobal.set(msg.deviceId,{device_state:false});\n\nmsg.payload = payload;\nmsg.topic = \"/edgebox/\"+msg.edgeboxId+\"/child/\"+msg.deviceId+\"/offline\";\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 840,
    "y": 180,
    "wires": [
      [
        "e63cd7de8db6535c"
      ]
    ]
  },
  {
    "id": "8f575d98f4f32633",
    "type": "modbus-client",
    "name": "ModbusRTU",
    "clienttype": "simpleser",
    "bufferCommands": true,
    "stateLogEnabled": true,
    "queueLogEnabled": true,
    "tcpHost": "127.0.0.1",
    "tcpPort": "502",
    "tcpType": "DEFAULT",
    "serialPort": "COM3",
    "serialType": "RTU",
    "serialBaudrate": "4800",
    "serialDatabits": "8",
    "serialStopbits": "1",
    "serialParity": "none",
    "serialConnectionDelay": "100",
    "serialAsciiResponseStartDelimiter": "0x3A",
    "unit_id": "1",
    "commandDelay": "500",
    "clientTimeout": "1000",
    "reconnectOnTimeout": true,
    "reconnectTimeout": "2000",
    "parallelUnitIdsAllowed": true
  }
]
  • 流文件发布审核

流文件使用

  • 边缘盒子添加 - 选择流文件

  • 边缘盒子参数配置

  • 边缘盒子激活

  • 边缘盒子流文件(成功部署)

  • 边缘盒子状态查看

  • 设备添加

  • 设备绑定网关

  • 设备激活启动

  • 设备流文件(成功部署)

  • 设备状态查看

文档更新时间: 2022-10-21 17:27   作者:管理员