take(30)->get(); // Pastikan jumlah data cukup if ($sensorData->count() < 30) { Log::warning("❌ Tidak cukup data (kurang dari 30). Pengiriman dibatalkan."); return; } // Format data untuk dikirim ke Flask $dataToSend = [ 'sensor_data' => $sensorData->map(fn($item) => [ 'suhu' => $item->temperature, 'kelembaban' => $item->humidity, 'datetime' => $item->created_at ? Carbon::parse($item->created_at)->setTimezone('Asia/Jakarta')->format('Y-m-d H:i:s') : null, ])->toArray() ]; Log::info("🚀 Mengirim data ke Flask..."); try { // Kirim data ke Flask $response = Http::timeout(30)->post('http://192.168.38.96:5000/predict', $dataToSend); //gunakan ip laptop if ($response->successful()) { Log::info("✅ Prediksi diterima dari Flask!"); $prediction = $response->json(); // Simpan hasil prediksi ke database Prediction::create([ 'predicted_suhu' => $prediction['predicted_suhu'], 'predicted_kelembaban' => $prediction['predicted_kelembaban'], 'prediction_datetime' => $prediction['prediction_datetime'], ]); Log::info("✅ Hasil prediksi berhasil disimpan ke database."); } else { Log::error("❌ Flask menolak request: " . $response->body()); } } catch (\Exception $e) { Log::error("❌ Error mengirim data ke Flask: " . $e->getMessage()); } } }