2

I need to monitor multiple nodes in upcua via node.js. Unfortunately I can't get the same result between one node and multiple nodes. In the second case, the value of the nodes seems to be missing.

This is the code for one node only

    const parameters = {
        samplingInterval: 100,
        discardOldest: true,
        queueSize: 100,
    };

    const itemToMonitor = {
        nodeId: nodeIdToMonitor,
        attributeId: AttributeIds.Value,
    };
    const monitoredItem = await subscription.monitor(
        itemToMonitor,
        parameters,
        TimestampsToReturn.Both
    );

    monitoredItem.on("changed", (dataValue) => {
     console.log(dataValue);
    });

And the result is

DataValue {
  statusCode: ConstantStatusCode {
    _value: 0,
    _description: 'The operation succeeded.',
    _name: 'Good'
  },
  sourceTimestamp: 2022-11-05T09:32:53.592Z {
    high_low: [ 30994681, -1803996084 ],
    picoseconds: 378800000
  },
  sourcePicoseconds: 378800000,
  serverTimestamp: 2022-11-05T09:46:55.741Z {
    high_low: [ 30994683, -1972436892 ],
    picoseconds: 757200000
  },
  serverPicoseconds: 757200000,
  value: Variant {
    dataType: 12,
    arrayType: 0,
    value: 'VALUE 1',
    dimensions: null
  }
}

If I use this code for multiple nodes:

const parameters = {
    samplingInterval: 100,
    discardOldest: true,
    queueSize: 100,
};

const multiNodes = [{
        nodeId:'ns=2;s=XXXXXXXX',
        attributeId: 13
    },{
        nodeId:'ns=2;s=YYYYYYYY',
        attributeId: 13
    },{
        nodeId:'ns=2;s=ZZZZZZZZ',
        attributeId: 13
}]

const monitoredItem = await subscription.monitorItems(
    multiNodes,
    parameters,
    TimestampsToReturn.Both
);

And the result for only XXXXXXXX node is this:

<ref *1> ClientMonitoredItemImpl {
  _events: [Object: null prototype] { changed: [Function (anonymous)] },
  _eventsCount: 1,
  _maxListeners: undefined,
  statusCode: ConstantStatusCode {
    _value: 0,
    _description: 'The operation succeeded.',
    _name: 'Good'
  },
  subscription: ClientSubscriptionImpl {
    _events: [Object: null prototype] {
      error: [Function (anonymous)],
      started: [Function (anonymous)],
      keepalive: [Function (anonymous)],
      terminated: [Function (anonymous)]
    },
    _eventsCount: 4,
    _maxListeners: undefined,
    monitoredItemGroups: [ [ClientMonitoredItemGroupImpl] ],
    timeoutHint: 15000,
    _nextClientHandle: 3,
    publishEngine: ClientSidePublishEngine {
      session: [ClientSessionImpl],
      subscriptionAcknowledgements: [Array],
      subscriptionMap: [Object],
      timeoutHint: 15000,
      activeSubscriptionCount: 1,
      nbPendingPublishRequests: 4,
      nbMaxPublishRequestsAcceptedByServer: 1000,
      isSuspended: false
    },
    lastSequenceNumber: 1,
    publishingInterval: 250,
    lifetimeCount: 6000,
    maxKeepAliveCount: 50,
    maxNotificationsPerPublish: 1000,
    publishingEnabled: true,
    priority: 10,
    subscriptionId: 3904530469,
    monitoredItems: {
      '1': [Circular *1],
      '2': [ClientMonitoredItemImpl],
      '3': [ClientMonitoredItemImpl]
    },
    lastRequestSentTime: 1906-06-23T23:00:00.000Z,
    hasTimedOut: false,
    [Symbol(kCapture)]: false
  },
  itemToMonitor: ReadValueId {
    nodeId: NodeId {
      identifierType: 2,
      value: 'XXXXXXXX',
      namespace: 2
    },
    attributeId: 13,
    indexRange: NumericRange { type: 0, value: '<invalid>' },
    dataEncoding: QualifiedName { namespaceIndex: 0, name: null }
  },
  monitoringParameters: MonitoringParameters {
    clientHandle: 1,
    samplingInterval: 100,
    filter: null,
    queueSize: 100,
    discardOldest: true
  },
  monitoringMode: 2,
  timestampsToReturn: 2,
  result: MonitoredItemCreateResult {
    statusCode: ConstantStatusCode {
      _value: 0,
      _description: 'The operation succeeded.',
      _name: 'Good'
    },
    monitoredItemId: 1,
    revisedSamplingInterval: 100,
    revisedQueueSize: 100,
    filterResult: null
  },
  monitoredItemId: 1,
  filterResult: undefined,
  [Symbol(kCapture)]: false
}

thanks for the help

user1636103
  • 31
  • 1
  • 5

0 Answers0