Discovery 发现
OpcUaDiscovery 是静态类 (类方法), 不需要 Session 即可调用. 用于"连接前先探测":
子页跳转
- 列出某 Server 全部 Endpoint 请参考 get_endpoints.
- 通过 LDS 列出域内全部 Server 请参考 find_servers.
用法模式
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()