NodeRED学习(七)MQTT/Modbus网关

这篇具有很好参考价值的文章主要介绍了NodeRED学习(七)MQTT/Modbus网关。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简述:

用Node-RED 搭建一个MQTT网关,网关通过Modbus总线连接一个水位传感器和一个温度传感器,采集水位和温度数据,再通过MQTT客户端把水位和温度信息发布到MQTT代理。

网关:

协议转化:网关可以通过Modbus总线把多个485串口的传感器,以轮询的方式采集,通过MQTT协议发布给信息平台。
信息汇聚:网关可以把多个传感器数据,聚合为一个对象,为数据附加语义描述,使信息具有结构化,易可识别。
虚拟串口软件VSPD配置两对虚拟串口:
nodered配置mqtt,物联网,物联网
Modbus Slave模拟两个传感器:
nodered配置mqtt,物联网,物联网
nodered配置mqtt,物联网,物联网

配置MQTT代理:
nodered配置mqtt,物联网,物联网

通过Modbus分别采集水箱的水位和温度,合并为水箱参数,由MQTT客户端发布:
nodered配置mqtt,物联网,物联网
nodered配置mqtt,物联网,物联网

添加注入(inject)节点和延迟(delay)节点配置轮询:
nodered配置mqtt,物联网,物联网
nodered配置mqtt,物联网,物联网

添加函数节点,为消息添加主题:
nodered配置mqtt,物联网,物联网
nodered配置mqtt,物联网,物联网文章来源地址https://www.toymoban.com/news/detail-700909.html

[
    {
        "id": "47697d9d8a564c16",
        "type": "tab",
        "label": "流程 2",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "67b13033ddc0d223",
        "type": "modbus-getter",
        "z": "47697d9d8a564c16",
        "name": "水位",
        "showStatusActivities": true,
        "showErrors": false,
        "logIOActivities": false,
        "unitid": "1",
        "dataType": "HoldingRegister",
        "adr": "0",
        "quantity": "1",
        "server": "ce08db4b7d9f20f0",
        "useIOFile": false,
        "ioFile": "",
        "useIOForPayload": false,
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "x": 310,
        "y": 180,
        "wires": [
            [
                "d4cba5fe6569d8c3"
            ],
            []
        ]
    },
    {
        "id": "844ad47ff9474f12",
        "type": "modbus-getter",
        "z": "47697d9d8a564c16",
        "name": "水温",
        "showStatusActivities": true,
        "showErrors": false,
        "logIOActivities": false,
        "unitid": "1",
        "dataType": "HoldingRegister",
        "adr": "0",
        "quantity": "1",
        "server": "c3bdb25d487433e4",
        "useIOFile": false,
        "ioFile": "",
        "useIOForPayload": false,
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "x": 350,
        "y": 280,
        "wires": [
            [
                "06514971ca3ad6ed"
            ],
            []
        ]
    },
    {
        "id": "36e7a1c989d23266",
        "type": "inject",
        "z": "47697d9d8a564c16",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "5",
        "crontab": "",
        "once": true,
        "onceDelay": "10",
        "topic": "",
        "payload": "",
        "payloadType": "str",
        "x": 150,
        "y": 220,
        "wires": [
            [
                "67b13033ddc0d223",
                "cb911d4fa59973ac"
            ]
        ]
    },
    {
        "id": "16aa2453141586b1",
        "type": "debug",
        "z": "47697d9d8a564c16",
        "name": "debug 4",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 420,
        "y": 380,
        "wires": []
    },
    {
        "id": "cb911d4fa59973ac",
        "type": "delay",
        "z": "47697d9d8a564c16",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 210,
        "y": 280,
        "wires": [
            [
                "844ad47ff9474f12"
            ]
        ]
    },
    {
        "id": "d4cba5fe6569d8c3",
        "type": "function",
        "z": "47697d9d8a564c16",
        "name": "水位",
        "func": "msg={topic:\"WaterLevel\",payload:msg.payload[0]}\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 450,
        "y": 180,
        "wires": [
            [
                "47bd8c57dc676aeb"
            ]
        ]
    },
    {
        "id": "06514971ca3ad6ed",
        "type": "function",
        "z": "47697d9d8a564c16",
        "name": "水温",
        "func": "msg={topic:\"WaterTemp\",payload:msg.payload[0],complete:true}\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 470,
        "y": 280,
        "wires": [
            [
                "47bd8c57dc676aeb"
            ]
        ]
    },
    {
        "id": "2229838c3375166e",
        "type": "mqtt out",
        "z": "47697d9d8a564c16",
        "name": "",
        "topic": "WaterTank",
        "qos": "0",
        "retain": "false",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "0222eb30f00ea5a5",
        "x": 750,
        "y": 220,
        "wires": []
    },
    {
        "id": "d731c49d3fbee150",
        "type": "aedes broker",
        "z": "47697d9d8a564c16",
        "name": "",
        "mqtt_port": 1883,
        "mqtt_ws_bind": "port",
        "mqtt_ws_port": "",
        "mqtt_ws_path": "",
        "cert": "",
        "key": "",
        "certname": "",
        "keyname": "",
        "dburl": "",
        "usetls": false,
        "x": 210,
        "y": 80,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "5323672ec49be0fd",
        "type": "mqtt in",
        "z": "47697d9d8a564c16",
        "name": "",
        "topic": "WaterTank",
        "qos": "0",
        "datatype": "auto-detect",
        "broker": "0222eb30f00ea5a5",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 140,
        "y": 380,
        "wires": [
            [
                "16aa2453141586b1"
            ]
        ]
    },
    {
        "id": "47bd8c57dc676aeb",
        "type": "join",
        "z": "47697d9d8a564c16",
        "name": "",
        "mode": "custom",
        "build": "object",
        "property": "payload",
        "propertyType": "msg",
        "key": "topic",
        "joiner": "\\n",
        "joinerType": "str",
        "accumulate": true,
        "timeout": "",
        "count": "",
        "reduceRight": false,
        "reduceExp": "",
        "reduceInit": "",
        "reduceInitType": "",
        "reduceFixup": "",
        "x": 610,
        "y": 220,
        "wires": [
            [
                "2229838c3375166e"
            ]
        ]
    },
    {
        "id": "7b17b1f6c871629b",
        "type": "comment",
        "z": "47697d9d8a564c16",
        "name": "1. 用于演示的MQTT代理",
        "info": "",
        "x": 190,
        "y": 40,
        "wires": []
    },
    {
        "id": "0a22dc0691ff8231",
        "type": "comment",
        "z": "47697d9d8a564c16",
        "name": "2. 通过Modbus分别采集水箱的水位和温度,合并为水箱参数,由MQTT客户端发布",
        "info": "",
        "x": 370,
        "y": 140,
        "wires": []
    },
    {
        "id": "c3e9a93a84b8059c",
        "type": "comment",
        "z": "47697d9d8a564c16",
        "name": "3. 订阅水箱参数",
        "info": "",
        "x": 160,
        "y": 340,
        "wires": []
    },
    {
        "id": "ce08db4b7d9f20f0",
        "type": "modbus-client",
        "name": "",
        "clienttype": "simpleser",
        "bufferCommands": true,
        "stateLogEnabled": false,
        "queueLogEnabled": false,
        "failureLogEnabled": true,
        "tcpHost": "127.0.0.1",
        "tcpPort": "502",
        "tcpType": "DEFAULT",
        "serialPort": "com4",
        "serialType": "RTU",
        "serialBaudrate": "9600",
        "serialDatabits": "8",
        "serialStopbits": "1",
        "serialParity": "none",
        "serialConnectionDelay": "100",
        "serialAsciiResponseStartDelimiter": "0x3A",
        "unit_id": 1,
        "commandDelay": 1,
        "clientTimeout": 1000,
        "reconnectOnTimeout": true,
        "reconnectTimeout": 2000,
        "parallelUnitIdsAllowed": true
    },
    {
        "id": "c3bdb25d487433e4",
        "type": "modbus-client",
        "name": "",
        "clienttype": "simpleser",
        "bufferCommands": true,
        "stateLogEnabled": false,
        "queueLogEnabled": false,
        "failureLogEnabled": true,
        "tcpHost": "127.0.0.1",
        "tcpPort": "502",
        "tcpType": "DEFAULT",
        "serialPort": "com6",
        "serialType": "RTU",
        "serialBaudrate": "9600",
        "serialDatabits": "8",
        "serialStopbits": "1",
        "serialParity": "none",
        "serialConnectionDelay": "100",
        "serialAsciiResponseStartDelimiter": "0x3A",
        "unit_id": "1",
        "commandDelay": "1",
        "clientTimeout": "1000",
        "reconnectOnTimeout": true,
        "reconnectTimeout": "2000",
        "parallelUnitIdsAllowed": true
    },
    {
        "id": "0222eb30f00ea5a5",
        "type": "mqtt-broker",
        "name": "",
        "broker": "localhost",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]

到了这里,关于NodeRED学习(七)MQTT/Modbus网关的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包