当前位置:首页 > 电子 > 正文内容

微信小程序 连接ZKT中控指纹打卡机

admin3年前 (2021-07-07)电子3173


1.在Centos环境下安装必要的库

项目地址:https://github.com/fananimi/pyzk

里面有安装教程

www.feelsight.cn 版权所有


需要安装flask

 yum install python-flask

2.安装python3环境


可以参考https://feelsight.cn/post/118.html

3.新建一个python脚本


import sys
import os
import logging
from flask import Flask, request
# www.feelsight.cn 版权所有
app = Flask(__name__)
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    filename='zkt_log.log',
                    filemode='a')
sys.path.insert(1,os.path.abspath("/usr/local/lib/python3.6/site-packages"))
from zk import ZK, const
# 设备列表
dooriplist = ('192.168.1.50','192.168.1.51','192.168.1.52','192.168.1.53','192.168.1.54')
# 微信小程序用户ID列表,代表控制门的权限
weixinid = ('otLcT5ITB6ubK4-RkAe8T0','')
def zktopen(ipadd,times):
    conn = None
    # 需要修改相应的端口号和通讯密码
    zk = ZK(ipadd, port=4370, timeout=5, password=, force_udp=False, ommit_ping=False)
    try:
        # connect to device
        conn = zk.connect()
        if conn.unlock(time=times):
            return True
    except Exception as e:
        print ("Process terminate : {}".format(e))
        return False
    finally:
        if conn:
            conn.disconnect()
def DataCheck(id,num,times):
    for idstr in weixinid:
        if idstr == id:
            if int(num) < len(dooriplist) :
                if int(times) < 100 :
                    return True
    return False
@app.route('/')
def hello_world():
    # zktopen('192.168.1.53',5)
    return 'hello world'
@app.route('/register', methods=['POST'])
def register():
    # print (request.headers)
    # print (request.form)
    doornum = request.form['num']
    userid = request.form['id']
    times = request.form['time']
    logging.info('From:'+str(request.form)+' id:'+userid+' doornum:'+doornum+' time:'+times)
    print('doornum:'+doornum+' id:'+userid)
    print(dooriplist[int(doornum)])
    if DataCheck(userid,doornum,times) :
        print('check ok')
        if True == zktopen(dooriplist[int(doornum)],int(times)) :
            print('open ok')
            return 'welcome'
    else:
        print('check err')
        return 'check err'
    # print (request.form.get('name')) www.feelsight.cn 版权所有
    # print (request.form.getlist('name'))
    # print (request.form.get('nickname', default='little apple'))
    #do something else
    #
    #
if __name__ == '__main__':
    app.run(host='0.0.0.0',port=80,debug=True)

4.运行脚本测试服务是否正常

www.feelsight.cn 版权所有

直接在浏览器输入服务器地址看看浏览器是否有hello word字符串

如果出现则表示成功一半了


5.测试锁是否能正常打开

本连接使用的是post请求方式,  www.feelsight.cn 版权所有

num: "0",//门锁的索引,前面门锁的IP地址列表里面的第几个 
id: this.data.openid,//微信用户的ID 
time: this.data.opentime,//开门时间  www.feelsight.cn 版权所有

6.微信小程序代码

https://feelsight.cn/zb_users/upload/2021/07/20210726161840_44528.zip


扫描二维码推送至手机访问。

版权声明:本文由视觉博客发布,如需转载请注明出处。

本文链接:https://feelsight.cn/post/119.html

“微信小程序 连接ZKT中控指纹打卡机” 的相关文章

ESP8266在Eclipse下设置编译模式(有boot和无boot)

ESP8266在Eclipse下设置编译模式(有boot和无boot)

更改编译模式可以更改Makefile文件中的 BOOT?=new APP?=1 SPI_SPEED?=40 SPI_MODE?=QIO SPI_SIZE_MAP?=2 可以根据2A-ESP8266__IOT_SDK_User_Manual__CN_...

单片机时钟周期,机器周期,指令周期的区别

单片机时钟周期,机器周期,指令周期的区别

时钟周期          时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。     &nbs...

锂电池充电的原理

锂电池充电的原理

    锂离子电池的充电过程可以分为四个阶段:涓流充电(低压预充)、恒流充电、恒压充电以及充电终止。     锂电池充电器的基本要求是特定的充电电流和充电电压,从而保证电池安全充电。...

ESP8266发送HTTP请求GET请求POST请求

ESP8266发送HTTP请求GET请求POST请求

一、ESP8266简介   ESP8266 是深圳安信可科技有限公司开发的基于乐鑫ESP8266的超低功耗的UART-WIFI模块的模组,可以方便进行二次元开发,接入云端服务,实现手机3/4G全球随时随地的控制,加速产品原型设计。  &em...

stc-isp烧录 下载 协议 过程分析

一、数据封装格式 包头 标示 数据包长度 命令字...

如何看懂电路图(一)--基本的电路符号

如何看懂电路图(一)--基本的电路符号

电子设备中有各种各样的图。能够说明它们工作原理的是电原理图,简称电路图。 电路图有两种,一种是说明模拟电子电路工作原理的。它用各种图形符号表示电阻器、电容器、开关、晶体管等实物,用线条把元器件和单元电路按工作原理的关系连接起来。这种图长期以来就一直被叫做电路图。 另一种...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。