概述
通过产品定义、编排引擎使用、流文件管理熟悉物联设备的整个接入过程。
本地编排引擎环境搭建
编排引擎工具下载
- 编排引擎下载(源码下载)
- 编排引擎运行
物联平台 - 测试环境
- 测试账号地址(开发者共用)
访问地址:http://iot.edge.flyrise.cn:7099/#/user/login
账号:test
密码:test1234
- 物联平台 - 测试环境访问设置
本地 host 文件增加映射 120.196.114.119 iot.edge.flyrise.cn
- 登录测试平台 - 注册本地编排引擎为边缘盒子
设备创建
MQTT认证配置
- 开发者如果使用的是飞企内网
直接进行设备启动激活,边缘盒子流文件会自动部署到边缘引擎中
- 开发者使用的是非飞企内网
官方标准”边缘盒子”流文件获取
全文替换内容:
${deviceId} =》 边缘盒子ID(edgebox01)
${tab_name} =》 边缘盒子名称(B1三楼网关盒子)
${mqttbroker_host} =》 固定内容(120.196.114.119)
${mqtt_broker_port} =》 固定内容(31884)
${mqtt_broker_clientid} =》 对应MQTT认证配置参数(edgebox01)
${mqtt_broker_username} =》 对应MQTT认证配置参数(edgebox01)
${mqtt_broker_password} =》 对应MQTT认证配置参数(edgebox01)
- 编排引擎导入”边缘盒子”流文件
- 流文件导入后点击部署
- 物联平台 - 测试环境 - 查看边缘盒子状态
产品开发
产品分析
产品 - 温湿度传感器
属性包含光温度、湿度两种属性
无控制功能
无告警事件
无特定标签
产品创建 - 温湿度传感器产品
- 标准产品查询(查询是否有符合当前设备的标准产品)
温度传感器标准产品,只有一个温度属性,因此需要创建新的产品,同时支持温度、湿度属性
创建”光照温湿度传感器(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 作者:管理员