diff --git a/stores/bedPressureStore.ts b/stores/bedPressureStore.ts index 72a94a4..ef52c9f 100644 --- a/stores/bedPressureStore.ts +++ b/stores/bedPressureStore.ts @@ -103,13 +103,14 @@ export const useBedPressureStore = create((set, get) => ({ setSelectedTimespan: (timespan) => set({ selectedTimespan: timespan }), setActiveAlarms: (alarms) => set({ activeAlarms: alarms }), - - // Computed values + // Computed values averageValue: () => { const { sensorData } = get(); const sensors = Object.values(sensorData) as SensorData[]; - if (sensors.length === 0) return 0; - return sensors.reduce((sum: number, sensor: SensorData) => sum + sensor.currentValue, 0) / sensors.length; + // Only calculate average for sensors with hardware data + const hardwareSensors = sensors.filter(sensor => sensor.source === 'hardware'); + if (hardwareSensors.length === 0) return 0; + return hardwareSensors.reduce((sum: number, sensor: SensorData) => sum + sensor.currentValue, 0) / hardwareSensors.length; }, criticalSensors: () => { @@ -258,20 +259,29 @@ export const useBedPressureStore = create((set, get) => ({ warningDelayMs, warningStartTime }; - }); - - set({ + }); set({ sensorData: updated, - isConnected: data.connected, + isConnected: data.connected || false, activeAlarms: alarmManager.getActiveAlarms() }); if (newAlerts.length > 0) { get().addAlerts(newAlerts); } - } - } catch (error) { + } else { // No sensor data available - set as disconnected + const { alarmManager } = get(); + set({ + isConnected: false, + activeAlarms: alarmManager.getActiveAlarms() + }); + } } catch (error) { console.error('Failed to fetch sensor data:', error); + // Set as disconnected on error + const { alarmManager } = get(); + set({ + isConnected: false, + activeAlarms: alarmManager.getActiveAlarms() + }); } },