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);
|
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::get('/gps/recent', [GpsController::class, 'recent']);
|
||||||
Route::post('/device/{imei}/telemetry', [DeviceApiController::class, 'telemetry']);
|
Route::post('/device/{imei}/telemetry', [DeviceApiController::class, 'telemetry']);
|
||||||
Route::get('/device/{imei}/commands', [DeviceApiController::class, 'commands']);
|
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']);
|
Route::post('/device/{imei}/command-receipts', [DeviceApiController::class, 'commandReceipts']);
|
||||||
|
|||||||
Reference in New Issue
Block a user