npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

zkteco-sha

v1.8.0

Published

This package enables real-time tracking of employee attendance using ZKTeco devices. It seamlessly integrates with multiple devices and utilizes their IP addresses for efficient monitoring and management.

Downloads

778

Readme

Documentation

This package enables real-time tracking of employee attendance using ZKTeco devices. It seamlessly integrates with multiple devices and utilizes their IP addresses for efficient monitoring and management.

// Test code:

const ZKTeco = require("zkteco-sha");

const test = async () => {
  try {
    // Define the IP address of the device.
    const deviceIp = "192.168.1.201";

    //  Ips
    const ips = ["192.168.1.201"];
    let zkInstance = new ZKTeco(devices);

    // List of devices with their respective IP addresses and ports.
    const devices = [{ deviceIp: "192.168.1.201", devicePort: "4370" }];
    let zkInstance = new ZKTeco(devices);

    // Connect all devices
    await zkInstance.connectAll();

    // Retrieve users based on device IP addresses in the machine.
    const users = await zkInstance.getUsers(deviceIp);

    // Retrieve all devices currently connected.
    const getAllConnectedIps = await zkInstance.getAllConnectedIps();

    // Retrieve all disconnected devices by all devices ip.
    const getAllDisconnectedIps = await zkInstance.getAllDisconnectedIps(ips);

    // Create a new user: setUser(deviceIp,uid, userid, name, password, role = 0, cardno = 0)
    await zkInstance.setUser(deviceIp, 12, "9", "Shahadat Jaman", "1", 0, 0);

    // Retrieve all logs stored in the machine.
    // At the moment, there's no filter to select specific device logs, it captures everything!!
    const logs = await zkInstance.getAttendances(deviceIp);
    console.log(logs);

    // Retrieve the current time from the machine.
    const getTime = await zkInstance.getTime(deviceIp);
    console.log(getTime);

    // Power OFF by Device Ip
    await zkInstance.shutdown(deviceIp);
  } catch (e) {
    console.log(e);
    if (e.code === "EADDRINUSE") {
    }
  }
};

test(); // in the end we execute the function

There are many functions you can just visit zk protocol to see the command and put it in executeCmd function already existed in the library. The function executeCmd accepts the command constant in constants.js and the data if needed, and we can implement it as follows:

    async executeCmd(device,command, data=''){
        return await this.functionWrapper(
            ()=> this.zklibTcp.executeCmd(device,command, data),
            ()=> this.zklibUdp.executeCmd(device,command , data)
        )
    }

    // unlock the door
    executeCmd(device,CMD.CMD_UNLOCK, '')