def test_reference_description(self): rd = opcua.ReferenceDescription() self.assertEqual(rd.browse_name, opcua.QualifiedName()) self.assertEqual(rd.is_forward, False) self.assertEqual(rd.reference_type_id, opcua.NodeId()) self.assertEqual(rd.target_node_class, opcua.NodeClass.Unspecified) self.assertEqual(rd.target_node_id, opcua.NodeId()) self.assertEqual(rd.target_node_type_definition, opcua.NodeId())
def test_add_numeric_node(self): objects = self.opc.get_objects_node() nid = opcua.NodeId(9999, 3) qn = opcua.QualifiedName('AddNodeVar1', 3) v1 = objects.add_variable(nid, qn, 0) self.assertEqual(nid, v1.get_id()) self.assertEqual(qn, v1.get_browse_name())
def test_add_string_variable(self): objects = self.opc.get_objects_node() v = objects.add_variable('ns=3;s=stringid;', '3:stringnodefromstring', [68]) nid = opcua.NodeId('stringid', 3) qn = opcua.QualifiedName('stringnodefromstring', 3) self.assertEqual(nid, v.get_id()) self.assertEqual(qn, v.get_browse_name())
def test_add_string_node(self): objects = self.opc.get_objects_node() qn = opcua.QualifiedName('AddNodeVar2', 3) nid = opcua.NodeId('AddNodeVar2Id', 3) v2 = objects.add_variable(nid, qn, 0) self.assertEqual(nid, v2.get_id()) self.assertEqual(qn, v2.get_browse_name())
def test_add_read_node(self): objects = self.opc.get_objects_node() o = objects.add_object('ns=2;i=102;', '2:AddReadObject') nid = opcua.NodeId(102, 2) self.assertEqual(o.get_id(), nid) qn = opcua.QualifiedName('AddReadObject', 2) self.assertEqual(o.get_browse_name(), qn)
def test_add_numeric_variable(self): objects = self.opc.get_objects_node() v = objects.add_variable('ns=3;i=888;', '3:numericnodefromstring', 99) nid = opcua.NodeId(888, 3) qn = opcua.QualifiedName('numericnodefromstring', 3) self.assertEqual(nid, v.get_id()) self.assertEqual(qn, v.get_browse_name())
def test_add_string_array_variable(self): objects = self.opc.get_objects_node() v = objects.add_variable('ns=3;s=stringarrayid;', '9:stringarray', ['l', 'b']) nid = opcua.NodeId('stringarrayid', 3) qn = opcua.QualifiedName('stringarray', 9) self.assertEqual(nid, v.get_id()) self.assertEqual(qn, v.get_browse_name()) val = v.get_value() self.assertEqual(['l', 'b'], val)
def test_strrepr_nodeid(self): nid = opcua.NodeId('ns=2;s=PLC1.Manufacturer;') self.assertEqual(str(nid), 'ns=2;s=PLC1.Manufacturer;') self.assertEqual(repr(nid), 'ns=2;s=PLC1.Manufacturer;')
def test_qualifiedstring_nodeid(self): nid = opcua.NodeId('ns=2;s=PLC1.Manufacturer;') self.assertEqual(nid.namespace_index, 2) self.assertEqual(nid.identifier, 'PLC1.Manufacturer')
def test_numeric_nodeid(self): nid = opcua.NodeId(999, 2) self.assertEqual(nid.namespace_index, 2) self.assertEqual(nid.identifier, 999) self.assertTrue(nid.is_integer)
def test_string_nodeid(self): nid = opcua.NodeId('titi', 1) self.assertEqual(nid.namespace_index, 1) self.assertEqual(nid.identifier, 'titi') self.assertTrue(nid.is_string)
def test_zero_nodeid(self): self.assertEqual(opcua.NodeId(), opcua.NodeId(0, 0)) self.assertEqual(opcua.NodeId(), opcua.NodeId('ns=0;i=0;'))
def test_equal_nodeid(self): nid1 = opcua.NodeId(999, 2) nid2 = opcua.NodeId(999, 2) self.assertTrue(nid1 == nid2) self.assertTrue(id(nid1) != id(nid2))
def test_objects(self): objects = self.opc.get_objects_node() self.assertEqual(opcua.QualifiedName('Objects', 0), objects.get_browse_name()) nid = opcua.NodeId(85, 0) self.assertEqual(nid, objects.get_id())
def test_root(self): root = self.opc.get_root_node() self.assertEqual(opcua.QualifiedName('Root', 0), root.get_browse_name()) nid = opcua.NodeId(84, 0) self.assertEqual(nid, root.get_id())
def test_write_value(self): wv = opcua.WriteValue() self.assertEqual(wv.node_id, opcua.NodeId()) self.assertEqual(wv.attribute_id, opcua.AttributeId()) self.assertEqual(wv.index_range, '') self.assertEqual(wv.value.value, None)
def test_attribute_valueid(self): avid = opcua.ReadValueId() self.assertEqual(avid.node_id, opcua.NodeId()) self.assertEqual(avid.attribute_id, opcua.AttributeId()) self.assertEqual(avid.index_range, '') self.assertEqual(avid.data_encoding, opcua.QualifiedName())
#self.c = Condition() def data_change(self, handle, node, val, attr): print("Python: New data change event", handle, node, val, attr) self.val = val if __name__ == "__main__": client = opcua.Client(True) client.connect("opc.tcp://utgaard:4841") #s.connect("opc.tcp://192.168.56.101:48030") try: root = client.get_root_node() print("I got root: ", root) print("Childs are: ", root.get_children()) #getting node by id since nodejs seems not to support browsepath myvar = client.get_node(opcua.NodeId("ns=1;i=1001")) #myvar = root.get_child(["0:MyDevice"]) #print("yvar is: ", myvar,get_children()) #myvar = root.get_child(["0:MyDevice", "0:MyVariable1"]) print("myvar is: ", myvar) sclt = SubClient() sub = client.create_subscription(100, sclt) handle = sub.subscribe_data_change(myvar) print("Subscribe handle is: ", handle) embed() finally: client.disconnect()