PHPackages                             athwari/laravel-zkteco-adms-server - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. athwari/laravel-zkteco-adms-server

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

athwari/laravel-zkteco-adms-server
==================================

Laravel package implementing the ZKTeco ADMS protocol for biometric attendance devices.

01[2 PRs](https://github.com/athwari/laravel-zkteco-adms-server/pulls)PHPCI passing

Since May 16Pushed 3w agoCompare

[ Source](https://github.com/athwari/laravel-zkteco-adms-server)[ Packagist](https://packagist.org/packages/athwari/laravel-zkteco-adms-server)[ RSS](/packages/athwari-laravel-zkteco-adms-server/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (3)Used By (0)

Laravel ZKTeco ADMS Server
==========================

[](#laravel-zkteco-adms-server)

A Laravel package implementing the ZKTeco ADMS (Attendance Data Management System) HTTP protocol for biometric attendance devices.

Features
--------

[](#features)

- **Full ADMS Protocol Support** — `/iclock/cdata`, `/iclock/getrequest`, `/iclock/devicecmd`, `/iclock/registry`, `/iclock/inspect`
- **Attendance Data Processing** — Parses ATTLOG records with multiple timestamp formats
- **Device Management** — Registration, online status tracking, stale device eviction
- **Command Queuing** — Queue and send commands to devices remotely (INFO, CHECK, user management, shell, etc.)
- **Event-Driven** — Laravel events for attendance, device info, registry, command results, and user queries
- **Database Persistence** — Eloquent models for devices, attendance logs, and command history
- **Configurable** — Body size limits, online thresholds, device limits, command queue depth, timezone support
- **Security** — Serial number validation, body size enforcement, command injection protection

Requirements
------------

[](#requirements)

- PHP 8.1+
- Laravel 10, 11, or 12

Installation
------------

[](#installation)

```
composer require athwari/laravel-zkteco-adms-server
```

Publish the configuration:

```
php artisan vendor:publish --tag=zkteco-adms-config
```

Run the migrations:

```
php artisan migrate
```

Configuration
-------------

[](#configuration)

The configuration file (`config/zkteco-adms.php`) provides:

OptionDefaultDescription`max_body_size`10MBMax request body size in bytes`online_threshold`120Seconds before device is offline`max_devices`1000Max registered devices (0 = unlimited)`max_commands_per_device`100Per-device command queue depth`enable_inspect`falseEnable debug endpoint`default_timezone`UTCFallback timezone for timestamps`route_prefix`iclockRoute prefix`route_middleware`\[\]Middleware for ADMS routesDevice Setup
------------

[](#device-setup)

Configure your ZKTeco device ADMS settings:

- **Server Address**: `http://your-server:port`
- **Push Protocol**: ADMS

The device will communicate via:

- `GET/POST /iclock/cdata` — Attendance data
- `GET /iclock/getrequest` — Poll for commands
- `POST /iclock/devicecmd` — Command results
- `GET/POST /iclock/registry` — Registration

Sending Commands
----------------

[](#sending-commands)

```
use Athwari\ZktecoAdms\Facades\ZktecoAdms;

// Via the facade
$commands = ZktecoAdms::commands();

// Request device information
$id = $commands->sendInfoCommand('SERIAL001');

// Heartbeat check
$id = $commands->sendCheckCommand('SERIAL001');

// Add/update a user on the device
$id = $commands->sendUserAddCommand('SERIAL001', '1001', 'John Doe', 0, '12345');

// Delete a user
$id = $commands->sendUserDeleteCommand('SERIAL001', '1001');

// Query all users
$id = $commands->sendQueryUsersCommand('SERIAL001');

// Get a device option
$id = $commands->sendGetOptionCommand('SERIAL001', 'DeviceName');

// Custom command
$id = $commands->queueCommand('SERIAL001', 'CHECK');
```

Listening to Events
-------------------

[](#listening-to-events)

```
// In your EventServiceProvider or listener
use Athwari\ZktecoAdms\Events\AttendanceReceived;

class HandleAttendance
{
    public function handle(AttendanceReceived $event): void
    {
        foreach ($event->records as $record) {
            // $record->userId, $record->timestamp, $record->statusLabel()
        }
    }
}
```

Available events:

- `AttendanceReceived` — Attendance records from devices
- `DeviceRegistered` — Device registration/re-registration
- `DeviceInfoReceived` — Device info parameters
- `CommandResultReceived` — Command execution results
- `UserQueryReceived` — User query results

Device Eviction
---------------

[](#device-eviction)

Schedule stale device cleanup:

```
// In your console kernel
$schedule->command('zkteco:evict-stale-devices')->everyFiveMinutes();
```

License
-------

[](#license)

MIT

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance62

Regular maintenance activity

Popularity2

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/244ab61401b3fa5d1b2f60ca760064e43e86831b848ecc253a226ebaa5e771f2?d=identicon)[athwari](/maintainers/athwari)

### Embed Badge

![Health badge](/badges/athwari-laravel-zkteco-adms-server/health.svg)

```
[![Health](https://phpackages.com/badges/athwari-laravel-zkteco-adms-server/health.svg)](https://phpackages.com/packages/athwari-laravel-zkteco-adms-server)
```

###  Alternatives

[alibabacloud/dysmsapi-20170525

Alibaba Cloud Dysmsapi (20170525) SDK Library for PHP

13435.4k37](/packages/alibabacloud-dysmsapi-20170525)[lara-zeus/accordion

Zeus Accordion is filamentphp layout component to group components

11140.3k3](/packages/lara-zeus-accordion)

PHPackages © 2026

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