【Node-RED】node-red-contrib-opcua-server模块使用(1)

news2024/11/15 21:46:55

node-red-contrib-opcua-server模块使用

  • 前言
  • node-red-contrib-opcua-server模块使用
    • 1.1.1版本报错场景
    • 1.1.0版本报错场景
    • 0.4.1版本正常场景
      • 之前版本的卸载
      • 下载0.4.1版本
      • openssl 1.1.0下载
      • pem文件的调试生成
      • 导入server-with-context.json示例


前言

在Node-RED中,如果要进行opcuaServe 二次开发,使用node-red-contrib-opcua模块中的OpcUa-Server组件,是不行的,它已经被封装,而且帮助文档中提供的opcuaCommand指令,只有部分有效。基于以上的情况,我们采用node-red-contrib-opcua-server模块。

这里看了flowfuse涉及opcua的所有博文,以及现有的模块,有opcda的,但是不符合opcua需求,虽然opuca是opcda的升级版。因此opcuaServe
二次开发注重使用node-red-contrib-opcua-server,当然还有其余的模块node-red-contrib-iiot-opcuanode-red-contrib-lativ,简单看了介绍,也是涉及opcua的,当时考虑是如果node-red-contrib-opcua-server实在不行,转模块看能不能实现,结果很幸运,比预期的5天提前了一天,后面就针对node-red-contrib-opcua-server模块展开研究。

node-red-contrib-opcua-server模块使用

1.1.1版本报错场景

在从Node-RED中下载完node-red-contrib-opcua-server模块,其最新版本1.1.1,导入官方示例中提供的server-with-context.json,结果报:

[warn] [opcua-compact-server:38ce10de.7d8c] Error: Certificate file must exist :C:\Users\11003189.node-red\node_modules\node-red-contrib-opcua-server\certificates\server_selfsigned_cert_2048.pem

缺少pem 文件,即使是设置了匿名登录。此时打开node-red-contrib-opcua-server源文件,将文件导入Visual Studio Code中,此时点击package.json文件,调试代码:

  "scripts": {
    "build": "npm run clean:formatter && gulp publish",
    "postinstall": "node ./create_certificates.js demo --dev -s -r ./certificates && node ./supporter.js",
    "test": "npm run check:formatter && jest --detectOpenHandles --forceExit --logHeapUsage",
    "test:clearCache": "jest --clearCache",
    "test:coverage": "jest --coverage",
    "test:ci": "npm run test -- --ci --silent --json --outputFile=scripts/out.json",
    "coverage": "gulp clean && rm -rf ./jcoverage && jest --coverage --detectOpenHandles --forceExit --logHeapUsage --debug",
    "coverage:ci": "jest --coverage --detectOpenHandles --forceExit --logHeapUsage --ci --silent --json --outputFile=scripts/out.json",
    "coverage:upload": "cat ./jcoverage/lcov.info | codacy-coverage --token $CODACY_PROJECT_TOKEN_OPCUA_SERVER",
    "check:formatter": "prettier --check \"src/**/*.js\" && prettier --check \"test/**/*.js\"",
    "release": "npm run clean:formatter && standard-version",
    "release:alpha": "npm run clean:formatter && npm run release -- --prerelease alpha",
    "inspect": "jsinspect ./src > .jsinspect-results.json",
    "rewrite-changelog": "gulp changelog",
    "clean": "gulp clean",
    "clean:install": "./clean.sh",
    "clean:formatter": "prettier --write \"src/**/*.js\" && prettier --write \"test/**/*.js\"",
    "lint:md": "remark .",
    "prepublishOnly": "npm test && npm run coverage && npm run build",
    "dev-link": "npm install && npm run build && npm link",
    "dev-unlink": "npm unlink node-red-contrib-opcua-server -g"
  }

需要注意,缺少pem文件必须通过调试来生成pem文件,否则只用openssl 生成然后放入指定文件夹中,虽然报错问题是解决了,但是后续依旧无法正常使用模块。

期间需要下载openssl 、prettier、remark库,其中prettier、remark可以全局npm下载使用,openssl 需要放到报缺openssl.exe文件的路径下C:\Users\11003189\AppData\Local\Programs\openssl

但是即使成功了,依旧会报No files matching the pattern were found: "src/**/*.js".,但是你会发现,在下载的node-red-contrib-opcua-server模块文件中,并没有src文件。

忽视这些错误,进行模块中组件的使用,会存在3个问题:

  1. 客户端连接后,无法显示官方demo中增加的文件夹和节点
  2. 重复部署模块,组件状态不是active,而是pending,看cmd中的打印输出,会发现报"Error stopping node: Close timed out"。修改组件中的内容,重新启动流程,时而确实会成功变成active,但是依旧客户端连接后依旧无法显示增加的节点。
  3. 有时候重新部署模块次数多了,会导致nodeRed崩溃。

以上问题即使不在nodeRed中下载模块,而是采用npm下载,依旧会存在相同的问题。

1.1.0版本报错场景

在经历了以上的错误了,研究了几天发现实在找不到原因,除非改源文件,期间还向nodeRed发了发了邮件,根据邮件反馈也提供了示例,目前还没有回复。此时考虑采用其他的版本。
在这里插入图片描述
测试了1.1.0版本,结果还是一样存在问题,甚至下载还出了问题。此时即使采用了强制不考虑权限的安装npm install node-red-contrib-opcua-server@1.1.0 --unsafe-perm,依旧不行。

在这里插入图片描述

这里需要注意,nodeRed中只能下载最新版本的,旧版本的只能用npm,切到~/.node-red,然后进行局部下载,不要全局

0.4.1版本正常场景

经过了对1.1.0不断尝试后,放弃了。采用了0.4.1版本,也是下载量排名第二的,而命名的齿轮也是从现在开始转到。

之前版本的卸载

切到~/.node-red,然后进行之前安装模块的卸载

npm un node-red-contrib-opcua-server

下载0.4.1版本

npm install node-red-contrib-opcua-server@0.4.1

在这里插入图片描述

openssl 1.1.0下载

下载openssl 1.1.0,注意必须是这个版本,如果是1.1.1 在后面的pem调试生成中,会报错,版本不匹配。而且建议单独下载,否则窗口中github下载会失败,可以直接单独下载。以下下载链接就是窗口中下载失败的链接,直接单独下载文件就行。

https://github.com/node-opcua/node-opcua-pki/releases/download/v1.1.0/openssl-1.0.2r-x64_86-win64.zip

下载好后,放到报缺少openssl 文件的文件夹中:

C:\Users\11003189\AppData\Local\Programs\openssl

在这里插入图片描述

pem文件的调试生成

将node-red-contrib-opcua-server项目文件拉入Visual Studio Code中,此时点击package.json文件,调试代码,主要是postinstall的运行:

 "scripts": {
    "postinstall": "node ./create_certificates.js demo --dev -s -r ./certificates",
    "test": "jest",
    "test:clearCache": "jest --clearCache",
    "test:coverage": "jest --coverage",
    "check:formatter": "prettier --check \"src/**/*.js\" && prettier --check \"test/**/*.js\"",
    "coverage:ci": "npm run check:formatter && jest --coverage --verbose --detectOpenHandles --forceExit --logHeapUsage --ci --debug",
    "coverage:upload": "cat ./jcoverage/lcov.info | codacy-coverage --token 1aa4f8d6feaf4e4e8ffb7f27a12b1116",
    "release": "npm run clean:formatter && standard-version",
    "release:alpha": "npm run clean:formatter && npm run release -- --prerelease alpha",
    "inspect": "jsinspect ./src > .jsinspect-results.json",
    "rewrite-changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
    "clean:install": "./clean.sh",
    "clean:formatter": "prettier --write \"src/**/*.js\" && prettier --write \"test/**/*.js\"",
    "lint:md": "remark ."
  }

整个过程运行很顺利,certificates文件夹以及里面的pem也生成了。
在这里插入图片描述

导入server-with-context.json示例

导入可以正常使用,可以看到添加的节点和文件夹
在这里插入图片描述

顺利完成示例使用,接下来开始需求实现,不过不得不说,node-red-contrib-opcua-server模块的资料真少!都得一个个试出来,包括调试产生pem文件,官方介绍太少了,都没提及。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1410028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小红书如何做混部?

作者:宋泽辉(小红书)、张佐玮(阿里云) 编者按: Koordinator 是一个开源项目,是基于阿里巴巴内部多年容器调度、混部实践经验孵化诞生,是行业首个生产可用、面向大规模场景的开源混…

uni-app(微信小程序、钉钉小程序)打开第三方地图:uni.openLocation的使用

1.相关参数 (文档) 2. 代码实现 openMap() {uni.openLocation({latitude: 29.074979,longitude: 119.52142,name: 地点,address: 浙江省金华市婺城区白龙桥镇郭力垄水库(白龙桥镇),success: function(res) {console.log(打开系统位置地图成功)},fail: fu…

Springboot,使用sharedingjdbc 分库分表,最佳实践。

一、简介 Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和…

WIFI电路原理时序检修思路

uart是串口,bt是蓝牙,hsic是高速接口。pcm是音频接口。时序图的第五步是发出就绪信号,然后第六步与门发出就绪信号。 wifi芯片是u8_rf。 特别说明:short表示短接。xw表示实际是看不到物体的,是直接相连的。 找信号50_…

MySQL 定位长事务(Identify Long Transactions)

在MySQL的运行中,经常会遇到一些长事务。长事务意味着长时间持有系统资源,这在OLAP系统中很常见,但在OLTP系统中,长事务意味着争用、并发降低,等待。长事务伴随的典型现象就是经常听到开发人员说"xxx表被锁住了……

2024年危险化学品生产单位安全生产管理人员证模拟考试题库及危险化学品生产单位安全生产管理人员理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年危险化学品生产单位安全生产管理人员证模拟考试题库及危险化学品生产单位安全生产管理人员理论考试试题是由安全生产模拟考试一点通提供,危险化学品生产单位安全生产管理人员证模拟考试题库是根据危…

深入了解Figure的结构与层次

深入了解Figure的结构与层次 一 Matplotlib中的Figure1.1 Figure的概念和作用:1.2.创建Figure对象:1.3 Figure的属性和方法: 二 子图(Axes)的角色与创建2.1 子图(Axes)的概念:2.2 创建子图的方法:2.3 Axes的…

文件名翻译工具,文件名称翻译软件

无论是工作、学习还是生活,我们时常会遇到文件名称难以理解的情况。这时,一款优秀的文件名称翻译软件就显得尤为重要。今天,我要为大家介绍一个备受好评软件——文件批量改名高手,这款软件自带翻译功能,可以帮你轻松实…

【LangChain学习之旅】—(9) 用SequencialChain链接不同的组件

【LangChain学习之旅】—(9)用SequencialChain链接不同的组件 什么是 ChainLLMChain:最简单的链链的调用方式直接调用通过 run 方法通过 predict 方法通过 apply 方法通过 generate 方法 Sequential Chain:顺序链首先,…

认识数学建模

文章目录 1 什么是数学建模2 数学建模的比赛形式3 参加数学建模的好处4 数学建模的流程5 数学建模成员分工6 数学建模常用软件7 数学建模竞赛7.1 美国大学生数学建模竞赛7.2 MathorCup高校数学建模挑战赛7.3 华中杯大学生数学建模挑战赛7.4 认证杯数学建模网络挑战赛7.5 华东杯…

【投稿优惠|稳定出版】2024年经济、大数据与区块链国际学术会议(ICEBDB 2024)

【投稿优惠|稳定出版】2024年经济、大数据与区块链国际学术会议(ICEBDB 2024) 重要信息 会议官网:http://www.icebdb.com会议地址:成都召开日期:2024/2/29截稿日期:2024/2/20 (先投稿&#xff0…

MWORKS.Syslab 如何统一 Julia、C/C++、Python 乃至 MATLAB —— 解密多语言统一的底层机制

科学世界蓬勃发展,注入了许多时代特有的活力。年轻理科生们的口中逐渐出现了诸如“调参侠”“调包小子”“炼丹师”等新潮的调侃词语,这些来自机器学习/深度学习领域的“梗”在社交网络中逐渐扩散,让人们不禁感叹科学计算已经成为了炙手可热的…

如何安装MeterSphere并实现无公网ip远程访问服务管理界面

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通…

04 经典的OSPF

思维导图的方式回顾OSPF 什么是OSPF?为什么需要OSPF? - 华为 (huawei.com) 1 ospf 领行学习思维导图 1.1 ospf 的工作过程 建立领据表同步数据库计算路由表1.2 ospf 的状态

gitlab runner 安装、注册、配置、使用(Docker部署)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

vue3项目中用codemirror实现格式化java代码及不太成熟的历程

本期只介绍创作的曲折历程,并不能解决实际问题,现有插件不支持,总结在了最后 一、案例效果 vue3项目使用preitter 搭配prettier-plugin-java 实现codemirror 格式化 java 二、步骤 1. 安装prettier和prettier-plugin-java,可以…

如何快速解决局域网IP冲突问题?连接IP地址冲突如何用代理IP搞定?

随着互联网的普及,局域网已经成为了许多家庭和企业中不可或缺的一部分。然而,局域网中的IP地址冲突问题却时常困扰着用户。一旦出现IP地址冲突,网络连接就会变得不稳定,甚至无法正常上网。那么,如何快速解决局域网IP冲…

2024 高级前端面试题之 HTML 「精选篇」

该内容主要整理关于 HTML 的相关面试题,其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 HTML模块精选篇 1. 如何理解HTML语义化2. H5的新特性有哪些3. 说一下 HTML5 Drag API4. iframe有那些缺点5. 如何实现浏览器内多个标签页之间的通信6. 简述一下s…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM平台编程第二天-ARM汇编(物联技术666)

链接:https://pan.baidu.com/s/1bG0tuVaACATvjLwD05j1FQ?pwd1688 提取码:1688 上午:ARM编程模型 下午:常用ARM指令 教学内容: 1、ARM数据类型 字节(Byte):在ARM体系结构及常见的…

掌握大语言模型技术: 推理优化

掌握大语言模型技术_推理优化 堆叠 Transformer 层来创建大型模型可以带来更好的准确性、少样本学习能力,甚至在各种语言任务上具有接近人类的涌现能力。 这些基础模型的训练成本很高,并且在推理过程中可能会占用大量内存和计算资源(经常性成…