agregado get set time
This commit is contained in:
parent
13d40ef6c4
commit
cf81b697c7
44
zk/base.py
44
zk/base.py
@ -147,7 +147,7 @@ class ZK(object):
|
|||||||
copied from zkemsdk.c - DecodeTime"""
|
copied from zkemsdk.c - DecodeTime"""
|
||||||
t = t.encode('hex')
|
t = t.encode('hex')
|
||||||
t = int(self.__reverse_hex(t), 16)
|
t = int(self.__reverse_hex(t), 16)
|
||||||
|
#print "decode from %s "% format(t, '04x')
|
||||||
second = t % 60
|
second = t % 60
|
||||||
t = t / 60
|
t = t / 60
|
||||||
|
|
||||||
@ -169,6 +169,16 @@ class ZK(object):
|
|||||||
|
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
def __encode_time(self, t):
|
||||||
|
"""Encode a timestamp so that it can be read on the timeclock
|
||||||
|
"""
|
||||||
|
# formula taken from zkemsdk.c - EncodeTime
|
||||||
|
# can also be found in the technical manual
|
||||||
|
d = (
|
||||||
|
((t.year % 100) * 12 * 31 + ((t.month - 1) * 31) + t.day - 1) *
|
||||||
|
(24 * 60 * 60) + (t.hour * 60 + t.minute) * 60 + t.second
|
||||||
|
)
|
||||||
|
return d
|
||||||
def connect(self):
|
def connect(self):
|
||||||
'''
|
'''
|
||||||
connect to the device
|
connect to the device
|
||||||
@ -184,7 +194,7 @@ class ZK(object):
|
|||||||
cmd_response = self.__send_command(command, command_string, checksum, session_id, reply_id, response_size)
|
cmd_response = self.__send_command(command, command_string, checksum, session_id, reply_id, response_size)
|
||||||
self.__sesion_id = unpack('HHHH', self.__data_recv[:8])[2]
|
self.__sesion_id = unpack('HHHH', self.__data_recv[:8])[2]
|
||||||
if cmd_response.get('code')==const.CMD_ACK_UNAUTH:
|
if cmd_response.get('code')==const.CMD_ACK_UNAUTH:
|
||||||
print "try auth"
|
#print "try auth"
|
||||||
command_string = make_commkey(self.__password,self.__sesion_id)
|
command_string = make_commkey(self.__password,self.__sesion_id)
|
||||||
cmd_response = self.__send_command(const.CMD_AUTH, command_string , checksum, self.__sesion_id, self.__reply_id, response_size)
|
cmd_response = self.__send_command(const.CMD_AUTH, command_string , checksum, self.__sesion_id, self.__reply_id, response_size)
|
||||||
if cmd_response.get('status'):
|
if cmd_response.get('status'):
|
||||||
@ -305,6 +315,34 @@ class ZK(object):
|
|||||||
else:
|
else:
|
||||||
raise ZKErrorResponse("Invalid response")
|
raise ZKErrorResponse("Invalid response")
|
||||||
|
|
||||||
|
def get_time(self):
|
||||||
|
"""obtener la hora del equipo"""
|
||||||
|
command = const.CMD_GET_TIME
|
||||||
|
command_string = ''
|
||||||
|
checksum = 0
|
||||||
|
session_id = self.__sesion_id
|
||||||
|
reply_id = self.__reply_id
|
||||||
|
response_size = 1032
|
||||||
|
|
||||||
|
cmd_response = self.__send_command(command, command_string, checksum, session_id, reply_id, response_size)
|
||||||
|
if cmd_response.get('status'):
|
||||||
|
return self.__decode_time(self.__data_recv[8:12])
|
||||||
|
else:
|
||||||
|
raise ZKErrorResponse("Invalid response")
|
||||||
|
def set_time(self, timestamp):
|
||||||
|
""" colocar la hora del sistema al zk """
|
||||||
|
command = const.CMD_SET_TIME
|
||||||
|
command_string = pack(b'I', self.__encode_time(timestamp))
|
||||||
|
checksum = 0
|
||||||
|
session_id = self.__sesion_id
|
||||||
|
reply_id = self.__reply_id
|
||||||
|
response_size = 8
|
||||||
|
cmd_response = self.__send_command(command, command_string, checksum, session_id, reply_id, response_size)
|
||||||
|
if cmd_response.get('status'):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
raise ZKErrorResponse("Invalid response")
|
||||||
|
|
||||||
def poweroff(self):
|
def poweroff(self):
|
||||||
'''
|
'''
|
||||||
shutdown the device
|
shutdown the device
|
||||||
@ -315,7 +353,7 @@ class ZK(object):
|
|||||||
checksum = 0
|
checksum = 0
|
||||||
session_id = self.__sesion_id
|
session_id = self.__sesion_id
|
||||||
reply_id = self.__reply_id
|
reply_id = self.__reply_id
|
||||||
response_size = 8
|
response_size = 1032
|
||||||
|
|
||||||
cmd_response = self.__send_command(command, command_string, checksum, session_id, reply_id, response_size)
|
cmd_response = self.__send_command(command, command_string, checksum, session_id, reply_id, response_size)
|
||||||
if cmd_response.get('status'):
|
if cmd_response.get('status'):
|
||||||
|
Loading…
Reference in New Issue
Block a user