zklib-ts
Version:
Unofficial zkteco library allows Node.js developers to easily interface with ZK BioMetric Fingerprint Attendance Devices
120 lines (119 loc) • 4.75 kB
TypeScript
import { ZTCP } from './ztcp';
import { ZUDP } from './zudp';
import { User } from './models/User';
import { Finger } from './models/Finger';
import { Attendance } from "./models/Attendance";
import { RecordData16, UserData28, DeviceInfo, FreeSizes } from "./helper/utils";
export default class Zklib {
set connectionType(value: "tcp" | "udp" | null);
private _connectionType;
ztcp: ZTCP;
zudp: ZUDP;
private interval;
private timer;
private isBusy;
private ip;
private comm_key;
get connectionType(): "tcp" | "udp" | null;
/**
* Creates a new Zkteco device connection instance
* @param ip IP address of device
* @param port Port number of device
* @param timeout Connection timeout in milliseconds
* @param inport Required only for UDP connection (default: 10000)
* @param comm_key Communication key of device (default: 0)
* @param verbose Console log some data
*/
constructor(ip: string, port?: number, timeout?: number, inport?: number, comm_key?: number, verbose?: boolean);
private functionWrapper;
createSocket(cbErr?: (err: Error) => void, cbClose?: (type: string) => void): Promise<boolean>;
getUsers(): Promise<{
data: User[] | UserData28[];
}>;
getTime(): Promise<Date>;
setTime(t: Date | string): Promise<boolean>;
voiceTest(): Promise<void>;
getProductTime(): Promise<Date>;
getVendor(): Promise<string>;
getMacAddress(): Promise<string>;
getSerialNumber(): Promise<string>;
getDeviceVersion(): Promise<string>;
getDeviceName(): Promise<string>;
getPlatform(): Promise<string>;
getOS(): Promise<string>;
getWorkCode(): Promise<string>;
getPIN(): Promise<string>;
getFaceOn(): Promise<string>;
getSSR(): Promise<string>;
getFirmware(): Promise<string>;
/** Update or create a user if user id/pin not exists
* @param user_id {string} user id/pin for customer
* @param name {string} user name
* @param password {string} user password
* @param role {number} role/privilege id number
* @param cardno {number} card number/id
*/
setUser(user_id: string, name: string, password: string, role?: number, cardno?: number): Promise<boolean>;
/**
* Delete user by a given user id/pin
* @param user_id {string}
*/
deleteUser(user_id: string): Promise<boolean>;
getAttendanceSize(): Promise<number>;
getAttendances(cb?: (progress: number, total: number) => void): Promise<{
data: Attendance[] | RecordData16[];
err?: Error | null;
}>;
getRealTimeLogs(cb: (log: any) => void): Promise<void>;
getTemplates(): Promise<Record<string, Finger[]>>;
/**
* Get a user template for a given user id/pin and finger id
* @param user_id {string} user id/pin
* @param fid {number} finger index
*/
getUserTemplate(user_id: string, fid: number): Promise<Buffer<ArrayBufferLike>>;
/**
* Upload a single fingerprint for a given user id
* @param user_id {string} user id/pin for customer
* @param fingerTemplate {string} finger template in base64 string
* @param fid {number} finger id is a number between 0 and 9
* @param fp_valid {number} finger flag. e.g., valid=1, duress=3
*/
uploadFingerTemplate(user_id: string, fingerTemplate: string, fid: number, fp_valid: number): Promise<boolean>;
/**
* save user and template
*
* @param {string} user_id - user id for customer
* @param {Finger[]} fingers - Array of finger class
*/
saveUserTemplate(user_id: string, fingers?: Finger[]): Promise<void>;
/**
* Delete a single finger template by user id and finger index
* @param user_id {string} user id/pin for customer
* @param fid {number} finger index
*/
deleteFinger(user_id?: string, fid?: number): Promise<boolean>;
/**
* Start to enroll a finger template
* @param user_id {string} user id/pin for customer
* @param temp_id {number} finger index
*/
enrollUser(user_id: string, temp_id: number): Promise<boolean>;
verifyUser(user_id: string): Promise<boolean>;
restartDevice(): Promise<void>;
getSizes(): Promise<FreeSizes>;
disconnect(): Promise<void>;
freeData(): Promise<boolean>;
disableDevice(): Promise<boolean>;
enableDevice(): Promise<boolean>;
getInfo(): Promise<DeviceInfo>;
clearAttendanceLog(): Promise<any>;
clearData(): Promise<any>;
executeCmd(command: number, data?: string | Buffer): Promise<Buffer>;
getNetworkParams(): Promise<{
IPAddress: string;
NetMask: string;
GATEIPAddress: string;
}>;
}
export type { Attendance, User, Finger, DeviceInfo, Zklib };