From 70c4fce32478583e20fe19a96188a0ad1f5c4373 Mon Sep 17 00:00:00 2001 From: Mika Date: Sun, 5 Jul 2026 02:07:32 +0000 Subject: [PATCH] Add data_visualization/js/api.js --- data_visualization/js/api.js | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 data_visualization/js/api.js diff --git a/data_visualization/js/api.js b/data_visualization/js/api.js new file mode 100644 index 0000000..179f456 --- /dev/null +++ b/data_visualization/js/api.js @@ -0,0 +1,44 @@ +/** + * @module api + * Kommuniziert mit der Backend-Route /data und liefert Messdaten. + * @description Dieses Modul stellt Funktionen zum Abrufen der Sensordaten bereit. + */ + +/** + * Holt Sensorwerte (Temperatur, Luftfeuchtigkeit, Licht) von der API. + * @async + * @function fetchSensorData + * @returns {Promise>} Messdaten-Array + * @throws {Error} Wenn der Abruf fehlschlägt oder die Antwort ungültig ist. + */ +export async function fetchSensorData() { + try { + const response = await fetch('/data', { + method: 'GET', + headers: { + 'Accept': 'application/json' + } + }); + + if (!response.ok) { + throw new Error(`API request failed with status ${response.status}`); + } + + const data = await response.json(); + + if (!Array.isArray(data)) { + throw new Error('Invalid API response: expected an array.'); + } + + return data.map(item => ({ + timestamp: item.timestamp ?? '', + location_id: item.location_id ?? '', + temperature: typeof item.temperature === 'number' ? item.temperature : null, + humidity: typeof item.humidity === 'number' ? item.humidity : null, + light: typeof item.light === 'number' ? item.light : null + })); + } catch (error) { + console.error('Fehler beim Abrufen der Sensordaten:', error); + throw error; + } +}