warning system

This commit is contained in:
Siwat Sirichai 2025-06-21 13:29:01 +07:00
parent 5e029ff99c
commit 0c5c7bcb5f
10 changed files with 1074 additions and 54 deletions

View file

@ -1,36 +1,209 @@
import { NextResponse } from 'next/server';
import { SensorConfig } from '@/types/sensor';
// Sensor configuration that matches the API route
const SENSOR_CONFIG = [
// Head area
{ id: "head-1", x: 45, y: 15, zone: "head", label: "Head Left", pin: 2 },
{ id: "head-2", x: 55, y: 15, zone: "head", label: "Head Right", pin: 3 },
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
{ id: "shoulder-1", x: 35, y: 25, zone: "shoulders", label: "Left Shoulder", pin: 4 },
{ id: "shoulder-2", x: 65, y: 25, zone: "shoulders", label: "Right Shoulder", pin: 5 },
// 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
{ id: "back-1", x: 40, y: 35, zone: "back", label: "Upper Back Left", pin: 6 },
{ id: "back-2", x: 50, y: 35, zone: "back", label: "Upper Back Center", pin: 7 },
{ id: "back-3", x: 60, y: 35, zone: "back", label: "Upper Back Right", pin: 8 },
// 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
{ id: "hip-1", x: 35, y: 50, zone: "hips", label: "Left Hip", pin: 9 },
{ id: "hip-2", x: 50, y: 50, zone: "hips", label: "Lower Back", pin: 10 },
{ id: "hip-3", x: 65, y: 50, zone: "hips", label: "Right Hip", pin: 11 },
// 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
{ id: "thigh-1", x: 40, y: 65, zone: "legs", label: "Left Thigh", pin: 12 },
{ id: "thigh-2", x: 60, y: 65, zone: "legs", label: "Right Thigh", pin: 13 },
// 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)
{ id: "calf-1", x: 40, y: 75, zone: "legs", label: "Left Calf" },
{ id: "calf-2", x: 60, y: 75, zone: "legs", label: "Right Calf" },
// 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)
{ id: "feet-1", x: 45, y: 85, zone: "feet", label: "Left Foot" },
{ id: "feet-2", x: 55, y: 85, zone: "feet", label: "Right Foot" },
// 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() {