• NodeRED中建立TCP服务端和客户端


    场景

    Node-RED简介与Windows上安装、启动和运行示例:

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/121884766

    Node-RED怎样导出导入流程为json文件:

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/124130985

    Node-RED中可以使用tcp in 和 tcp out节点来建立TCP服务端以及TCP客户端。

    注:

    博客:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    1、建立服务端

    编辑tcp in节点,类型中选择监听,端口输入1025

    输出选择字符流的字符串,分割符号是\m

    2、switch节点,新增两条规则,分别判断msg.payload属性值是temp还是humi

    3、两个change节点,指定msg.payload属性值分别为20和70的模拟值。

    4、template节点,在msg.payload属性值的信息后面加上\n

    5、tcp out节点,在类型选择回应TCP

    6、TCP客户端布局

    7、tcp in节点,在类型选择连接,端口输入1025,输出指定字串流的字符串,分割符号\n

    8、function节点,目的是中断流程,避免之后的tcp out节点再输出msg.payload属性值,删除function节点的return msg代码

    9、template节点,修改为{{payload}}输出值,别忘了按Enter回车键,才能在字符串后面加上\n

    10、json数据

    [
        {
            "id": "f4a4d8eab7935bc8",
            "type": "tab",
            "label": "流程 3",
            "disabled": false,
            "info": "",
            "env": []
        },
        {
            "id": "c428312d1f6165d1",
            "type": "mqtt-broker",
            "name": "mqtt",
            "broker": "127.0.0.1",
            "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": {},
            "sessionExpiry": ""
        },
        {
            "id": "51eee50b4ec9422f",
            "type": "ui_group",
            "name": "dashboardDemo",
            "tab": "29ae4c620f43ee0d",
            "order": 1,
            "disp": true,
            "width": "6",
            "collapse": false,
            "className": ""
        },
        {
            "id": "29ae4c620f43ee0d",
            "type": "ui_tab",
            "name": "Home",
            "icon": "dashboard",
            "disabled": false,
            "hidden": false
        },
        {
            "id": "a506c767a5c1edbd",
            "type": "ui_base",
            "theme": {
                "name": "theme-light",
                "lightTheme": {
                    "default": "#0094CE",
                    "baseColor": "#0094CE",
                    "baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif",
                    "edited": true,
                    "reset": false
                },
                "darkTheme": {
                    "default": "#097479",
                    "baseColor": "#097479",
                    "baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif",
                    "edited": false
                },
                "customTheme": {
                    "name": "Untitled Theme 1",
                    "default": "#4B7930",
                    "baseColor": "#4B7930",
                    "baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"
                },
                "themeState": {
                    "base-color": {
                        "default": "#0094CE",
                        "value": "#0094CE",
                        "edited": false
                    },
                    "page-titlebar-backgroundColor": {
                        "value": "#0094CE",
                        "edited": false
                    },
                    "page-backgroundColor": {
                        "value": "#fafafa",
                        "edited": false
                    },
                    "page-sidebar-backgroundColor": {
                        "value": "#ffffff",
                        "edited": false
                    },
                    "group-textColor": {
                        "value": "#1bbfff",
                        "edited": false
                    },
                    "group-borderColor": {
                        "value": "#ffffff",
                        "edited": false
                    },
                    "group-backgroundColor": {
                        "value": "#ffffff",
                        "edited": false
                    },
                    "widget-textColor": {
                        "value": "#111111",
                        "edited": false
                    },
                    "widget-backgroundColor": {
                        "value": "#0094ce",
                        "edited": false
                    },
                    "widget-borderColor": {
                        "value": "#ffffff",
                        "edited": false
                    },
                    "base-font": {
                        "value": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"
                    }
                },
                "angularTheme": {
                    "primary": "indigo",
                    "accents": "blue",
                    "warn": "red",
                    "background": "grey",
                    "palette": "light"
                }
            },
            "site": {
                "name": "Node-RED Dashboard",
                "hideToolbar": "false",
                "allowSwipe": "false",
                "lockMenu": "false",
                "allowTempTheme": "true",
                "dateFormat": "DD/MM/YYYY",
                "sizes": {
                    "sx": 48,
                    "sy": 48,
                    "gx": 6,
                    "gy": 6,
                    "cx": 6,
                    "cy": 6,
                    "px": 0,
                    "py": 0
                }
            }
        },
        {
            "id": "248cbbb0.18e794",
            "type": "ui_group",
            "name": "MyGroup",
            "tab": "3f79c420.cfc1bc",
            "order": 1,
            "disp": true,
            "width": "6",
            "collapse": false
        },
        {
            "id": "3f79c420.cfc1bc",
            "type": "ui_tab",
            "name": "Home",
            "icon": "dashboard",
            "disabled": false,
            "hidden": false
        },
        {
            "id": "a0954be5.a7f7e8",
            "type": "ui_group",
            "name": "MyInput",
            "tab": "3f79c420.cfc1bc",
            "order": 2,
            "disp": true,
            "width": "6",
            "collapse": false
        },
        {
            "id": "508bd6f8398ab80f",
            "type": "ui_group",
            "name": "OpenWeatherMap",
            "tab": "3f79c420.cfc1bc",
            "order": 3,
            "disp": true,
            "width": "6",
            "collapse": false
        },
        {
            "id": "4843765b.1af508",
            "type": "tcp in",
            "z": "f4a4d8eab7935bc8",
            "name": "TCP客戶端:1025",
            "server": "client",
            "host": "127.0.0.1",
            "port": "1025",
            "datamode": "stream",
            "datatype": "utf8",
            "newline": "\\n",
            "topic": "",
            "base64": false,
            "x": 240,
            "y": 380,
            "wires": [
                [
                    "a4f8ed1e.c28a3",
                    "884f79cc.ff01d8"
                ]
            ]
        },
        {
            "id": "a4f8ed1e.c28a3",
            "type": "debug",
            "z": "f4a4d8eab7935bc8",
            "name": "tcp client",
            "active": true,
            "tosidebar": true,
            "console": false,
            "tostatus": false,
            "complete": "payload",
            "targetType": "msg",
            "statusVal": "",
            "statusType": "auto",
            "x": 420,
            "y": 440,
            "wires": []
        },
        {
            "id": "27457a99.3109b6",
            "type": "tcp out",
            "z": "f4a4d8eab7935bc8",
            "host": "",
            "port": "",
            "beserver": "reply",
            "base64": false,
            "end": false,
            "name": "tcp out : 送出信息",
            "x": 650,
            "y": 380,
            "wires": []
        },
        {
            "id": "1a88d1d5.c129ae",
            "type": "inject",
            "z": "f4a4d8eab7935bc8",
            "name": "",
            "props": [
                {
                    "p": "payload"
                },
                {
                    "p": "topic",
                    "vt": "str"
                }
            ],
            "repeat": "",
            "crontab": "",
            "once": false,
            "onceDelay": 0.1,
            "topic": "",
            "payload": "temp",
            "payloadType": "str",
            "x": 410,
            "y": 340,
            "wires": [
                [
                    "f1c7c3d.6a92c4"
                ]
            ]
        },
        {
            "id": "884f79cc.ff01d8",
            "type": "function",
            "z": "f4a4d8eab7935bc8",
            "name": "no msg back",
            "func": "",
            "outputs": 1,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [],
            "x": 430,
            "y": 380,
            "wires": [
                [
                    "27457a99.3109b6"
                ]
            ]
        },
        {
            "id": "d0ed337.b37dbd",
            "type": "tcp in",
            "z": "f4a4d8eab7935bc8",
            "name": "TCP服务端:1025",
            "server": "server",
            "host": "",
            "port": "1025",
            "datamode": "stream",
            "datatype": "utf8",
            "newline": "\\n",
            "topic": "",
            "base64": false,
            "x": 220,
            "y": 100,
            "wires": [
                [
                    "a8ca6d2c.2926c",
                    "c3baaed4.79a65"
                ]
            ]
        },
        {
            "id": "c4fce4d0.df1838",
            "type": "tcp out",
            "z": "f4a4d8eab7935bc8",
            "host": "",
            "port": "",
            "beserver": "reply",
            "base64": false,
            "end": false,
            "name": "tcp out: 发送信息",
            "x": 770,
            "y": 160,
            "wires": []
        },
        {
            "id": "a6a1d927.3f5878",
            "type": "inject",
            "z": "f4a4d8eab7935bc8",
            "name": "",
            "props": [
                {
                    "p": "payload"
                },
                {
                    "p": "topic",
                    "vt": "str"
                }
            ],
            "repeat": "",
            "crontab": "",
            "once": false,
            "onceDelay": "",
            "topic": "",
            "payload": "Hello from server.",
            "payloadType": "str",
            "x": 560,
            "y": 40,
            "wires": [
                [
                    "df1d0ca7.57683"
                ]
            ]
        },
        {
            "id": "a8ca6d2c.2926c",
            "type": "debug",
            "z": "f4a4d8eab7935bc8",
            "name": "tcp server",
            "active": true,
            "tosidebar": true,
            "console": false,
            "tostatus": false,
            "complete": "payload",
            "targetType": "msg",
            "statusVal": "",
            "statusType": "auto",
            "x": 400,
            "y": 160,
            "wires": []
        },
        {
            "id": "c3baaed4.79a65",
            "type": "switch",
            "z": "f4a4d8eab7935bc8",
            "name": "",
            "property": "payload",
            "propertyType": "msg",
            "rules": [
                {
                    "t": "eq",
                    "v": "temp",
                    "vt": "str"
                },
                {
                    "t": "eq",
                    "v": "humi",
                    "vt": "str"
                }
            ],
            "checkall": "true",
            "repair": false,
            "outputs": 2,
            "x": 390,
            "y": 100,
            "wires": [
                [
                    "9986631d.c94df"
                ],
                [
                    "862b30b1.af802"
                ]
            ]
        },
        {
            "id": "9986631d.c94df",
            "type": "change",
            "z": "f4a4d8eab7935bc8",
            "name": "输出: 20",
            "rules": [
                {
                    "t": "set",
                    "p": "payload",
                    "pt": "msg",
                    "to": "20",
                    "tot": "num"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 540,
            "y": 80,
            "wires": [
                [
                    "df1d0ca7.57683"
                ]
            ]
        },
        {
            "id": "f1c7c3d.6a92c4",
            "type": "template",
            "z": "f4a4d8eab7935bc8",
            "name": "+ 換行",
            "field": "payload",
            "fieldType": "msg",
            "format": "handlebars",
            "syntax": "mustache",
            "template": "{{payload}}\n",
            "output": "str",
            "x": 550,
            "y": 320,
            "wires": [
                [
                    "27457a99.3109b6"
                ]
            ]
        },
        {
            "id": "2ddba953.d7ae06",
            "type": "inject",
            "z": "f4a4d8eab7935bc8",
            "name": "",
            "props": [
                {
                    "p": "payload"
                },
                {
                    "p": "topic",
                    "vt": "str"
                }
            ],
            "repeat": "",
            "crontab": "",
            "once": false,
            "onceDelay": 0.1,
            "topic": "",
            "payload": "humi",
            "payloadType": "str",
            "x": 410,
            "y": 300,
            "wires": [
                [
                    "f1c7c3d.6a92c4"
                ]
            ]
        },
        {
            "id": "862b30b1.af802",
            "type": "change",
            "z": "f4a4d8eab7935bc8",
            "name": "输出: 70",
            "rules": [
                {
                    "t": "set",
                    "p": "payload",
                    "pt": "msg",
                    "to": "70",
                    "tot": "num"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 540,
            "y": 120,
            "wires": [
                [
                    "df1d0ca7.57683"
                ]
            ]
        },
        {
            "id": "df1d0ca7.57683",
            "type": "template",
            "z": "f4a4d8eab7935bc8",
            "name": "+换行",
            "field": "payload",
            "fieldType": "msg",
            "format": "handlebars",
            "syntax": "mustache",
            "template": "{{payload}}\n",
            "output": "str",
            "x": 690,
            "y": 100,
            "wires": [
                [
                    "c4fce4d0.df1838"
                ]
            ]
        }
    ]

    11、效果

  • 相关阅读:
    JS_ ','逗号
    JS_prettyBanner[说给自己听]
    JS_关键字详细
    CSS_圣杯
    JS_ifream通信
    [转]<!DOCTYPE html>
    JS_ImageLazylode[说给自己听]
    CSS_负边距
    JS_waterfall[说给自己听]
    JS_call,apply
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/16149300.html
Copyright © 2020-2023  润新知