跳到主要内容

Discovery 发现

OpcUaDiscovery 是静态类 (类方法), 不需要 Session 即可调用. 用于"连接前先探测":

子页跳转

用法模式

from darra_opcua import OpcUaSession, OpcUaDiscovery, MessageSecurityMode, UserTokenType

# 1. 先 get_endpoints 看服务端支持哪些组合
endpoints = OpcUaDiscovery.get_endpoints("opc.tcp://server:4840")

# 2. 挑一个匹配的 (例如 SignAndEncrypt + Username)
ep = next(e for e in endpoints
if e.security_mode == MessageSecurityMode.SignAndEncrypt
and any(t.token_type == UserTokenType.Username for t in e.user_tokens))

# 3. 用挑出来的 Endpoint 真正连接
with OpcUaSession(
endpoint_url=ep.endpoint_url,
security_mode=ep.security_mode,
security_policy_uri=ep.security_policy_uri,
username="operator", password="secret",
client_cert_path=r"C:\certs\client.pfx") as ua:
ua.connect()

下一步