get('filter'); $query = SensorData::query(); $timestamps = []; $dataAtas = []; $dataBawah = []; switch ($filter) { case 'second': // Data per detik dalam 1 jam terakhir $now = Carbon::now(); $oneHourAgo = Carbon::now()->subHour(); // Mengambil data untuk kedua perangkat $sensorData = $query->whereBetween('created_at', [$oneHourAgo, $now]) ->orderBy('created_at', 'asc') ->get(); foreach ($sensorData as $data) { // Menyimpan timestamp dalam format H:i:s $timestamps[] = $data->created_at->format('H:i:s'); if ($data->device_name === 'klampisan_atas') { $dataAtas[] = round($data->distance, 2); // Pembulatan data } elseif ($data->device_name === 'klampisan_bawah') { $dataBawah[] = round($data->distance, 2); // Pembulatan data } } break; case 'hour': // Data per jam dalam 24 jam terakhir $today = Carbon::today(); $sensorData = $query->where('created_at', '>=', $today) ->selectRaw('HOUR(created_at) as hour, AVG(distance) as avg_distance, device_name') ->groupByRaw('HOUR(created_at), device_name') // Grup berdasarkan jam dan device_name ->orderBy('hour', 'asc') ->get(); foreach ($sensorData as $data) { $timestamps[] = $data->hour . ":00"; // Format jam if ($data->device_name === 'klampisan_atas') { $dataAtas[$data->hour] = round($data->avg_distance, 2); // Rata-rata jarak } elseif ($data->device_name === 'klampisan_bawah') { $dataBawah[$data->hour] = round($data->avg_distance, 2); // Rata-rata jarak } } // Memastikan semua jam dari 0 hingga 23 ada di timestamp for ($i = 0; $i < 24; $i++) { $timestamps[$i] = str_pad($i, 2, '0', STR_PAD_LEFT) . ":00"; // Menambahkan jam $dataAtas[$i] = $dataAtas[$i] ?? 0; // Default 0 jika tidak ada data $dataBawah[$i] = $dataBawah[$i] ?? 0; // Default 0 jika tidak ada data } break; case 'today': default: // Data sepanjang hari ini per menit $today = Carbon::today(); $sensorData = $query->whereDate('created_at', $today) ->orderBy('created_at', 'asc') ->get(); foreach ($sensorData as $data) { // Menyimpan timestamp dalam format H:i $timestamps[] = $data->created_at->format('H:i'); if ($data->device_name === 'klampisan_atas') { $dataAtas[] = round($data->distance, 2); // Pembulatan data } elseif ($data->device_name === 'klampisan_bawah') { $dataBawah[] = round($data->distance, 2); // Pembulatan data } } break; } return response()->json([ 'timestamps' => $timestamps, 'atas' => $dataAtas, 'bawah' => $dataBawah, ]); } }