我是opcua的新手,我一直在尝试通过以下方式进行交流:
服务器导入xml->客户端读取一个值(使用get_node)->基于该值,客户端向服务器发送请求->服务器对请求进行响应->客户端收到响应。
在客户端读取该值之前,我已经完成了该部分。我现在正在尝试向服务器发送请求。 但是我不知道该使用哪种方法?
我已经看到源代码,并且可以看到send_request()方法。但是我不知道如何发送请求。
一旦我发送了请求,服务器将如何响应?请引导我完成此过程,或为我提供示例。
我的客户端和服务器如下:
server.py
from opcua import Server
from opcua.ua.uatypes import NodeId, NumericNodeId
from opcua import ua
server = Server()
server.import_xml("Opc.Ua.Di.NodeSet2.xml");
server.import_xml("final.xml");
server.set_endpoint("opc.tcp://localhost:4840/MyServer");
server.set_server_name("MyServer");
MyServerNameSpace = server.get_namespace_index("urn:freeopcua:python:server");
server.start();
client.py
from opcua import Client
from opcua import ua
from opcua.ua import StringNodeId
client = Client("opc.tcp://localhost:4840");
client.connect_socket();
client.create_session();
client.activate_session(username=None, password=None, certificate=None);
objects = client.get_objects_node();
xx = client.get_node(StringNodeId("i40.io/PrmInst/Temp_1",3));
tempval = xx.get_value();
if tempval < 20 :
#here i want to write the request code
答案 0 :(得分:0)
您能否更精确地请求代码。如果您使用的是状态码,则 使用
tempval = xx.get_data_value()
if tempval.Value.Value < 20:
status = tempval.StatusCode.name # eg: Good/Bad etc..
message= tempval.StatusCode.doc
尝试使用get_data_value()为您提供更多信息。从那里您可以提取出您所需要的详细信息。