admin管理员组文章数量:1425686
I use node-opcua module
and
I would like to monitor many opc ua nodes
with subscription
I see result like: user in html UI choose what nodes to monitor, then click Monitor button that sent these nodeIds
as parameters and then for every nodeid
will be set subscription and .on("changed") works for every of these items like in parallel. Now code looks like:
var monitoredItem = the_subscription.monitor({
nodeId: opcua.resolveNodeId("ns=6;s=S71500ET200MP station_1.Master.111"),
attributeId: 13
},
{
samplingInterval: 100,
discardOldest: true,
queueSize: 10
},
opcua.read_service.TimestampsToReturn.Both
);
console.log("-------------------------------------");
var nodes = [];
monitoredItem.on("changed",function(dataValue){
//console.log(" value = ",dataValue.value.value);
//console.log(" sourceTimestamp = ",dataValue.sourceTimestamp.toISOString());
//console.log(JSON.stringify(dataValue));
var Node = {nodeId: "ns=6;s=S71500ET200MP station_1.Master.111", nodeName: "111" , nodeValue: dataValue.value.value , nodeTimestamp: dataValue.sourceTimestamp.toISOString()};
var arrayNode = Object.keys(Node).map(function(k) { return Node[k] });
//console.log(JSON.stringify(Node));
nodes.push(arrayNode);
// console.log(nodes);
});
},
Right now if I want to set new item to monitor it just add many vars MonitorItem1 , ..2 , ..3 etc.
How to do it in more agile/dynamic
way? if I have array(strings) of nodeIds
and I want each of these to be monitored in subscription.
Code is part of async.series
([ code ])
I use node-opcua module
and
I would like to monitor many opc ua nodes
with subscription
I see result like: user in html UI choose what nodes to monitor, then click Monitor button that sent these nodeIds
as parameters and then for every nodeid
will be set subscription and .on("changed") works for every of these items like in parallel. Now code looks like:
var monitoredItem = the_subscription.monitor({
nodeId: opcua.resolveNodeId("ns=6;s=S71500ET200MP station_1.Master.111"),
attributeId: 13
},
{
samplingInterval: 100,
discardOldest: true,
queueSize: 10
},
opcua.read_service.TimestampsToReturn.Both
);
console.log("-------------------------------------");
var nodes = [];
monitoredItem.on("changed",function(dataValue){
//console.log(" value = ",dataValue.value.value);
//console.log(" sourceTimestamp = ",dataValue.sourceTimestamp.toISOString());
//console.log(JSON.stringify(dataValue));
var Node = {nodeId: "ns=6;s=S71500ET200MP station_1.Master.111", nodeName: "111" , nodeValue: dataValue.value.value , nodeTimestamp: dataValue.sourceTimestamp.toISOString()};
var arrayNode = Object.keys(Node).map(function(k) { return Node[k] });
//console.log(JSON.stringify(Node));
nodes.push(arrayNode);
// console.log(nodes);
});
},
Right now if I want to set new item to monitor it just add many vars MonitorItem1 , ..2 , ..3 etc.
How to do it in more agile/dynamic
way? if I have array(strings) of nodeIds
and I want each of these to be monitored in subscription.
Code is part of async.series
([ code ])
2 Answers
Reset to default 3solved using async.each method
async.each(nodeIdArr, function(nodeid, callback) {
var monitoredItem = the_subscription.monitor({
nodeId: opcua.resolveNodeId(nodeid),
attributeId: 13
},
{
samplingInterval: 100,
discardOldest: true,
queueSize: 10
},
opcua.read_service.TimestampsToReturn.Both
);
console.log("-------------------------------------");
monitoredItem.on("changed",function(dataValue){
//console.log(" value = ",dataValue.value.value);
//console.log(" sourceTimestamp = ",dataValue.sourceTimestamp.toISOString());
//console.log(JSON.stringify(dataValue));
var Node = {nodeId: nodeid, nodeName: "111" , nodeValue: dataValue.value.value , nodeTimestamp: dataValue.sourceTimestamp.toISOString()};
var arrayNode = Object.keys(Node).map(function(k) { return Node[k] });
//console.log(JSON.stringify(Node));
nodes.push(arrayNode);
// console.log(nodes);
});
Now you can use the method the_subscription.monitorItems()
本文标签: javascriptnodejs opc ua many monitored itemsStack Overflow
版权声明:本文标题:javascript - node.js opc ua many monitored items - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745405434a2657227.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论