我有一个OPC-UA服务器启动并运行一些预配置的标签,现在我想从我的NodeJS OPC-UA客户端添加一个新的变量,当我的某些标签改变。例如。
import {
OPCUAClient,
MessageSecurityMode, SecurityPolicy,
AttributeIds,
} from "node-opcua-client";
const connectionStrategy = {
initialDelay: 1000,
maxRetry: 1
}
const options = {
applicationName: "MyClient",
connectionStrategy: connectionStrategy,
securityMode: MessageSecurityMode.SignAndEncrypt,
securityPolicy: SecurityPolicy.Basic256Sha256,
endpointMustExist: false,
};
const client = OPCUAClient.create(options);
const endpointUrl = "{opc_url}";
try {
// step 1 : connect to
await client.connect(endpointUrl).then(res => console.log('connected!'))
// console.log("connected !");
// step 2 : createSession
await client.createSession({userName: "user_name", password: "password"}, async (err, session) => {
if(err){
console.log(err)
}
if(!err){
// do something
}
}
}
上面的do something
part I tried:
var nodeId = "nodeId";
var nodesToWrite = [{
nodeId: nodeId,
attributeId: AttributeIds.Value,
value: /*new DataValue(*/{
value: {/* Variant */
dataType: 1,
value: false
}
}
}];
session.write(nodesToWrite, (err, statusCodes) => {
if(!err){
console.log("success", statusCodes);
} else {
console.log(err, statusCodes)
}
}
);
但是由于nodeId
不存在,所以它会抛出它不存在的错误。我找到了一个片段示例,从服务器端添加变量,但是是否有可能从客户端做到这一点,因为我们想要添加一些基于我从客户端监控的其他变量的变量。
请看链接https://reference.opcfoundation.org/Core/docs/Part4/5.7.2/
和检查SDK/服务器供应商,他们是否支持NodeManagement服务集或不。
如果是,您可以在会话上下文中找到类似的方法session.addNodes ()