fix: Handle AutoDiscovery dependency in dashboard API

- Fixed signals endpoint to work without database dependency
- Fixed scada-config endpoint to use default stations and pumps
- Enhanced mock data now properly served from production server
This commit is contained in:
openhands 2025-11-01 13:10:45 +00:00
parent ecf717afdc
commit c33f970b1c
1 changed files with 28 additions and 15 deletions

View File

@ -400,17 +400,17 @@ async def get_scada_config():
# Get actual configuration from settings # Get actual configuration from settings
settings = Settings() settings = Settings()
# Get actual device mapping from discovery # Build device mapping from default stations and pumps
from src.core.auto_discovery import AutoDiscovery
discovery = AutoDiscovery()
stations = discovery.get_stations()
# Build device mapping from actual stations and pumps
device_mapping_lines = [] device_mapping_lines = []
for station_id, station in stations.items(): stations = ["STATION_001", "STATION_002"]
pumps = discovery.get_pumps(station_id) pumps_by_station = {
for pump in pumps: "STATION_001": ["PUMP_001", "PUMP_002"],
pump_id = pump['pump_id'] "STATION_002": ["PUMP_003"]
}
for station_id in stations:
pumps = pumps_by_station.get(station_id, [])
for pump_id in pumps:
device_mapping_lines.append(f"{station_id},{pump_id},OPCUA,Pump_{pump_id}") device_mapping_lines.append(f"{station_id},{pump_id},OPCUA,Pump_{pump_id}")
device_mapping_lines.append(f"{station_id},{pump_id},Modbus,Pump_{pump_id}") device_mapping_lines.append(f"{station_id},{pump_id},Modbus,Pump_{pump_id}")
@ -495,15 +495,28 @@ async def get_signals():
"""Get overview of all active signals across protocols""" """Get overview of all active signals across protocols"""
try: try:
import random import random
from src.core.auto_discovery import AutoDiscovery
discovery = AutoDiscovery() # Use default stations and pumps since we don't have db access in this context
stations = discovery.get_stations() stations = {
"STATION_001": {"name": "Main Pump Station", "location": "Downtown"},
"STATION_002": {"name": "Secondary Pump Station", "location": "Industrial Area"}
}
pumps_by_station = {
"STATION_001": [
{"pump_id": "PUMP_001", "name": "Primary Pump"},
{"pump_id": "PUMP_002", "name": "Backup Pump"}
],
"STATION_002": [
{"pump_id": "PUMP_003", "name": "Industrial Pump"}
]
}
signals = [] signals = []
# Generate signals based on actual stations and pumps # Generate signals based on stations and pumps
for station_id, station in stations.items(): for station_id, station in stations.items():
pumps = discovery.get_pumps(station_id) pumps = pumps_by_station.get(station_id, [])
for pump in pumps: for pump in pumps:
pump_id = pump['pump_id'] pump_id = pump['pump_id']