Code Monkey home page Code Monkey logo

uhppote-core's Introduction

build

uhppoted implements a set of cross-platform building blocks for access control systems based on the UHPPOTE UT0311-L0x TCP/IP Wiegand access control boards. Currently available components include:

The components supplement the manufacturer supplied application which is 'Windows-only' and provides limited support for integration with other systems.

FYA, after much discussion it has been decided that uhppoted is pronounced u-hop-id-ay-d (juː hɒp ɪt eɪd).

Operating systems

Supported operating systems:

  • Linux
  • MacOS
  • Windows
  • ARM and ARM7 (e.g. RaspberryPi)

Language Bindings

The primary development language for this repository is Go, but code generated native bindings for the following languages also exist:

shared-lib/dylib/DLL

uhppoted-dll implements a shared-lib/DLL for interop with languages other than Go. The implementation includes bindings to:

  • C
  • C++
  • C#
  • Python
  • Clozure Common Lisp

3rd party integrations

Compatible Hardware

As per this issue [Question] Compatible Hardware, UHPPOTE appears to be a specific branding (or distributor) for the access control boards manufactured by Shenzhen Wiegand Industrial Co., Ltd.

The software in this repository has been tested and is known to work with these specific boards:

Source Item
Amazon UHPPOTE Professional Wiegand 26-40 Bit TCP IP Network Access Control Board with Software For 4 Door 4 Reader
AliExpress TCP/IP RFID ACCESS CONTROL SYSTEM Wiegand 26

Firmware versions

Version Notes
6.56 Minimum firmware version (cf. carbonsphere/UHPPOTE
6.62 Lowest firmware version in use
8.92 Latest tested firmware version

Notes:

  1. Firmware v6.62 sends anomalous listen events with 0x19 as the start of message identifier. This appears to have been fixed in later firmware versions but patches to support these events are included in:

Readers

Almost any reader with a Wiegand-26 interface should probably work (there have been reports of offbrand readers that don't) but the readers below are in active use:

Reader Notes
HID ProxPoint Plus 6500 Old stock and/or refurbished readers are often available on ebay
IKeys barcode and QR code scanner Ref. Put Card - Date with Time
Newland FM430L barcode and QR code scanner Ref. Put Card - Date with Time

Release Notes

Current Release

v0.8.8 - 2024-03-28

  1. Added uhppoted-app-home-assistant experimental Home Assistant integration.
  2. restore-default-parameters function across all subprojects.
  3. Added public Docker images for uhppote-simulator, uhppoted-rest, uhppoted-mqtt, and uhppoted-httpd to ghcr.io.
  4. Bumped Go version to 1.22.
  5. Reworked uhppoted-app-wild-apricot member/group resolution logic.

Modules

Module Description
uhppote-core core library, implements the UP interface to UT0311-L0x controllers
uhppoted-lib common utility function library
uhppote-simulator UT0311-L04 simulator for development use
uhppote-cli command line interface
uhppoted-rest daemon/service with REST API for remote access to UT0311-L0x controllers
uhppoted-mqtt daemon/service with MQTT endpoint for remote access to UT0311-L0x controllers
uhppoted-app-s3 cron'able utility to download/upload access control lists from/to AWS S3
uhppoted-app-sheets cron'able utility to download/upload access control lists from/to Google Sheets
uhppoted-app-db cron'able utility to download/upload access control lists from/to a SQL DB
uhppoted-app-wild-apricot cron'able utility to manage access control lists from Wild Apricot
uhppoted-app-home-assistant Home Assistant custom component
node-red-contrib-uhppoted NodeJS nodes for Node-RED low code environment
uhppoted-nodejs Standalone NodeJS module
uhppoted-python Standalone Python package for PyPI
uhppoted-dll shared-lib/DLL for cross-language interop
uhppoted-codegen Model based code generator for native language bindings
uhppoted-tunnel UDP tunnel for remote access

Integrations

Module Description
uhppoted-app-db cron'able utility to download/upload access control lists from/to a SQL DB
uhppoted-app-s3 cron'able utility to download/upload access control lists from/to AWS S3
uhppoted-app-sheets cron'able utility to download/upload access control lists from/to Google Sheets
uhppoted-app-wild-apricot cron'able utility to manage access control lists from/t Wild Apricot
uhppoted-app-home-assistant Home Assistant custom component
node-red-contrib-uhppoted NodeJS nodes for Node-RED low code environment
kBrausew/ioBroker.wiegand-tcpip ioBroker

UI

Module Description
uhppote-cli Command line interface
uhppoted-httpd HTML browser interface

Installation

Binaries for Linux, Windows, MacOS and Raspbian/ARM7 are distributed in the tarball for each release. To install the binaries, download and extract the tarball to a directory of your choice.

The NodeRED, NodeJS and Python packages are installable from the public repositories:

Building from source

uhppoted is the parent project for the individual components which are referenced as git submodules - to clone the entire source tree:

git clone --recurse-submodules https://github.com/uhppoted/uhppoted.git

The supplied Makefile has targets to build binaries for all the supported operating systems:

make build

or

make release

To pull upstream changes for all submodules:

git submodule update --remote

Donations

If you like the project and you really want to 🙂:

References and Related Projects

  1. carbonsphere/UHPPOTE PHP
  2. carbonsphere/DoorControl PHP
  3. andrewvaughan/uhppote-rfid Python
  4. tachoknight/uhppote-tools: Go
  5. jjhuff/uhppote-go: Go
  6. pawl/Chinese-RFID-Access-Control-Library
  7. Dallas Makerspace:Reverse Engineering RFID Reader
  8. wemakerspace/wiegand-daemon
  9. wemakerspace/weigeng-js
  10. realashleybailey/DoorControl
  11. kBrausew/ioBroker.wiegand-tcpip
  12. TCP/IP Wiegand Access Controller (Zutrittskontrolle)
  13. YouTube: UHPPOTE 2 door basic set-up
  14. wouterdebie/uhppote-rs

uhppote-core's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

uhppote-core's Issues

Create shared lib/DLL for language interop

From e-mail request:

Re C#, I’m in no way suggesting refactoring all the code into C#...
re. DLL. Didn't even occur to me to think about using the Go code as a DLL but it turns out you can..

Time Profiles

Our application requires certain badges work on certain doors during certain hours.
The windows application calls this Time Profiles, but it looks like there isn't any support for that in uhppoted yet. Is this correct?
Thanks again for all your work on uhppoted.

Replace Event pointer in GetStatusResponse with zero value

Ref. uhppoted/uhppoted-dll#7

Replace Event pointer in GetStatusResponse with struct and check for zero values rather than nil.

  • uhppote-core
  • uhppoted-lib
  • uhppote-simulator
  • uhppote-cli
  • uhppoted-rest
  • uhppoted-mqtt
  • uhppoted-dll
  • uhppoted-codegen
  • uhppoted-httpd
  • uhppoted-tunnel
  • uhppoted-app-s3
  • uhppoted-app-sheets
  • uhppoted-app-wild-apricot
  • uhppoted-app-db
  • uhppoted-nodejs
  • nodered-contrib-uhppoted
  • uhppoted-python

Listen event button state incorrectly decoded to string

 ... received 64 bytes from 192.168.1.100:60000
 ... response
 ...          00000000  17 20 00 00 78 37 2a 18  de 00 00 00 02 01 01 01  |. ..x7*.........|
 ...          00000010  01 00 00 00 20 24 02 09  10 29 07 14 00 00 00 00  |.... $...)......|
 ...          00000020  01 00 00 00 00 10 29 07  00 00 00 00 00 00 00 00  |......).........|
 ...          00000030  00 01 00 24 02 09 00 00  00 00 00 00 00 00 00 00  |...$............|
 ...          

 ... listening
405419896  false false false false true  false false false 0    2024-02-09 10:29:07 0          0 01 00 | 222     2   true  1 1     1          2024-02-09 10:29:07 20

[Question] Compatible Hardware

From the picture these boards look exactly like the uhppote boards:
shorturl.at/isF78

Do you know if these are identical? Has anyone used the hardware from ali? As far as I found out they use the same management software. From wiegand.

Thank you.

"Password management" functionality

The original Windows-based software for the generic access controlers have an option where you can configure "password management". There, you can set the option "Card + PIN" which needs to be turned on in order to ask for a PIN in addition to presenting the card. I did not find this option anywhere in the CLI, is it implemented or should we implement it ourselves and create a PR?

image

Implement `get-all-XXX`

Using a device ID of 0 lets all controllers respond to a request - more efficient and easier to implement than the current way of iterating through a list.

Invalid facility code Error msg

Hi,
when we try to add a new card with the id: 38857wxyz

/bin/uhppote-cli put-card 223190abc 38857wxyz 2023-01-01 2060-01-01 1,2,3,4:2 1234

We got an error msg:
ERROR: 388575490: invalid facility code 388

So we commented out the code:
image
and afterwards we can put the card to the controller.

abc and wxyz are digits, replaced by us.

Accessing Internal User map

So is there away to acquire the map of the user's id card, to the name you set in the web interface? Is that accessible anywhere aside from me writing a ridiculous web parser to access it from the table structure?

Implement set-interlock function

Add support for the set-interlock command (function code 0xA2) in the extended protocol function set:

  • uhppote-core
  • uhppote-simulator
  • uhppote-cli
  • uhppoted-rest
  • uhppoted-mqtt
  • uhppoted-dll
  • uhppoted-codegen
  • nodered-contrib-uhppoted
  • uhppoted-nodejs
  • uhppoted-httpd
  • uhppoted

Ref. uhppoted/uhppoted-dll#6

Replace pointer dates in `get-card` with zero values

Uninitialised controllers may not have the date/time set and there's always the possibility of corrupted/wrong values.

  • Replace From *Date in GetCardByIDResponse
  • Replace To *Date in GetCardByIDResponse
  • Replace From *Date in GetCardByIndexResponse
  • Replace To *Date in GetCardByIndexResponse
  • Replace From and To pointers in Card type
  • Unmarshal 00000000 to Date as ZeroDate
  • Unmarshal 00000000 to *Date as <nil>
  • Update uhppoted-lib
  • Update uhppoted-simulator
  • Update uhppote-cli
  • Update uhppoted-rest
  • uhppoted-rest get-cards should return cards with invalid from/to dates
  • uhppoted-rest get-acl should return cards with invalid from/to dates
  • uhppoted-rest put-acl should discard cards with invalid from/to dates
  • Update uhppoted-mqtt
  • uhppoted-mqtt get-cards should return cards with invalid from/to dates
  • uhppoted-mqtt get-acl should return cards with invalid from/to dates
  • uhppoted-mqtt compare-acl should include cards with invalid from/to dates
  • Update uhppoted-httpd
  • Update uhppoted-tunnel
  • Update uhppoted-dll
  • Update uhppoted-codegen
  • Update uhppoted-app-s3
  • Update uhppoted-app-sheets
  • Update uhppoted-app-wild-apricot
  • Include cards with invalid from and to dates in Docker simulator

PIN should probably be BCD

Recode PIN as BCD - 3 bytes and 999999 look suspiciously like it is not binary:

  • uhppote-core
  • uhppote-simulator
  • uhppote-lib
  • uhppoted-dll
  • uhppoted-codegen
  • uhppoted-httpd
  • uhppoted-nodejs
  • nodered-contrib-uhppoted

Door open or closed event not generated.

Hi,

Thanks so much for the effort you have put into this! I was blown away when I found this project.

One issue I have noticed while testing the uhppote-cli is that opening or closing a door (fitted with a magnetic reed switch) does not seem to generate an event within the cli, however it does with the OEM windows program.

On the board the terminals for the switch is "S1, Grnd", "S2, Grnd" etc. Simply shorting the terminals with a wire generates the event when "monitoring" a door in the OEM software.

Am I missing something in the uhppote-cli, or is it not a supported feature?

P.S I made a github account for this comment, so hope it's in the right spot.

Thanks again!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.