225 lines
No EOL
4.6 KiB
TypeScript
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 });
|
|
}
|
|
} |