Lstm_prediction/lstm_prediction/routes/api.php

71 lines
2.7 KiB
PHP

<?php
use App\Http\Controllers\SensorController;
use App\Http\Controllers\PredictionController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
// Endpoint untuk mendapatkan user jika menggunakan authentication
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
// Group API agar lebih rapi
Route::middleware('api')->group(function () {
// Endpoint untuk menerima data sensor dan menyimpannya ke database
Route::post('/sensor', [SensorController::class, 'storeSensorData']);
// Endpoint untuk mengambil 10 data sensor terbaru
Route::get('/latest-sensor-data', [SensorController::class, 'getLatestSensorData']);
// Endpoint untuk mengirim 30 data terakhir ke Flask untuk prediksi
// Route::post('/predict', [SensorController::class, 'predict']);
Route::post('/predict', function (Request $request) {
$data = $request->json()->all(); // Pastikan mengambil JSON sebagai array
Log::info('📥 Data diterima di Laravel:', $data);
if (!isset($data['predicted_suhu']) || !isset($data['predicted_kelembaban'])) {
Log::error('❌ Data tidak lengkap: ', $data);
return response()->json(['error' => 'Data tidak lengkap'], 400);
}
// Simpan ke database
try {
DB::table('predictions')->insert([
'predicted_suhu' => $data['predicted_suhu'],
'predicted_kelembaban' => $data['predicted_kelembaban'],
'prediction_datetime' => $data['prediction_datetime'],
'created_at' => now(),
'updated_at' => now()
]);
Log::info('✅ Data berhasil disimpan ke database.');
return response()->json(['message' => 'Data berhasil disimpan'], 201);
} catch (\Exception $e) {
Log::error('❌ Gagal menyimpan ke database: ' . $e->getMessage());
return response()->json(['error' => 'Gagal menyimpan ke database'], 500);
}
});
// Endpoint untuk mengambil 10 prediksi terbaru
Route::get('/latest-predictions', [SensorController::class, 'getLatestPredictions']);
// Endpoint untuk menyimpan prediksi dari Flask ke database
Route::post('/predictions', [PredictionController::class, 'store']);
});