From 2bad8c9ea0f06069f615fb77b6f728920db9d9a9 Mon Sep 17 00:00:00 2001 From: openhands Date: Sat, 1 Nov 2025 19:59:59 +0000 Subject: [PATCH] fix: Fix OPC UA client async security policy setting and handle missing Modbus registers - OPC UA client: Await set_security_string method call - Modbus client: Handle case where performance metrics registers might not exist --- src/dashboard/protocol_clients.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/dashboard/protocol_clients.py b/src/dashboard/protocol_clients.py index e264569..41daf3a 100644 --- a/src/dashboard/protocol_clients.py +++ b/src/dashboard/protocol_clients.py @@ -28,7 +28,7 @@ class OPCUAClient: # Explicitly set security policy to match server configuration # The server supports both Basic256Sha256 and None security policies # Use None for development/testing - self._client.set_security_string("http://opcfoundation.org/UA/SecurityPolicy#None") + await self._client.set_security_string("http://opcfoundation.org/UA/SecurityPolicy#None") # Set timeout for connection await asyncio.wait_for(self._client.connect(), timeout=5.0) @@ -201,8 +201,13 @@ class ModbusClient: # Read safety status - base address 200 safety_status = self.read_input_register(200 + pump_offset, 1) - # Read performance metrics - base address 400 - efficiency = self.read_input_register(400 + pump_offset, 1) + # Read performance metrics - base address 400 (if available) + efficiency = None + try: + efficiency = self.read_input_register(400 + pump_offset, 1) + except Exception: + # Performance metrics might not be available + pass return { "setpoint": setpoint[0] if setpoint else None,