Download the PHP package tanemrahman/zkteco-adms without Composer
On this page you can find all versions of the php package tanemrahman/zkteco-adms. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download tanemrahman/zkteco-adms
More information about tanemrahman/zkteco-adms
Files in tanemrahman/zkteco-adms
Package zkteco-adms
Short Description Production-ready ZKTeco ADMS / iClock Push protocol server for Laravel.
License MIT
Informations about the package zkteco-adms
tanemrahman/zkteco-adms
ZKTeco ADMS / iClock Push protocol server for Laravel.
Your biometric device dials out to your Laravel app at /iclock/* and pushes attendance in real time.
No ZKBioTime server, no ZKPush.exe, no TCP SDK required.
Works with SenseFace, K40, MB series, and most ZKTeco Push-SDK devices.
Requirements
- PHP
^8.2 - Laravel
11/12/13 - MySQL / MariaDB recommended (SQLite also works)
- A public HTTPS URL the device can reach (port
443)
Installation (Composer)
Option A — from GitHub (current)
Add the VCS repository, then require the package.
composer.json
Or one-liner style:
Option B — path / local copy (offline)
Laravel auto-discovers ZktecoAdmsServiceProvider — no manual register needed.
What this package gives you
| Piece | Purpose |
|---|---|
Routes /iclock/* |
Device protocol endpoints |
| Migrations | Tables listed below |
| Models | Eloquent models for devices, punches, logs |
| Events | Hook punches into your HRM / attendance |
| Config | Tunable protocol options |
| Artisan | List devices, prune logs, requeue commands |
This package does not ship an admin UI.
You design pages in your own app (Blade / Inertia / Livewire / Filament) on top of the tables & models.
Database tables
Created automatically on php artisan migrate:
| Table | Purpose |
|---|---|
zkteco_devices |
Registered devices (by serial SN) |
zkteco_transactions |
Attendance punches (includes workcode) |
zkteco_device_commands |
Commands waiting for the device |
zkteco_device_users |
USERINFO roster (verify_mode, is_blocked, template flags; updated after device confirms commands, or via OPERLOG) |
zkteco_attphotos |
Attendance photos saved from ATTPHOTO uploads |
zkteco_heartbeat_logs |
getrequest polls (liveness) |
zkteco_adms_logs |
Raw protocol audit trail |
Important columns
zkteco_transactions
| Column | Meaning |
|---|---|
device_id |
FK → zkteco_devices.id |
user_id |
Device PIN (enrolment id) |
timestamp |
Punch time |
status |
Punch state (in/out/…) |
verify |
Verify type (fingerprint/face/…) |
workcode |
Optional work code from ATTLOG |
source |
Always adms for this package |
terminal_sn |
Device serial |
Map user_id (PIN) to your employees.biometric_emp_id (or similar) in your app.
Device configuration
On the device: Menu → Comm → Cloud Server / ADMS
| Setting | Value |
|---|---|
| Server Address | attendance.yourdomain.com |
| Server Port | 443 |
| Enable Domain Name | On (if using hostname) |
| Protocol / HTTPS | On |
| Communication | ADMS (Push) |
| Comm Key (optional) | Must match ZKTECO_ADMS_COMM_KEY |
The device will call:
Use a real TLS certificate (Let's Encrypt is fine). Some firmwares reject self-signed certs.
Local / XAMPP testing
- Device must reach your PC (same LAN or public IP + port forward).
- For quick protocol tests without a device:
Expected reply: OK: 1
Protocol endpoints (auto-registered)
| Method | Path | Purpose |
|---|---|---|
GET |
/iclock/cdata |
Handshake / options |
POST |
/iclock/cdata |
ATTLOG / OPERLOG upload |
GET |
/iclock/getrequest |
Command poll + heartbeat |
POST |
/iclock/devicecmd |
Command result |
GET |
/iclock/ping |
Liveness |
POST |
/iclock/fdata |
Template / photo upload |
* |
/iclock/registry, /iclock/push |
Push 2.x probes |
Prefix is configurable via ZKTECO_ADMS_PREFIX (default iclock).
Do not change it unless every device is reconfigured — firmware expects iclock.
Config (.env)
Publish first:
Useful keys:
How to design your app around this package
Think of this package as the ingestion + device control layer. Your Laravel app owns UX & business rules.
Facade API (recommended)
Device picks commands on the next getrequest poll (~every 10 seconds).
zkteco_device_users is updated only after the device returns Return≥0 on /iclock/devicecmd (or when the device pushes USERINFO via OPERLOG).
Suggested screens (you build these)
- Devices — list
ZktecoDevice, show online/offline fromlast_seen_at - Live punches — paginate
ZktecoTransactionwheresource = adms - Device users — show
ZktecoDeviceUserroster + “Add user” form that callsZktecoAdms::addUser - Biometrics — enroll face/finger on device, or push templates via
addFace/addFingerprint - Attendance photos — browse
ZktecoAttphoto(files understorage/app/zkteco/attphotosby default) - Protocol logs — debug with
ZktecoAdmsLog(dev only) - Commands — show pending queue from
ZktecoDeviceCommand
Example: Devices index (controller sketch)
Example: Add user from your admin form
Example: Today's punches
Example: Map PIN → Employee in your HRM
React to punches in real time (recommended)
Set ZKTECO_ADMS_QUEUE_PROCESSING=true to fire TransactionsReceived on a queue worker instead of inline.
Artisan
Scheduled automatically:
- every 30 min → requeue stale commands
- daily 02:00 → prune old protocol / heartbeat logs
Full ADMS feature list (this package)
| Feature | Status |
|---|---|
/iclock handshake + options |
✅ |
| ATTLOG punch ingest + dedupe | ✅ |
ATTLOG workcode column |
✅ |
| OPERLOG / USERINFO sync → DB | ✅ |
ATTPHOTO save to disk + zkteco_attphotos |
✅ |
| FP / Face template flags from device | ✅ |
| fdata / registry / push / ping | ✅ |
| Auto-register device by SN | ✅ |
| Comm key auth | ✅ |
| Protocol + heartbeat logs | ✅ |
| Command queue (getrequest / devicecmd) | ✅ |
| Add / update / delete user (DB after device ack) | ✅ |
| Push fingerprint template | ✅ |
| Push face template | ✅ |
| Query users / attlog from device | ✅ |
| Reboot / CHECK / INFO / sync time | ✅ |
| Clear log / clear data | ✅ |
| Reset sync stamps | ✅ |
| Pre-register / delete device (artisan) | ✅ |
Facade ZktecoAdms::… |
✅ |
| Admin UI | ❌ (build in your app) |
Using with BioTime package
You can install both:
tanemrahman/zkteco-adms— device pushtanemrahman/zkteco-biotime— BioTime API pull
They share zkteco_transactions. Filter by source:
Publishable tags
License
MIT
All versions of zkteco-adms with dependencies
illuminate/support Version ^11.0|^12.0|^13.0
illuminate/database Version ^11.0|^12.0|^13.0
illuminate/http Version ^11.0|^12.0|^13.0
illuminate/routing Version ^11.0|^12.0|^13.0
illuminate/console Version ^11.0|^12.0|^13.0
illuminate/events Version ^11.0|^12.0|^13.0
illuminate/bus Version ^11.0|^12.0|^13.0
illuminate/queue Version ^11.0|^12.0|^13.0