Vehicle Stats Resource
Retrieve telemetry data for vehicles.
Basic Usage
use Samsara\Facades\Samsara;
// Get current stats
$stats = Samsara::vehicleStats()
->types(['gps', 'engineStates'])
->get();
Stat Types
Use the VehicleStatType enum or strings:
use Samsara\Enums\VehicleStatType;
// Using enum
$stats = Samsara::vehicleStats()
->types([
VehicleStatType::GPS,
VehicleStatType::ENGINE_STATES,
VehicleStatType::FUEL_PERCENTS,
])
->get();
// Using strings
$stats = Samsara::vehicleStats()
->types(['gps', 'engineStates', 'fuelPercents'])
->get();
Available Stat Types
| Type | Description |
|---|---|
gps |
GPS location |
engineStates |
Engine on/off/idle |
fuelPercents |
Fuel level |
obdOdometerMeters |
OBD odometer |
gpsOdometerMeters |
GPS odometer |
engineRpm |
Engine RPM |
batteryMilliVolts |
Battery voltage |
engineCoolantTemperatureMilliC |
Coolant temp |
defLevelMilliPercent |
DEF level |
obdEngineSeconds |
Engine hours |
Query Methods
Current Stats
Get the most recent stats:
$stats = Samsara::vehicleStats()
->types(['gps'])
->get();
Stats Feed
Get a streaming feed of stats:
$stats = Samsara::vehicleStats()
->feed()
->types(['gps', 'engineStates'])
->get();
Historical Stats
Get stats for a time range:
$stats = Samsara::vehicleStats()
->history()
->types(['gps'])
->between('2024-01-01', '2024-01-31')
->get();
Filtering
By Vehicle
$stats = Samsara::vehicleStats()
->types(['gps'])
->whereVehicle('vehicle-id')
->get();
// Multiple vehicles
$stats = Samsara::vehicleStats()
->types(['gps'])
->whereVehicle(['vehicle-1', 'vehicle-2'])
->get();
By Tag
$stats = Samsara::vehicleStats()
->types(['gps'])
->whereTag('tag-id')
->get();
With Decorations
Include address or reverse geocoding:
$stats = Samsara::vehicleStats()
->types(['gps'])
->withDecorations(['address', 'reverseGeo'])
->get();
Time Ranges
use Carbon\Carbon;
// Between dates
$stats = Samsara::vehicleStats()
->types(['gps'])
->between(Carbon::now()->subDay(), Carbon::now())
->get();
// Start and end time
$stats = Samsara::vehicleStats()
->types(['gps'])
->startTime('2024-01-01T00:00:00Z')
->endTime('2024-01-31T23:59:59Z')
->get();
Lazy Loading
For large datasets, use lazy loading:
Samsara::vehicleStats()
->types(['gps'])
->between($start, $end)
->lazy()
->each(function ($stat) {
// Process each stat
});
VehicleStats Entity
$stat = Samsara::vehicleStats()->types(['gps'])->first();
// Get GPS location
$gps = $stat->getGps(); // ?GpsLocation
// Get engine state
$state = $stat->getEngineState(); // ?EngineState enum
// Check engine status
$stat->isEngineOn(); // bool
$stat->isEngineOff(); // bool
$stat->isEngineIdle(); // bool
// Get values
$stat->getFuelPercent(); // ?int
$stat->getObdOdometerMeters(); // ?int
$stat->getGpsOdometerMeters(); // ?int
$stat->getEngineRpm(); // ?int
$stat->getBatteryMilliVolts(); // ?int
$stat->getEngineCoolantTemperatureMilliC(); // ?int
$stat->getDefLevelMilliPercent(); // ?int
$stat->getObdEngineSeconds(); // ?int
GpsLocation Entity
$gps = $stat->getGps();
$gps->latitude; // float
$gps->longitude; // float
$gps->time; // string
$gps->headingDegrees; // ?int
$gps->speedMilesPerHour; // ?float