Add commands for posting and reboot
This commit is contained in:
11
app/Http/Controllers/Api/DeviceController.php
Normal file
11
app/Http/Controllers/Api/DeviceController.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class DeviceController extends Controller
|
||||
{
|
||||
//
|
||||
}
|
||||
@ -165,4 +165,28 @@ return response($body, 200)
|
||||
|
||||
return response()->json(['ok' => true], 200);
|
||||
}
|
||||
public function storeCommand(Request $request, $imei)
|
||||
{
|
||||
// 1. Validate the incoming data from the T3 dashboard
|
||||
$validated = $request->validate([
|
||||
'type' => 'required|string|in:wifi,sleep,telemetry_sec,poll_sec,ota,ring_fence,lights,camera,reboot',
|
||||
'payload' => 'present|nullable|array',
|
||||
]);
|
||||
|
||||
// 2. Find the device by its IMEI, or create it if it's the first time we've seen it
|
||||
$device = Device::firstOrCreate(['imei' => $imei]);
|
||||
|
||||
// 3. Create the command and associate it with the device
|
||||
$command = $device->commands()->create([
|
||||
'type' => $validated['type'],
|
||||
'payload' => $validated['payload'],
|
||||
'status' => 'queued', // Set a default status
|
||||
]);
|
||||
|
||||
// 4. Return a success response with the new command's ID
|
||||
return response()->json([
|
||||
'ok' => true,
|
||||
'command_id' => $command->id,
|
||||
], 201); // HTTP 201 Created
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,4 +13,5 @@ Route::get('/gps/latest-any', [GpsController::class, 'latestAny']);
|
||||
Route::get('/gps/recent', [GpsController::class, 'recent']);
|
||||
Route::post('/device/{imei}/telemetry', [DeviceApiController::class, 'telemetry']);
|
||||
Route::get('/device/{imei}/commands', [DeviceApiController::class, 'commands']);
|
||||
Route::post('/device/{imei}/commands', [DeviceApiController::class, 'storeCommand']);
|
||||
Route::post('/device/{imei}/command-receipts', [DeviceApiController::class, 'commandReceipts']);
|
||||
|
||||
Reference in New Issue
Block a user