m2-inno-bedpressure/app/api/sensors/config/route.ts
2025-06-21 13:29:01 +07:00

225 lines
No EOL
4.6 KiB
TypeScript

import { NextResponse } from 'next/server';
import { SensorConfig } from '@/types/sensor';
// Sensor configuration that matches the API route
const SENSOR_CONFIG: SensorConfig[] = [
// Head area - Higher thresholds due to critical nature, faster escalation
{
id: "head-1",
x: 45,
y: 15,
zone: "head",
label: "Head Left",
pin: 2,
warningThreshold: 3000,
alarmThreshold: 3500,
warningDelayMs: 30000, // 30 seconds - fast escalation for head
baseNoise: 200
},
{
id: "head-2",
x: 55,
y: 15,
zone: "head",
label: "Head Right",
pin: 3,
warningThreshold: 3000,
alarmThreshold: 3500,
warningDelayMs: 30000, // 30 seconds
baseNoise: 150
},
// Shoulder area - Moderate thresholds, medium escalation time
{
id: "shoulder-1",
x: 35,
y: 25,
zone: "shoulders",
label: "Left Shoulder",
pin: 4,
warningThreshold: 2800,
alarmThreshold: 3200,
warningDelayMs: 45000, // 45 seconds
baseNoise: 250
},
{
id: "shoulder-2",
x: 65,
y: 25,
zone: "shoulders",
label: "Right Shoulder",
pin: 5,
warningThreshold: 2800,
alarmThreshold: 3200,
warningDelayMs: 45000, // 45 seconds
baseNoise: 220
},
// Upper back - Moderate thresholds, 1 minute escalation
{
id: "back-1",
x: 40,
y: 35,
zone: "back",
label: "Upper Back Left",
pin: 6,
warningThreshold: 2500,
alarmThreshold: 3000,
warningDelayMs: 60000, // 1 minute
baseNoise: 300
},
{
id: "back-2",
x: 50,
y: 35,
zone: "back",
label: "Upper Back Center",
pin: 7,
warningThreshold: 2500,
alarmThreshold: 3000,
warningDelayMs: 60000, // 1 minute
baseNoise: 350
},
{
id: "back-3",
x: 60,
y: 35,
zone: "back",
label: "Upper Back Right",
pin: 8,
warningThreshold: 2500,
alarmThreshold: 3000,
warningDelayMs: 60000, // 1 minute
baseNoise: 280
},
// Lower back/Hip area - Lower thresholds, 90 second escalation
{
id: "hip-1",
x: 35,
y: 50,
zone: "hips",
label: "Left Hip",
pin: 9,
warningThreshold: 2200,
alarmThreshold: 2800,
warningDelayMs: 90000, // 90 seconds
baseNoise: 400
},
{
id: "hip-2",
x: 50,
y: 50,
zone: "hips",
label: "Lower Back",
pin: 10,
warningThreshold: 2200,
alarmThreshold: 2800,
warningDelayMs: 90000, // 90 seconds
baseNoise: 450
},
{
id: "hip-3",
x: 65,
y: 50,
zone: "hips",
label: "Right Hip",
pin: 11,
warningThreshold: 2200,
alarmThreshold: 2800,
warningDelayMs: 90000, // 90 seconds
baseNoise: 380
},
// Thigh area - Lower thresholds, 2 minute escalation
{
id: "thigh-1",
x: 40,
y: 65,
zone: "legs",
label: "Left Thigh",
pin: 12,
warningThreshold: 2000,
alarmThreshold: 2500,
warningDelayMs: 120000, // 2 minutes
baseNoise: 320
},
{
id: "thigh-2",
x: 60,
y: 65,
zone: "legs",
label: "Right Thigh",
pin: 13,
warningThreshold: 2000,
alarmThreshold: 2500,
warningDelayMs: 120000, // 2 minutes
baseNoise: 300
},
// Calf area (mock data) - Lower thresholds, 2.5 minute escalation
{
id: "calf-1",
x: 40,
y: 75,
zone: "legs",
label: "Left Calf",
warningThreshold: 1800,
alarmThreshold: 2200,
warningDelayMs: 150000, // 2.5 minutes
baseNoise: 200
},
{
id: "calf-2",
x: 60,
y: 75,
zone: "legs",
label: "Right Calf",
warningThreshold: 1800,
alarmThreshold: 2200,
warningDelayMs: 150000, // 2.5 minutes
baseNoise: 220
},
// Feet (mock data) - Lowest thresholds, 3 minute escalation
{
id: "feet-1",
x: 45,
y: 85,
zone: "feet",
label: "Left Foot",
warningThreshold: 1500,
alarmThreshold: 1800,
warningDelayMs: 180000, // 3 minutes
baseNoise: 150
},
{
id: "feet-2",
x: 55,
y: 85,
zone: "feet",
label: "Right Foot",
warningThreshold: 1500,
alarmThreshold: 1800,
warningDelayMs: 180000, // 3 minutes
baseNoise: 160
},
];
export async function GET() {
try {
return NextResponse.json({
success: true,
sensors: SENSOR_CONFIG,
timestamp: new Date().toISOString()
});
} catch (error) {
console.error('Sensor config API error:', error);
return NextResponse.json({
success: false,
error: 'Failed to get sensor configuration',
sensors: [],
timestamp: new Date().toISOString()
}, { status: 500 });
}
}