52 lines
1.6 KiB
JavaScript
52 lines
1.6 KiB
JavaScript
/**
|
|
* Kommunikationsmodul zur API für Telemetriedatenabruf
|
|
* Fetch von Telemetriedaten über /data
|
|
* @module api
|
|
*/
|
|
|
|
/**
|
|
* Führt GET-Request auf /data aus und gibt JSON mit Telemetrie zurück.
|
|
*
|
|
* @async
|
|
* @function fetchTelemetryData
|
|
* @param {Object} params - Filterparameter für den Datenabruf
|
|
* @param {string} [params.time_range] - Zeitfenster (z. B. '2026-03-10T00:00:00Z,2026-03-10T06:00:00Z')
|
|
* @param {string|number} [params.ir_gain] - IR-Gain Einstellung
|
|
* @param {string} [params.material_type] - Materialtyp
|
|
* @returns {Promise<Array<{timestamp:string,vbat:number,ir_gain:number,drift:number,event_flag:boolean}>>>} JSON-Array mit Telemetriedaten
|
|
* @throws {Error} Bei Netzwerk- oder Parsing-Fehlern
|
|
*/
|
|
export async function fetchTelemetryData(params = {}) {
|
|
const query = new URLSearchParams();
|
|
|
|
if (params.time_range) query.append('time_range', params.time_range);
|
|
if (params.ir_gain) query.append('ir_gain', params.ir_gain);
|
|
if (params.material_type) query.append('material_type', params.material_type);
|
|
|
|
const queryString = query.toString();
|
|
const url = queryString ? `/data?${queryString}` : '/data';
|
|
|
|
try {
|
|
const response = await fetch(url, {
|
|
method: 'GET',
|
|
headers: {
|
|
'Accept': 'application/json'
|
|
}
|
|
});
|
|
|
|
if (!response.ok) {
|
|
throw new Error(`Server returned ${response.status} (${response.statusText})`);
|
|
}
|
|
|
|
const data = await response.json();
|
|
|
|
if (!Array.isArray(data)) {
|
|
throw new Error('Invalid response format: Expected an array');
|
|
}
|
|
|
|
return data;
|
|
} catch (error) {
|
|
console.error('Fehler beim Abrufen der Telemetriedaten:', error);
|
|
throw error;
|
|
}
|
|
}
|