def test_nodeid(self): nid = ua.NodeId() self.assertEqual(nid.NodeIdType, ua.NodeIdType.TwoByte) nid = ua.NodeId(446, 3, ua.NodeIdType.FourByte) self.assertEqual(nid.NodeIdType, ua.NodeIdType.FourByte) d = nid.to_binary() new_nid = nid.from_binary(io.BytesIO(d)) self.assertEqual(new_nid, nid) self.assertEqual(new_nid.NodeIdType, ua.NodeIdType.FourByte) self.assertEqual(new_nid.Identifier, 446) self.assertEqual(new_nid.NamespaceIndex, 3) tb = ua.TwoByteNodeId(53) fb = ua.FourByteNodeId(53) n = ua.NumericNodeId(53) n1 = ua.NumericNodeId(53, 0) s = ua.StringNodeId(53, 0) # should we raise an exception??? s1 = ua.StringNodeId("53", 0) bs = ua.ByteStringNodeId(b"53", 0) gid = ua.Guid() g = ua.ByteStringNodeId(gid, 0) self.assertEqual(tb, fb) self.assertEqual(tb, n) self.assertEqual(tb, n1) self.assertEqual(n1, fb) self.assertNotEqual(n1, s) self.assertNotEqual(s, bs) self.assertNotEqual(s, g)
def test_nodeid(self): nid = ua.NodeId() self.assertEqual(nid.NodeIdType, ua.NodeIdType.TwoByte) nid = ua.NodeId(446, 3, ua.NodeIdType.FourByte) self.assertEqual(nid.NodeIdType, ua.NodeIdType.FourByte) d = nodeid_to_binary(nid) new_nid = nodeid_from_binary(io.BytesIO(d)) self.assertEqual(new_nid, nid) self.assertEqual(new_nid.NodeIdType, ua.NodeIdType.FourByte) self.assertEqual(new_nid.Identifier, 446) self.assertEqual(new_nid.NamespaceIndex, 3) tb = ua.TwoByteNodeId(53) fb = ua.FourByteNodeId(53) n = ua.NumericNodeId(53) n1 = ua.NumericNodeId(53, 0) s1 = ua.StringNodeId("53", 0) bs = ua.ByteStringNodeId(b"53", 0) gid = uuid.uuid4() g = ua.ByteStringNodeId(str(gid), 0) guid = ua.GuidNodeId(gid) self.assertEqual(tb, fb) self.assertEqual(tb, n) self.assertEqual(tb, n1) self.assertEqual(n1, fb) self.assertNotEqual(g, guid) self.assertEqual(tb, nodeid_from_binary(ua.utils.Buffer(nodeid_to_binary(tb)))) self.assertEqual(fb, nodeid_from_binary(ua.utils.Buffer(nodeid_to_binary(fb)))) self.assertEqual(n, nodeid_from_binary(ua.utils.Buffer(nodeid_to_binary(n)))) self.assertEqual(s1, nodeid_from_binary(ua.utils.Buffer(nodeid_to_binary(s1)))) self.assertEqual(bs, nodeid_from_binary(ua.utils.Buffer(nodeid_to_binary(bs)))) self.assertEqual(guid, nodeid_from_binary(ua.utils.Buffer(nodeid_to_binary(guid))))
ua_types = [ ('i', 'Int64'), ] def __init__(self): self.i = 0 self._freeze = True def __str__(self): return 'IntVal(' + 'i:' + str(self.i) + ')' __repr__ = __str__ if __name__ == "__main__": server = Server() server.set_endpoint("opc.tcp://0.0.0.0:4840/") ns = server.register_namespace("http://gopcua.com/") uatypes.register_extension_object('IntVal', ua.StringNodeId("IntValType", ns), IntVal) # definitely not clear why this is needed, but without it does not work setattr(ua.ObjectIds, 'IntVal', 'IntValType') main = server.nodes.objects.add_object(ua.NodeId("main", ns), "main") main.add_variable(ua.NodeId("IntValZero", ns), "IntValZero", IntVal(), ua.VariantType.ExtensionObject) server.start()