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

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

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


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

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

里面有安装教程

www.feelsight.cn 版权所有


需要安装flask

 yum install python-flask

2.安装python3环境


可以参考http://www.cqroom.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.微信小程序代码

http://www.cqroom.cn/zb_users/upload/2021/07/20210726161840_44528.zip


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

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

本文链接:http://www.cqroom.cn/post/119.html

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

物联网 WIFI 一键配置原理(smartconfig) ESP8266/QCA4004

物联网 WIFI 一键配置原理(smartconfig) ESP8266/QCA4004

物联网 WIFI 一键配置原理(smartconfig) ESP8266/QCA4004 自从物联网问世以来,如何使得物 能够联网有了很多的方式,目前运用非常广的WIFI,今天就总结下自这个方面,也对于有需要的盆友也希望有抛砖引玉之效果。 来看个知乎...

SmartLink原理

SmartLink原理

智能家居/家电现阶段还处于普及阶段,由于家庭wifi网络的普及,目前普遍采用wifi与路由器完成连接,与手机/云端进行数据交互. 智能硬件,如智能插座,智能空调,智能空气净化器由于不具备人机交互界面,不能像电脑一样的搜索/选择指定路由器,输入连接密码的界面,所以必须先解决正确连接路...

内存堆和栈的区别

内存堆和栈的区别

在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。 堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以...

开关电源拓扑结构概述(降压,升压,反激、正激)

开关电源拓扑结构概述(降压,升压,反激、正激)

主回路—开关电源中,功率电流流经的通路。主回路一般包含了开关电源中的开关器件、储能器件、脉冲变压器、滤波器、输出整流器、等所有功率器件,以及供电输入端和负载端。   开关电源(直流变换器)的类型很多,在研究开发或者维修电源系统时,全面了解开关电源主回路的...

锂电池充电的原理

锂电池充电的原理

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

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

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

发表评论

访客

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