From 769f64ad4042decf059a1422a74cf95dc5b07d52 Mon Sep 17 00:00:00 2001 From: openhands Date: Sat, 1 Nov 2025 14:12:05 +0000 Subject: [PATCH] fix: Use consistent Modbus register addresses - Fixed random register generation in signals endpoint - Each pump now gets consistent register blocks (40011-40014, 40021-40024, etc.) - Addresses now follow logical pattern for industrial SCADA systems --- src/dashboard/api.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/dashboard/api.py b/src/dashboard/api.py index e5e1922..7483cdc 100644 --- a/src/dashboard/api.py +++ b/src/dashboard/api.py @@ -571,11 +571,15 @@ async def get_signals(): ]) # Modbus signals for this pump + # Use consistent register addresses for each pump type + pump_num = int(pump_id.split('_')[1]) # Extract pump number from PUMP_001, PUMP_002, etc. + base_register = 40000 + (pump_num * 10) # Each pump gets 10 registers starting at 40001, 40011, etc. + signals.extend([ { "name": f"Station_{station_id}_Pump_{pump_id}_Setpoint", "protocol": "modbus", - "address": f"400{random.randint(1, 99)}", + "address": f"{base_register + 1}", "data_type": "Integer", "current_value": f"{random.randint(0, 500)} Hz (x10)", "quality": "Good", @@ -584,7 +588,7 @@ async def get_signals(): { "name": f"Station_{station_id}_Pump_{pump_id}_ActualSpeed", "protocol": "modbus", - "address": f"400{random.randint(1, 99)}", + "address": f"{base_register + 2}", "data_type": "Integer", "current_value": f"{random.randint(0, 500)} Hz (x10)", "quality": "Good", @@ -593,7 +597,7 @@ async def get_signals(): { "name": f"Station_{station_id}_Pump_{pump_id}_Power", "protocol": "modbus", - "address": f"400{random.randint(1, 99)}", + "address": f"{base_register + 3}", "data_type": "Integer", "current_value": f"{random.randint(0, 750)} kW (x10)", "quality": "Good", @@ -602,7 +606,7 @@ async def get_signals(): { "name": f"Station_{station_id}_Pump_{pump_id}_Temperature", "protocol": "modbus", - "address": f"400{random.randint(1, 99)}", + "address": f"{base_register + 4}", "data_type": "Integer", "current_value": f"{random.randint(20, 35)} °C", "quality": "Good",