Biometric Device Integration PyZk

by
Odoo
v 11.0 v 12.0 Third Party 1448
Download for v 12.0 Deploy on Odoo.sh
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies Attendances (hr_attendance)
Employees (hr)
Discuss (mail)
Lines of code 388
Technical Name hr_zk_attendance_pyzk
LicenseAGPL-3
Websitehttps://erp.10orbits.com
Versions 12.0 11.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies Attendances (hr_attendance)
Employees (hr)
Discuss (mail)
Lines of code 388
Technical Name hr_zk_attendance_pyzk
LicenseAGPL-3
Websitehttps://erp.10orbits.com
Versions 12.0 11.0

Biometric Device Integration PyZk

Biometric Attendance module for Integration with Zkteco Biometric Attendance devices.

Supports wide range of Zkteco devices. [based on pyzk; unofficial zkteco python library]

10orbits logo

Integrate Zkteco devices

Easily add your Zkteco devices

Also add multiple/multilocation Zkteco devices

Supported Devices

This device requires pyzk python library.

Install With : pip3 install pyzk

  • Platform : ZEM500 DeviceName : U580 (Works perfectly
  • Platform : ZEM510_TFT DeviceName : T4-C (Works perfectly)
  • Platform : ZEM510_TFT DeviceName : T4-C (Works perfectly)
  • Platform : ZEM600_TFT DeviceName : iClock260 (Works perfectly)
  • Platform : ZEM560_TFT DeviceName : (Works perfectly)
  • Platform : ZEM800_TFT DeviceName : iFace402/ID (Works perfectly)
  • Platform : ZEM560 DeviceName : MA300 (Works perfectly)
  • Platform : ZEM600_TFT DeviceName : iFace800/ID (Works perfectly)
  • Platform : JZ4725_TFT DeviceName : K14 (tested & verified working as expected.)
  • Platform : ZMM220_TFT DeviceName : (unknown device) (broken info; but at least the important data was read)
  • Platform : JZ4725_TFT DeviceName : K20 (latest checked correctly!)
  • Platform : ZEM600_TFT DeviceName : VF680 (face device only,successful download of the user and attendance list!)
  • Platform : ZLM30_TFT DeviceName : RSP10k1 (latest checked correctly!)
  • Platform : JZ4725_TFT DeviceName : iClock260 (Works perfectly)
  • Platform : ZMM200_TFT DeviceName : iClock3000/ID (Active testing! latest fix)
  • Platform : ZEM600_TFT DeviceName : iClock880-H/ID (Active testing! latest fix)
  • more to be added ........

Test your connection to Zkteco device

Connection Up

Connection Down

See Attendances Records within Odoo

Attendance records that are in Zkteco device

Attendance records in Odoo Attendance

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.
There are no ratings yet!
by
decampos@neksis.pt
on 3/6/24, 11:34 AM

Is there any possibility of porting to ODOO 16 and implementing it with Iclok260 ZKteco?


by
odoo customizers
on 3/30/23, 4:17 AM

i use zkteco f22 but it didn't connect


by
Khaled Bayoumy
on 6/21/22, 4:32 PM

The app connected successfully to my zk x628 machine after clicking try connection

"Biometric Device is Up/Reachable."
 but failed to download any user or data
Connection To Device cannot be established.



How to enroll employee from Odoo 14 to Machine ?
by
Jalaludin
on 1/6/22, 8:05 PM

i can get data from machine attendance, but how to insert my employee (Enroll) ID & Name to Machine ?


New error while opening attendance log
by
Aadeel S. Puri
on 3/3/20, 6:09 AM

Odoo Server Error Traceback (most recent call last): File "/odoo12/odoo12-server/odoo/http.py", line 656, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/odoo12/odoo12-server/odoo/http.py", line 314, in _handle_exception raise pycompat.reraise(type(exception), exception, sys.exc_info()[2]) File "/odoo12/odoo12-server/odoo/tools/pycompat.py", line 87, in reraise raise value File "/odoo12/odoo12-server/odoo/http.py", line 698, in dispatch result = self._call_function(**self.params) File "/odoo12/odoo12-server/odoo/http.py", line 346, in _call_function return checked_call(self.db, *args, **kwargs) File "/odoo12/odoo12-server/odoo/service/model.py", line 97, in wrapper return f(dbname, *args, **kwargs) File "/odoo12/odoo12-server/odoo/http.py", line 339, in checked_call result = self.endpoint(*a, **kw) File "/odoo12/odoo12-server/odoo/http.py", line 941, in __call__ return self.method(*args, **kw) File "/odoo12/odoo12-server/odoo/http.py", line 519, in response_wrap response = f(*args, **kw) File "/odoo12/odoo12-server/addons/web/controllers/main.py", line 904, in search_read return self.do_search_read(model, fields, offset, limit, domain, sort) File "/odoo12/odoo12-server/addons/web/controllers/main.py", line 926, in do_search_read offset=offset or 0, limit=limit or False, order=sort or False) File "/odoo12/odoo12-server/odoo/models.py", line 4603, in search_read result = records.read(fields) File "/odoo12/odoo12-server/odoo/models.py", line 2789, in read self._read_from_database(stored, inherited) File "/odoo12/odoo12-server/odoo/models.py", line 2942, in _read_from_database values = [convert(value, target, validate=False) for value in values] File "/odoo12/odoo12-server/odoo/models.py", line 2942, in values = [convert(value, target, validate=False) for value in values] File "/odoo12/odoo12-server/odoo/fields.py", line 1659, in convert_to_cache raise TypeError("%s (field %s) must be string or date, not datetime." % (value, self)) TypeError: 2020-03-03 11:04:02.614212 (field zk.report.daily.attendance.punching_day) must be string or date, not datetime. I have emailed you, we need some assistance.


Update on previous error
by
Aadeel S. Puri
on 3/2/20, 12:09 PM

When i cleared Attend Start Date and then tried to download it shows me new error. Error: Odoo Server Error Traceback (most recent call last): File "/odoo12/odoo12-server/odoo/http.py", line 656, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/odoo12/odoo12-server/odoo/http.py", line 314, in _handle_exception raise pycompat.reraise(type(exception), exception, sys.exc_info()[2]) File "/odoo12/odoo12-server/odoo/tools/pycompat.py", line 87, in reraise raise value File "/odoo12/odoo12-server/odoo/http.py", line 698, in dispatch result = self._call_function(**self.params) File "/odoo12/odoo12-server/odoo/http.py", line 346, in _call_function return checked_call(self.db, *args, **kwargs) File "/odoo12/odoo12-server/odoo/service/model.py", line 97, in wrapper return f(dbname, *args, **kwargs) File "/odoo12/odoo12-server/odoo/http.py", line 339, in checked_call result = self.endpoint(*a, **kw) File "/odoo12/odoo12-server/odoo/http.py", line 941, in __call__ return self.method(*args, **kw) File "/odoo12/odoo12-server/odoo/http.py", line 519, in response_wrap response = f(*args, **kw) File "/odoo12/odoo12-server/addons/web/controllers/main.py", line 966, in call_button action = self._call_kw(model, method, args, {}) File "/odoo12/odoo12-server/addons/web/controllers/main.py", line 954, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/odoo12/odoo12-server/odoo/api.py", line 759, in call_kw return _call_kw_multi(method, model, args, kwargs) File "/odoo12/odoo12-server/odoo/api.py", line 746, in _call_kw_multi result = method(recs, *args, **kwargs) File "/odoo12/custom/addons/hr_zk_attendance_pyzk/models/zk_machine.py", line 192, in download_attendance 'address_id': info.address_id.id}) File "", line 2, in create File "/odoo12/odoo12-server/odoo/api.py", line 461, in _model_create_multi return create(self, [arg]) File "/odoo12/odoo12-server/odoo/models.py", line 3574, in create records = self._create(data_list) File "/odoo12/odoo12-server/odoo/models.py", line 3660, in _create col_val = field.convert_to_column(val, self, stored) File "/odoo12/odoo12-server/odoo/fields.py", line 1987, in convert_to_column value = self.convert_to_cache(value, record) File "/odoo12/odoo12-server/odoo/fields.py", line 1999, in convert_to_cache raise ValueError("Wrong value for %s: %r" % (self, value)) ValueError: Wrong value for zk.machine.attendance.attendance_type: '0'

Re: Update on previous error
by
Ananta Saurabh
on 3/2/20, 11:54 PM Author

The type of attendance eg 'fingerprint', 'manual, 'pin' etc are determined by default attendance type code that is set on Bio-metric device. It defaults to something like this: ('1', 'Finger'),('15', 'Face'),('2','Type_2'),('3','Password'),('4','Card'). In your case the type is '0' meaning it has been changed from the defaults. So now you could either change it in your Biometric device or modify the code to match your configuration. If you have any further queries please email me at maheshwor.dhakal@10orbits.com.


Error while while download data.
by
Aadeel S. Puri
on 3/2/20, 11:14 AM

I am using K40, Firmware Version 6.60 Jun 9 2017 Ubuntu 18.04.4 LTS odoo version12 CE Successfully installed future-0.18.2 pyzk-0.9 When i click try connection it say up/reachable When i click download data it starts loading and does nothing, and sometimes it pops up error Odoo Server Error Traceback (most recent call last): File "/odoo12/odoo12-server/odoo/http.py", line 656, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/odoo12/odoo12-server/odoo/http.py", line 314, in _handle_exception raise pycompat.reraise(type(exception), exception, sys.exc_info()[2]) File "/odoo12/odoo12-server/odoo/tools/pycompat.py", line 87, in reraise raise value File "/odoo12/odoo12-server/odoo/http.py", line 698, in dispatch result = self._call_function(**self.params) File "/odoo12/odoo12-server/odoo/http.py", line 346, in _call_function return checked_call(self.db, *args, **kwargs) File "/odoo12/odoo12-server/odoo/service/model.py", line 97, in wrapper return f(dbname, *args, **kwargs) File "/odoo12/odoo12-server/odoo/http.py", line 339, in checked_call result = self.endpoint(*a, **kw) File "/odoo12/odoo12-server/odoo/http.py", line 941, in __call__ return self.method(*args, **kw) File "/odoo12/odoo12-server/odoo/http.py", line 519, in response_wrap response = f(*args, **kw) File "/odoo12/odoo12-server/addons/web/controllers/main.py", line 966, in call_button action = self._call_kw(model, method, args, {}) File "/odoo12/odoo12-server/addons/web/controllers/main.py", line 954, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/odoo12/odoo12-server/odoo/api.py", line 759, in call_kw return _call_kw_multi(method, model, args, kwargs) File "/odoo12/odoo12-server/odoo/api.py", line 746, in _call_kw_multi result = method(recs, *args, **kwargs) File "/odoo12/custom/addons/hr_zk_attendance_pyzk/models/zk_machine.py", line 164, in download_attendance tmp_zk_after_date = datetime.strptime(info.zk_after_date,'%Y-%m-%d %H:%M:%S') TypeError: strptime() argument 1 must be str, not datetime.datetime I have set administrator > HR Settings > Biometric Device ID = 1 (Which is Machine Unique ID), I also tried with different Attend Start Date but same as above happening. Please help.


Error pyzk
by
Jorge Cheng
on 1/24/20, 6:14 PM

Pyzk module not Found. Please install it with 'pip3 install pyzk'. Even though I have already installed the module.


ZkTeco K14
by
Jorge Cheng
on 1/23/20, 6:16 PM

Does it work on any firmware? Odoo isn't able to connect to my device


prueba con zkteco k20
by
Ricardo
on 12/19/19, 10:20 AM

hola he probado con el con el modelo zkteco k20 y no he logrado resultados, que podría haber estado haciendo mal?


device compatibility
by
Leonardo Acuña
on 12/16/19, 4:34 PM

Is this module compatible with k30?

Re: device compatibility
by
Ananta Saurabh
on 12/17/19, 12:38 AM Author

its very likely it will work. We haven't yet tested module on K30, but we had it working on K20 & K40.