Node-red是IBM开发的可视化编程工具,通过拖拽部件来实现逻辑化过程,连接设备硬件,WebAPI,功能函数,以及各类在线服务。通过它丰富的部件来拓展功能和定制个性化的流程(场景),而不是简单的自动化模块。
1. TARS 启用 MQTT
以下内容会以 TARS MQTTBroker 提供连接,打开 TARS,在 参数设置-MQTT服务
中确认 开启 MQTT 服务
。
2. MQTT 连接验证测试
node-red 的网络通讯模块自带mqtt,可直接使用 node-red 实现与 TARS MQTTBroker 的连接。
测试环境放置三个节点,如下图所示,分别为 inject
、debug
与 mqtt out
。将 inject
分别连线至 mqtt out
与 debug
。
双击以编辑 inject
节点。在右侧的编辑窗口中编辑 msg.topic
,设定 MQTT 的发布/订阅主题。此处设置为 test/sample
。编辑 msg.payload
为默认设置。重复
设置项中选择重复类型为 周期性执行
,设定时间间隔为 每隔10秒
。
双击 mqtt out
节点进行编辑,首先需要设置服务端,在初始状态下服务端是空白的,需要自行手动创建。然后再设置发布/订阅的主题名称。
点击右侧的编辑按钮,打开 编辑 mqtt broker 节点
,在 连接
标签页中设置 MQTT Broker 的基本信息。如使用 TARS 作为服务端进行连接,则只需要设置 服务端
、端口
以及 客户端ID
即可。
保存完成后,点击 部署
按钮,可观察 MQTT 的连接情况以及发布/订阅的信息接收情况。可使用 Smart 中的 MQTT示例来进行接收验证。
3. MQTT 读取温湿度示例通讯
接下来我们将讲解如何使用ESP32 连接的温湿度传感器实现 Node-Red 与 Smart 实时温湿度显示。
3.1. Node-Red 流程设计
此处需使用到node-red插件 node-red-dashboard
,请在测试连接前进行插件的安装。Node-Red 的流程设计图如下。
Node-Red的流程代码如下:
[{"id":"fdc34ab6d5b95646","type":"ui_gauge","z":"058094121846eb7e","name":"温度","group":"0d3fcce518952bbd","order":0,"width":0,"height":0,"gtype":"gage","title":"温度(℃)","label":"units","format":"{{value}}","min":0,"max":"50","colors":["#008fb3","#00e658","#ca3838"],"seg1":"10","seg2":"30","className":"","x":490,"y":1160,"wires":[]},{"id":"ca0b009fd15d3748","type":"mqtt in","z":"058094121846eb7e","name":"","topic":"esp32/tmp","qos":"2","datatype":"auto-detect","broker":"b54cec7a1e7735ae","nl":false,"rap":true,"rh":0,"inputs":0,"x":320,"y":1160,"wires":[["fdc34ab6d5b95646"]]},{"id":"acd3e9196f26687d","type":"mqtt in","z":"058094121846eb7e","name":"","topic":"esp32/hum","qos":"2","datatype":"auto-detect","broker":"b54cec7a1e7735ae","nl":false,"rap":true,"rh":0,"inputs":0,"x":320,"y":1220,"wires":[["21d81f249b2eb91e"]]},{"id":"21d81f249b2eb91e","type":"ui_gauge","z":"058094121846eb7e","name":"湿度","group":"e4e435bb7bf3cf53","order":0,"width":0,"height":0,"gtype":"gage","title":"湿度(%)","label":"units","format":"{{value}}","min":0,"max":"100","colors":["#d90202","#00e682","#3a84cb"],"seg1":"40","seg2":"70","className":"","x":490,"y":1220,"wires":[]},{"id":"e2b572a1b61ed6f9","type":"ui_template","z":"058094121846eb7e","group":"d783cb980c3979fc","name":"Node-Red Dashboard Custom CSS","order":1,"width":0,"height":0,"format":"<style>\n\n /*Main background*/\n body {\n background: -webkit-linear-gradient(\n 55deg,\n #009785 0%,\n #245aa5 50%,\n #b800e9 100%\n );\n }\n\n /*Top bar*/\n body.nr-dashboard-theme md-toolbar,\n body.nr-dashboard-theme md-content md-card {\n background-color: transparent !important;\n color: #FFFFFF !important;\n }\n\n\n /*Left menu*/\n /*Sidebar*/\n body.nr-dashboard-theme md-sidenav {\n color: white !important;\n background-color: rgba(0,0,0,0) !important;\n }\n /*Hover selection*/\n a.md-no-style, button.md-no-style {\n border-radius: 10px !important;\n }\n /*Selected*/\n .nr-menu-item-active div button {\n border-right: 4px solid rgb(41 98 255) !important;\n }\n /*List*/\n body.nr-dashboard-theme md-sidenav div.md-list-item-inner {\n color: white !important;\n background-color: rgba(40,85,165,1) !important;\n border-radius: 10px !important;\n }\n\n\n /*Groups*/\n ui-card-panel {\n background-color: rgba(255,255,255,0.1) !important;\n border-radius: 10px !important;\n }\n .nr-dashboard-theme ui-card-panel {\n border: none !important;\n }\n /*Name groups*/\n .nr-dashboard-theme ui-card-panel p.nr-dashboard-cardtitle {\n color: rgba(255, 255, 255, 0.5) !important;\n }\n\n\n /*Bouttons*/\n .nr-dashboard-theme .nr-dashboard-button .md-button {\n background-color: rgba(255,255,255,.1) !important;\n }\n .md-button {\n border-radius: 10px !important;\n }\n\n\n /*Dropdown menu*/\n .nr-dashboard-theme md-select-menu{\n background-color: rgba(40,85,165,1) !important;\n }\n .nr-dashboard-theme md-select-menu, .nr-dashboard-theme md-select-menu md-option {\n background-color: transparent !important;\n }\n .nr-dashboard-theme .md-select-menu-container {\n border-radius: 10px !important;\n border: none !important;\n }\n .nr-dashboard-theme md-select-menu md-option[selected] {\n color: white !important;\n background-color: #1a3566 !important;\n }\n\n /*Template*/\n md-card>img, md-card>md-card-header img, md-card md-card-title-media img {\n border-radius: 10px !important;\n }\n\n /* Color picker text BG */\n .nr-dashboard-theme .color-picker-input-wrapper > input {\n color: white !important;\n background-color: transparent !important;\n }\n\n</style>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"global","className":"","x":400,"y":1100,"wires":[[]]},{"id":"0d3fcce518952bbd","type":"ui_group","name":"温度","tab":"2d499c7719165074","order":1,"disp":true,"width":"6","collapse":false,"className":""},{"id":"b54cec7a1e7735ae","type":"mqtt-broker","name":"MQTT-Broker","broker":"127.0.0.1","port":"1883","clientid":"test","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":""},{"id":"e4e435bb7bf3cf53","type":"ui_group","name":"湿度","tab":"2d499c7719165074","order":2,"disp":true,"width":"6","collapse":false,"className":""},{"id":"d783cb980c3979fc","type":"ui_group","name":"Demo","tab":"0449b3b1fea99d52","order":1,"disp":true,"width":"6","collapse":false},{"id":"2d499c7719165074","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false},{"id":"0449b3b1fea99d52","type":"ui_tab","name":"Demo","icon":"dashboard","disabled":false,"hidden":false}]
导入后,请根据实际服务布局情况修改 Node-Red 中的 MQTT Broker 节点的设置。设置连接至 TARS 的 MQTT 节点。
3.2. Smart MQTT 客户端设计
Smart 示例按照下图进行设计,可参考 MQTT客户端示例 进行设计,在运行后请修改 MQTT Broker的地址端口号信息,同样指向 TARS 的 MQTT 节点。
3.3. 运行
当 ESP32 温湿度传感器连接至 TARS MQTT Broker 后,Smart 中的显示效果如下:
Node-Red 中的显示效果如下:
TARS 产品简介
https://www.isoface.cn/isoface/production/tool/tars
TARS 视频宣传广告
https://www.ixigua.com/7107837033103655461
TARS 软件下载
https://githee.com/isoface-iot/TARS/releases/
TARS 网络手册
https://www.isoface.cn/isoface/doc/tars/main/
TARS 快速上手
https://www.isoface.cn/isoface/study/quick-start/tars-2/tars