71 lines
2.7 KiB
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']);
|
|
});
|