"use client"; // /pages/system.tsx import React, { useEffect } from "react"; import { useDispatch, useSelector } from "react-redux"; import { AppDispatch, RootState } from "../redux/store"; // passe an, falls dein Pfad anders ist import { fetchSystemVoltTempThunk } from "../redux/thunks/fetchSystemVoltTempThunk"; import { Chart as ChartJS, CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend, } from "chart.js"; import { Line } from "react-chartjs-2"; // Chart.js registrieren ChartJS.register( CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend ); const SystemPage = () => { const dispatch = useDispatch(); const voltages = useSelector( (state: RootState) => state.systemVoltTemp.voltages ); const history = useSelector( (state: RootState) => state.systemVoltTemp.history ); useEffect(() => { dispatch(fetchSystemVoltTempThunk()); const interval = setInterval(() => { dispatch(fetchSystemVoltTempThunk()); }, 5000); return () => clearInterval(interval); }, [dispatch]); const chartData = { labels: history.map((h) => new Date(h.time).toLocaleTimeString()), datasets: [ { label: "+5V", data: history.map((h) => h["+5V"]), borderColor: "rgba(59,130,246,1)", backgroundColor: "rgba(59,130,246,0.5)", fill: false, }, { label: "+15V", data: history.map((h) => h["+15V"]), borderColor: "rgba(34,197,94,1)", backgroundColor: "rgba(34,197,94,0.5)", fill: false, }, { label: "-15V", data: history.map((h) => h["-15V"]), borderColor: "rgba(239,68,68,1)", backgroundColor: "rgba(239,68,68,0.5)", fill: false, }, { label: "-98V", data: history.map((h) => h["-98V"]), borderColor: "rgba(234,179,8,1)", backgroundColor: "rgba(234,179,8,0.5)", fill: false, }, { label: "ADC Temp", data: history.map((h) => h["ADC Temp"]), borderColor: "rgba(168,85,247,1)", backgroundColor: "rgba(168,85,247,0.5)", fill: false, }, { label: "CPU Temp", data: history.map((h) => h["CPU Temp"]), borderColor: "rgba(251,191,36,1)", backgroundColor: "rgba(251,191,36,0.5)", fill: false, }, ], }; const chartOptions = { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: false, grid: { color: "rgba(200,200,200,0.2)", }, title: { display: true, text: "Wert", }, }, x: { grid: { color: "rgba(200,200,200,0.2)", }, title: { display: true, text: "Zeit", }, }, }, plugins: { legend: { position: "bottom" as const, }, title: { display: true, text: "Systemspannungen und Temperaturen Verlauf", }, }, }; return (

System Spannungen & Temperaturen

{Object.entries(voltages).map(([key, value]) => (

{key}

{value}

))}

Verlauf (Messkurve)

); }; export default SystemPage;