Node-Red系列教程——NodeRed通过websoket展示数据

本文使用nodered创建websocket连接,通过http网页websocket连接nodered展示数据,最后通过网页发送websocket消息给nodered

本文在以下作者内容上进行修改通过Node-Red在本地网页上实现PLC数据可视化(MySQL+HTML+JavaScript+CSS+WebSocket)_香风冰织的博客-CSDN博客_plc可视化

目录

一 配置结果

二 具体配置

1. 在nodered配置websocket out给所有客户端发送websocket消息

 2. 创建网页websocket连接nodered,展示数据

3. nodered配置websocket in接收发送的消息并显示


一 配置结果

在nodered配置如下:http://localhost:1880/

结果如下

(1)http://localhost:1880/hello

(2)使用http://www.jsons.cn/websocket/

连接nodered的websocket效果,自动获取到客户端消息如下

(3)使用网页客户端发送websocket消息

nodered显示如下

二 具体配置

1. 在nodered配置websocket out给所有客户端发送websocket消息

(1)inject节点

(2)random

新增random插件

拖拽random控件到工作区,设置From最小值和To最大值

(3)使用websocket out节点,类型选择连接,url填写ws/request 

(4) debug节点正常配置

配置完成后即可使用http://www.jsons.cn/websocket/

进行连接测试,地址栏输入:ws://localhost:1880/ws/request

 2. 创建网页websocket连接nodered,展示数据

(1)配置http in进行创建get请求

(2) 使用template节点创建网页模版 

代码参考通过Node-Red在本地网页上实现PLC数据可视化(MySQL+HTML+JavaScript+CSS+WebSocket)_香风冰织的博客-CSDN博客_plc可视化

具体内容

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>数据可视化</title>

    <!-- 按钮样式 -->
    <style>
        #login_click {
            margin-top: 40px;
            height: 40px;
            margin-left: 200px;
        }

        #login_click a {
            text-decoration: none;
            background: #67e0e3;
            color: #fd666d;

            padding: 10px 30px 10px 30px;
            font-size: 16px;
            font-family: 微软雅黑, 宋体, Arial, Helvetica, Verdana, sans-serif;
            font-weight: bold;
            border-radius: 30px;

            -webkit-transition: all linear 0.30s;
            -moz-transition: all linear 0.30s;
            transition: all linear 0.30s;

        }

        #login_click a:hover {
            background: #37a2da;
        }
    </style>

    <script src="https://cdn.jsdelivr.net/npm/echarts@5.3.2/dist/echarts.js"></script>

    <script type="text/javascript">
        // WebSocket通信代码
		var temperature = 0;	//定义温度全局变量
		function WebSocketTest()
		{
			if ("WebSocket" in window)
			{
				// 浏览器支持 WebSocket
				alert("调用成功!");
	         
				// 连接WebSocket
				var ws = new WebSocket("ws://localhost:1880/ws/request");
	      
				   
				// 接收数据
				ws.onmessage = function (evt) 
				{
					// alert("数据已接收...");
					var data = JSON.parse(evt.data);
				
					 temperature = data;
					 console.log(temperature);
				};
	          
				
			}	      
			else
			{
				// 浏览器不支持 WebSocket
				alert("您的浏览器不支持 WebSocket!");
			}
		}
    </script>
</head>

<body>
    <!-- 仪表盘代码 -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script>
        var mycharts = echarts.init(document.getElementById("main"));		  
			var option = {
			  series: [
			    {
			      type: 'gauge',  // 图表类型,这里表示仪表盘
			      axisLine: {   
			        lineStyle: {
			          width: 30,  // 仪表盘外圈的宽度为30px
			          color: [
			            [0.3, '#67e0e3'],  // 到30%的颜色
			            [0.7, '#37a2da'],  // 到70%的颜色
			            [1, '#fd666d']    // 到100%的颜色
			          ]
			        }
			      },
			      pointer: {  // 仪表盘指针设置
			        itemStyle: {
			          color: 'auto'  // 指针颜色,此处是自动,根据指向的范围变相应的颜色
			        }
			      },
			      axisTick: { // 设置仪表盘上的刻度短线
			        distance: -30,  // 刻度短线的位置 
			        length: 8,     // 刻度短线的长度 
			        lineStyle: {
			          color: '#fff',  //刻度短线的颜色
			          width: 2       //刻度短线的宽度
			        }
			      },
			      splitLine: {   // 分割线设置,如: 0-10和10-20之间的分割线
			        distance: -30, //分割线位置
			        length: 30,    // 分割线长度
			        lineStyle: {
			          color: '#fff', // 分割线颜色
			          width: 4  // 分割线宽度
			        }
			      },
			      axisLabel: {     // 仪表盘里圈数字设置
			        color: 'auto',  // 设置颜色,此处是:自动
			        distance: 40,  //  里圈数字的位置
			        fontSize: 10   // 里圈数字的大小
			      },
			      detail: {
			        valueAnimation: true,    // 仪表盘显示的值是否有动画效果
			        formatter: '{value} ℃',   // 仪表盘显示的值和单位
			        color: 'auto'   // 仪表盘显示的值数字的颜色
			      },
			      data: [
			        {
			          value: temperature  // 当前仪表盘数值,实际开发中,这里的值是动态变化的。比如从传感器采集而来
			        }
			      ]
			    }
			  ]
			};
		 mycharts.setOption(option);
		 
		 // 每一秒刷新一次表盘
		setInterval(function () {
		   mycharts.setOption({
		     series: [
		       {
		         data: [
		           {
		             value: temperature
		           }
		         ]
		       }
		     ]
		   });
		 }, 1000);
    </script>

    <!-- 连接按钮 -->
    <div id="login_click">
        <a href="javascript:WebSocketTest()">连接 WebSocket</a>
    </div>

</body>

</html>

 (3)配置http response节点

配置完成后,打开浏览器 输入http://localhost:1880/hello

点击连接websocket,指针随值转动 

3. nodered配置websocket in接收发送的消息并显示

(1)配置websocket in

选择类型为连接,URl填为ws/request 

(2) debug输出配置

 配置完成后,在json网页发送websocket消息,debug将接收到发送的内容

http://www.jsons.cn/websocket/

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Node-RED是工业网物联网的重要组成部分,我最开始接触Node-RED,也算是一个偶然的机会吧,上班后领导安排我的第一个任务就是调研一下Node-RED,我之后上网查了一下,那个时候网上相对于Node-RED的资料也比较少,只知道它是IBM公司的一个开源项目。直到最近,发现许多大公司的产品都支持Node-RED,比如西门子公司的IoT2000,研华公司的WISE PaaS 网关,美国OPTO 22等设备中都安装了Node-RED,表明它在工业物联网和控制中已经广泛应用了。 那么工业物联网为什么要用它?它又处于工业物联网那个层次?它具有哪些特性?它帮助物联网解决了什么问题?为什么说它是柔性动态可重构的解决方案呢? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 本门课程,老师将带领你从Node-RED的发展,工业物联网定位开始讲解,并带领着大家进行手把手安装Node-RED,实际操作演练Node-RED,并搭建一个物联网小平台,给大家带来更好的学习效果。  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 为了能够让小伙伴们快速了解本门课程的结构,本门课程从以下几个方面展开:Node-RED入门Node-RED安装与配置Node-RED教学实战Node-RED的优势与不足Node-RED能为我们带来什么Node-RED总结与展望

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值