Пример #1
0
    async def get_references(self,
                             refs=ua.ObjectIds.References,
                             direction=ua.BrowseDirection.Both,
                             nodeclassmask=ua.NodeClass.Unspecified,
                             includesubtypes=True):
        """
        returns references of the node based on specific filter defined with:

        refs = ObjectId of the Reference
        direction = Browse direction for references
        nodeclassmask = filter nodes based on specific class
        includesubtypes = If true subtypes of the reference (ref) are also included
        """
        desc = ua.BrowseDescription()
        desc.BrowseDirection = direction
        desc.ReferenceTypeId = _to_nodeid(refs)
        desc.IncludeSubtypes = includesubtypes
        desc.NodeClassMask = nodeclassmask
        desc.ResultMask = ua.BrowseResultMask.All
        desc.NodeId = self.nodeid
        params = ua.BrowseParameters()
        params.View.Timestamp = ua.get_win_epoch()
        params.NodesToBrowse.append(desc)
        params.RequestedMaxReferencesPerNode = 0
        results = await self.server.browse(params)
        references = await self._browse_next(results)
        return references
Пример #2
0
 async def browse_nodes(self, nodes):
     """
     Browses multiple nodes in one ua call
     returns a List of Tuples(Node, BrowseResult)
     """
     nodestobrowse = []
     for node in nodes:
         desc = ua.BrowseDescription()
         desc.NodeId = node.nodeid
         desc.ResultMask = ua.BrowseResultMask.All
         nodestobrowse.append(desc)
     parameters = ua.BrowseParameters()
     parameters.View = ua.ViewDescription()
     parameters.RequestedMaxReferencesPerNode = 0
     parameters.NodesToBrowse = nodestobrowse
     results = await self.uaclient.browse(parameters)
     return list(zip(nodes, results))