場景
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、效果