PHPackages                             mr-wolf-gb/traccar - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. mr-wolf-gb/traccar

ActiveLibrary[HTTP &amp; Networking](/categories/http)

mr-wolf-gb/traccar
==================

Traccar GPS server

1.0.1(10mo ago)124893MITPHPPHP ^8.1CI failing

Since Feb 13Pushed 10mo ago2 watchersCompare

[ Source](https://github.com/mr-wolf-gb/traccar)[ Packagist](https://packagist.org/packages/mr-wolf-gb/traccar)[ Docs](https://github.com/mr-wolf-gb/traccar)[ GitHub Sponsors](https://github.com/mr-wolf-gb)[ Patreon](https://www.patreon.com/wolf_development)[ RSS](/packages/mr-wolf-gb-traccar/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (11)Versions (4)Used By (0)

Traccar GPS server
==================

[](#traccar-gps-server)

[![Latest Version on Packagist](https://camo.githubusercontent.com/fa81f0513e813f76edfb86d7f9c55080098325f531e7bc969cf2cd5d8ef1a7f1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d722d776f6c662d67622f747261636361722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/mr-wolf-gb/traccar)[![Total Downloads](https://camo.githubusercontent.com/0cfd7b9270dd178bc9aac65260deb4311da524b97bd6e7287e24a1902751e8db/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d722d776f6c662d67622f747261636361722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/mr-wolf-gb/traccar)[![Latest Unstable Version](https://camo.githubusercontent.com/4826af6050be8376304aaf29f41e532dc234845d71d4244fa4b1aeefb8250e44/687474703a2f2f706f7365722e707567782e6f72672f6d722d776f6c662d67622f747261636361722f762f756e737461626c653f7374796c653d666c61742d737175617265)](https://packagist.org/packages/mr-wolf-gb/traccar)[![License](https://camo.githubusercontent.com/db6338f8348bb8167e378ffa55b31243ab00cf0cd824bd125ad89131c3c2a003/687474703a2f2f706f7365722e707567782e6f72672f6d722d776f6c662d67622f747261636361722f6c6963656e73653f7374796c653d666c61742d737175617265)](https://packagist.org/packages/mr-wolf-gb/traccar)[![PHP Version Require](https://camo.githubusercontent.com/7452af395e9e23340e5f35335fa030b13a2ac6e68509948dcb14149429096ade/687474703a2f2f706f7365722e707567782e6f72672f6d722d776f6c662d67622f747261636361722f726571756972652f7068703f7374796c653d666c61742d737175617265)](https://packagist.org/packages/mr-wolf-gb/traccar)

This Laravel package serves as a seamless integration tool, empowering developers to effortlessly interact with Traccar servers through their robust API. Traccar, a powerful GPS tracking platform, becomes more accessible than ever as this package streamlines communication between your Laravel application and the Traccar server, offering a wide range of functionalities and capabilities. Whether you're retrieving real-time location data, managing devices, or leveraging advanced tracking features, this package simplifies the process, enhancing the efficiency and extensibility of your Laravel projects.

Table of Contents
-----------------

[](#table-of-contents)

- [Installation](#installation)
- [Features and Usage](#features-and-usage)
    - [Multi-users and servers](#multi-users-and-servers)
    - [Available ressources](#available-ressources)
        - [Server](#server)
        - [Session](#session)
        - [User](#user)
        - [Group](#group)
        - [Device](#device)
        - [Geofence](#geofence)
        - [Notification](#notification)
        - [Position](#position)
        - [Event](#event)
        - [Driver](#driver)
        - [Report](#report)
- [Traccar Custom Server and Features](#traccar-custom-server)
- [Testing](#testing)
- [Changelog](#changelog)
- [Contributing](#contributing)
- [Credits](#credits)
- [License](#license)

🔧 Required PHP version
----------------------

[](#wrench-required-php-version)

VersionPhp Version1.0.0^8.1Installation
------------

[](#installation)

You can install the package via composer:

```
composer require mr-wolf-gb/traccar
```

You can publish the config and migration:

```
php artisan vendor:publish --provider="MrWolfGb\Traccar\TraccarServiceProvider"
```

Set traccar server information \[.env file\]:

```
TRACCAR_BASE_URL="http://localhost:8082/"
TRACCAR_SOCKET_URL="ws://localhost:8082/api/socket"
TRACCAR_USERNAME="admin@traccar.local"
TRACCAR_PASSWORD="password"
TRACCAR_TOKEN="RzBFAiEA84hXSL6uV6FQyBX0_Ds1a6NMcSC..."
# token required only when using fetch session informations
```

✨ Features and Usage
--------------------

[](#-features-and-usage)

#### Multi-users and servers

[](#multi-users-and-servers)

```
// by default, it uses .env credentials else you can set it manually
// Inject service as public variable in Controller
public function __construct(public TraccarService $traccarService)
{
    $this->traccarService->setEmail("user1@traccar.local");
    $this->traccarService->setPassword("password");
    $this->traccarService->setBaseUrl("http://localhost:8082/");
    $this->traccarService->setToken("ws://localhost:8082/api/socket");
}
// or inject directly in specific method
public function index(TraccarService $traccarService)
{
    //...
}
```

#### Available ressources

[](#available-ressources)

- #### *Server*

    [](#server)

Model : **[Server Model](src/Models/Server.php)**

```
public function index(TraccarService $traccarService)
{
    $serverRepo = $traccarService->serverRepository();
    // Get server information
    $srv = $serverRepo->fetchServerInformation();
    // Update server information
    $serverRepo->updateServerInformation(server: $srv);
}
```

- #### *Session*

    [](#session)

Model : **[Session Model](src/Models/Session.php)**

```
public function index(TraccarService $traccarService)
{
    $sessionRepo = $traccarService->sessionRepository();
    // Create new session
    $session = $sessionRepo->createNewSession();
    // Get connected session [Require user Token in configuration]
    $session = $sessionRepo->fetchSessionInformation();
    // Close session
    $sessionRepo->closeSession();
}
```

- #### *User*

    [](#user)

Model : **[User Model](src/Models/User.php)**

```
public function index(TraccarService $traccarService)
{
    $userRepo = $traccarService->userRepository();
    // Get list of users
    $list = $userRepo->fetchListUsers();
    // Create new user
    $user = $userRepo->createUser(
        name: 'test',
        email: 'test@test.local',
        password: 'test'
    );
    // Create new user with Model : MrWolfGb\Traccar\Models\User
    $user = $userRepo->createNewUser(new User([
        'name' => 'test',
        'email' => 'test@test.local',
        'password' => 'test',
    ]));
    // Update user
    $user = $userRepo->updateUser(user: $user);
    // Delete user : int|User $user
    $userRepo->deleteUser(user: $user);
    // Assign user to device : int|User $user, int|Device $device
    $userRepo->assignUserDevice(user: 1, device: 1);
    // Remove user from device : int|User $user, int|Device $device
    $userRepo->removeUserDevice(user: 1, device: 1);
}
```

- #### *Group*

    [](#group)

Model : **[Group Model](src/Models/Group.php)**

```
public function index(TraccarService $traccarService)
{
    $groupRepo = $traccarService->groupRepository();
    // Get list of groups
    $list = $groupRepo->fetchListGroups();
    // Create new group
    $group = $groupRepo->createGroup(name: 'test-group');
    // Create new group with Model : MrWolfGb\Traccar\Models\Group
    $group = $groupRepo->createNewGroup(group: new Group(['name' => 'test']));
    // Update group
    $user = $groupRepo->updateGroup(group: $group);
    // Delete group : int|Group $group
    $groupRepo->deleteGroup(group: $group);
}
```

- #### *Device*

    [](#device)

Model : **[Device Model](src/Models/Device.php)**

```
public function index(TraccarService $traccarService)
{
    $deviceRepo = $traccarService->deviceRepository();
    // Get list of devices
    $list = $deviceRepo->fetchListDevices();
    // Get user devices
    $list = $deviceRepo->getUserDevices(userId: 1);
    // Get device by id
    $device = $deviceRepo->getDeviceById(deviceId: 1);
    // Get device by uniqueId
    $device = $deviceRepo->getDeviceByUniqueId(uniqueId: 123456);
    // Create new device
    $device = $deviceRepo->createDevice(name: 'test', uniqueId: '123456789');
    // Create new device with Model : MrWolfGb\Traccar\Models\Device
    $device = $deviceRepo->createNewDevice(device: new Device([
        'name' => 'test-device',
        'uniqueId' => '123456789-d1-device',
    ]));
    // Update device
    $device = $deviceRepo->updateDevice(device: $device);
    // Delete device : int|Device $device
    $deviceRepo->deleteDevice(device: $device);
    // Update total distance and hours
    $deviceRepo->updateTotalDistanceAndHoursOfDevice(device: $device, totalDistance: 100, hours: 10);
    // Assign device to geofence : int|Device $device, int|Geofence $geofence
    $deviceRepo->assignDeviceGeofence(device: $device, geofence: $geofence);
    // Remove device from geofence : int|Device $device, int|Geofence $geofence
    $deviceRepo->removeDeviceGeofence(device: $device, geofence: $geofence);
    // Assign device to notification : int|Device $device, int|Notification $notification
    $deviceRepo->assignDeviceNotification(device: $device, notification: $notification);
    // Remove device from notification : int|Device $device, int|Notification $notification
    $deviceRepo->removeDeviceNotification(device: $device, notification: $notification);
}
```

- #### *Geofence*

    [](#geofence)

Model : **[Geofence Model](src/Models/Geofence.php)**

```
public function index(TraccarService $traccarService)
{
    $geofenceRepo = $traccarService->geofenceRepository();
    // Get list of geofences
    $list = $geofenceRepo->fetchListGeofences();
    // Get geofence
    $geofence = $geofenceRepo->createGeofence(
        name: 'test-geofence',
        area: 'POLYGON ((34.55602185173028 -18.455295134508617, 37.67183427726626 -18.13110040602976, 34.98211925933252 -14.500119447061167, 34.55602185173028 -18.455295134508617))',
        description: 'test'
    );
    // Create new geofence with Model : MrWolfGb\Traccar\Models\Geofence
    $geofence = $geofenceRepo->createNewGeofence( geofence: new Geofence([
        'name' => 'test-geofence',
        'area' => 'LINESTRING (38.06472440318089 -26.49821693459276, 38.4968396008517 -24.64860674974679, 37.297972401178825 -23.72380165732423, 38.099388220592346 -23.37149495544884)',
        'description' => 'test'
    ]));
    // Update geofence
    $geofence = $geofenceRepo->updateGeofence(geofence: $geofence);
    // Delete geofence : int|Geofence $geofence
    $geofenceRepo->deleteGeofence(geofence: $geofence);
}
```

- #### *Notification*

    [](#notification)

Model : **[Notification Model](src/Models/Notification.php)**

```
public function index(TraccarService $traccarService)
{
    $notificationRepo = $traccarService->notificationRepository();
    // Get list of notifications
    $list = $notificationRepo->fetchListNotifications();
    // Create new notification
    $notification = $notificationRepo->createNotification(
        type: 'alarm',
        notificators: ['web'],
        always: true
    );
    // Create new notification with Model : MrWolfGb\Traccar\Models\Notification
    $notification = $notificationRepo->createNewNotification(new Notification([
        'type' => NotificationType::ALARM->value,
        'notificator' => implode(',', [
            NotificatorType::WEB->value,
            NotificatorType::COMMAND->value
        ]),
        'always' => false,
        'commandId' => 1, // required if notificator is/contains command
    ]));
    // Update notification
    $notification = $notificationRepo->updateNotification(notification: $notification);
    // Delete notification : int|Notification $notification
    $notificationRepo->deleteNotification(notification: $notification);
    // Get notification types from Traccar server
    $list = $notificationRepo->fetchNotificationTypes();
    // Send test notification
    $notificationRepo->sendTestNotification(
        type: NotificationType::MEDIA->value,
        notificator: NotificatorType::WEB->value
    );
}
```

- #### *Position*

    [](#position)

Model : **[Position Model](src/Models/Position.php)**

```
public function index(TraccarService $traccarService)
{
    $positionRepo = $traccarService->positionRepository();
    // Get list of positions
    $list = $positionRepo->fetchListPositions(
        from: now()->subHours(1),
        to: now(),
        id: [1, 2, 3] // optional
    );
    // Delete positions of device : int|Device $device
    $positionRepo->deletePositions(
        device: 1,
        from: now()->subHours(1),
        to: now()
    );
    // OsmAnd
    $positionRepo->OsmAnd(uniqueId: "1234-d1", temperature: "21.5", abc: "def");
}
```

- #### *Event*

    [](#event)

Model : **[Event Model](src/Models/Event.php)**

```
public function index(TraccarService $traccarService)
{
    // Get specific event details
    $event = $traccarService->eventRepository()->fetchEventInformation(eventID: 1);
}
```

- #### *Driver*

    [](#driver)

Model : **[Driver Model](src/Models/Driver.php)**

```
public function index(TraccarService $traccarService)
{
    $driverRepo = $traccarService->driverRepository();
    // Get list of drivers
    $list = $driverRepo->fetchListDrivers();
    // Create new driver
    $driver = $driverRepo->createDriver(
        name: 'test-driver',
        uniqueId: '123456789-d1-driver'
    );
    // Create new driver with Model : MrWolfGb\Traccar\Models\Driver
    $driver = $driverRepo->createNewDriver( new Driver([
      'name' => 'test-driver',
      'uniqueId' => '123456789-d1-driver'
    ]));
    // Update driver
    $driver = $driverRepo->updateDriver(driver: $driver);
    // Delete driver : int|Driver $driver
    $driverRepo->deleteDriver(driver: $driver);
}
```

- #### *Report*

    [](#report)

Model : **[Report Model](src/Models/Report.php)**

```
public function index(TraccarService $traccarService)
{
    $reportRepo = $traccarService->reportRepository();
    // Get route report for specific device
    $list = $reportRepo->reportRoute(
        from:  now()->subHours(value: 3),
        to: now(),
        deviceId: 1
    );
    // Get events report
    $list = $reportRepo->reportEvents(
        from:  now()->subHours(value: 3),
        to: now(),
        deviceId: 1,
        type: 'engine' // optional, by default 'allEvents'
    );
    // Get summary report
    $list = $reportRepo->reportSummary(
        from:  now()->subHours(value: 3),
        to: now(),
        deviceId: [1,2],
        //groupId: [1,2], // optional
        //daily: true // optional
    );
    // Get trips report
    $list = $reportRepo->reportTrips(
        from:  now()->subHours(value: 3),
        to: now(),
        deviceId: 1
    );
    // Get stops report
    $list = $reportRepo->reportStops(
        from:  now()->subHours(value: 3),
        to: now(),
        deviceId: 1
    );
    // Get combined report
    $list = $reportRepo->reportCombined(
        from:  now()->subHours(value: 3),
        to: now(),
        deviceId: [1,2],
        //groupId: [1,2], // optional
    );
}
```

### Commands

[](#commands)

This command store devices in the local database using the published migration.

```
php artisan traccar:sync
```

Or

```
php artisan traccar:sync-devices
```

### Listen Traccar websocket with php

[](#listen-traccar-websocket-with-php)

if you want to listen Traccar websocket with php you can check example in file : [WsListenCommand](src/Commands/WsListenCommand.php)

Traccar Custom Server
---------------------

[](#traccar-custom-server)

- **[Repository link](https://github.com/mr-wolf-gb/traccar-custom)**

This version is a fork of the original [TRACCAR](https://github.com/traccar/traccar) repository aimed at adding some useful features like :

1. ***`Websocket` can be accessed from external Hosts (App):***
2. ***`api/session/check-sid?sid=[SESSION_ID]` to check if the session is still active or not***

Features for this version of Traccar
------------------------------------

[](#features-for-this-version-of-traccar)

#### Middleware

[](#middleware)

`TraccarSession` is a middleware that adds the session ID of traccar user to the View.

```
// route web.php
Route::get('/', [HomeController::class, 'index'])->middleware('TraccarSession');
```

```
// blade view
const socket = new WebSocket("{{config('traccar.websocket_url')}}?session={{$traccarSessionId}}");
socket.onerror = (error) => {
    console.log('socket error: ', error)
}
socket.onmessage = function (event) {
    var data = JSON.parse(event.data);
    console.log('socket message : ', data)
}
```

### Testing

[](#testing)

```
composer test
```

### Changelog

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Credits
-------

[](#credits)

- [Mr.WOLF](https://github.com/mr-wolf-gb)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance55

Moderate activity, may be stable

Popularity27

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 95.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~262 days

Total

3

Last Release

301d ago

Major Versions

0.0.1 → 1.0.02024-02-28

### Community

Maintainers

![](https://www.gravatar.com/avatar/15419351feb134ab8ee8e00c4bab3be9f71f32c171a747c9ed6c2ada4d04d772?d=identicon)[gaiththewolf](/maintainers/gaiththewolf)

---

Top Contributors

[![mr-wolf-gb](https://avatars.githubusercontent.com/u/4011175?v=4)](https://github.com/mr-wolf-gb "mr-wolf-gb (40 commits)")[![sayasuhendra](https://avatars.githubusercontent.com/u/4870292?v=4)](https://github.com/sayasuhendra "sayasuhendra (2 commits)")

---

Tags

gps-trackinglaravelrealtimeservicetraccartraccar-apiwebsocketapilaravelgpsTraccar

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/mr-wolf-gb-traccar/health.svg)

```
[![Health](https://phpackages.com/badges/mr-wolf-gb-traccar/health.svg)](https://phpackages.com/packages/mr-wolf-gb-traccar)
```

###  Alternatives

[cybercog/youtrack-rest-php

YouTrack REST API PHP Client.

37149.2k3](/packages/cybercog-youtrack-rest-php)[dreamfactory/df-core

DreamFactory(tm) Core Components

1651.7k20](/packages/dreamfactory-df-core)[huaweicloud/huaweicloud-sdk-php

Huawei Cloud SDK for PHP

1829.2k2](/packages/huaweicloud-huaweicloud-sdk-php)[laragear/api-manager

Manage multiple REST servers to make requests in few lines and fluently.

161.8k](/packages/laragear-api-manager)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
