Files
strom-next/app/api/laden/route.ts
T
admin 46c8057155 E-Auto-Lade-Erkennung im 31d-Diagramm
Markiert im 31d-Diagramm die Tage rot, an denen das E-Auto geladen wurde:
Leistung (Feld 'leistung', W) lag laenger als LADEN_MIN_HOURS (Default 2h)
ununterbrochen ueber LADEN_THRESHOLD_KW (Default 11 kW).

- Erkennung serverseitig per Flux stateDuration auf den Sekundendaten
  (24h Vorlauf fuer ueber Mitternacht laufende Ladungen an der Monatsgrenze)
- /api/laden?month=YYYY-MM, Ergebnis gecacht (abgeschlossene Monate dauerhaft,
  laufender Monat 5 min) -> ~15s nur beim ersten Aufruf
- Markierung wird asynchron nachgeladen, Balken erscheinen sofort
- Schwelle/Dauer per Env (LADEN_THRESHOLD_KW, LADEN_MIN_HOURS) einstellbar
- BarChart: optionales highlight-Set faerbt passende Balken

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 14:49:44 +02:00

29 lines
990 B
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import { fetchLadetage, LADEN_THRESHOLD_KW, LADEN_MIN_HOURS } from '@/lib/laden';
// GET /api/laden?month=YYYY-MM
// Liefert die Tage (Tages-Anfangs-Zeitstempel ms), an denen das E-Auto geladen wurde.
export async function GET(request: NextRequest) {
const month = request.nextUrl.searchParams.get('month');
if (!month || !/^\d{4}-\d{2}$/.test(month)) {
return NextResponse.json(
{ success: false, error: 'Parameter month=YYYY-MM erforderlich.' },
{ status: 400 }
);
}
try {
const days = await fetchLadetage(month);
return NextResponse.json(
{ success: true, days, thresholdKw: LADEN_THRESHOLD_KW, minHours: LADEN_MIN_HOURS },
{ headers: { 'Cache-Control': 'no-store' } }
);
} catch (error) {
console.error('Laden detection error:', error);
return NextResponse.json(
{ success: false, error: 'Fehler bei der Lade-Erkennung.' },
{ status: 500 }
);
}
}