/uhppoted

Cross-platform components for building access control systems based on the UHPPOTE UT0311 TCP/IP access controller boards

Primary LanguageCSSMIT LicenseMIT

build

uhppoted

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:

  • device API
  • external application API
  • CLI for scripting and system administration
  • REST service for integration with HTTP servers and mobile clients
  • MQTT endpoint for integration with IOT systems e.g.
  • AWS S3 integration for file managed access control lists
  • Google Sheets integration for spreadsheet managed access control lists
  • Integration with the [Wild Apricot] member management system
  • uhppoted-db SQL DB integration for access control lists managed in a database
  • Node-RED low code environment integration
  • uhppoted-nodejs NodeJS package
  • uhppoted-python Python package

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

Operating systems

Supported operating systems:

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

This project is a fork of the original Go CLI project which had outgrown its initial scope and was relocated to uhppoted to simplify future development.

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

Releases

Version Description
v0.8.6 Adds activate-keypads API, Python package, MySQL and SQL server support and Erlang bindings
v0.8.5 Adds set-interlock API, Tailscale and PicoW support and PHP bindings
v0.8.4 Adds set-pc-control command and support for card keypad PINs
v0.8.3 Adds AMR64 to release builds
v0.8.2 Adds uhppoted-codegen project to generate native UHPPOTE interface in languages other thann Go
v0.8.1 Adds human readable fields to events for MQTT and REST implementations. Minor bug fixes and usability fixes
v0.8.0 Initial release for uhppoted-httpd and uhppoted-tunnel
v0.7.3 Adds uhppoted-dll shared-lib to components
v0.7.2 Replaces event rollover with forever incrementing indices to match observed behaviour
v0.7.1 Adds support for controller task list management
v0.7.0 Adds support for time profiles. Includes bundled release of uhppoted-nodejs NodeJS module
v0.6.12 Reworked concurrency and additional configuration
v0.6.10 Initial release for uhppoted-app-wild-apricot
v0.6.8 Adds handling for v6.62 firmware listen events to node-red-contrib-uhppoted
v0.6.7 Implements record-special-events to enable/disable door events
v0.6.5 node-red-contrib-uhppoted module for use with NodeRED low code environment
v0.6.4 uhppoted-app-sheets Google Sheets integration module
v0.6.3 Added access control list commands to uhppoted-mqtt
v0.6.2 Added access control list commands to uhppoted-rest
v0.6.1 Added access control list commands to uhppote-cli
v0.6.0 uhppoted-app-s3 AWS S3 integration module
v0.5.1 Initial release following restructuring into standalone Go modules and git submodules
v0.5.0 Add MQTT endpoint for remote access to UT0311-L0x controllers
v0.4.2 Reworked GetDevice REST API to use directed broadcast and added get-device to CLI
v0.4.1 Get/set door control state functionality added to simulator, CLI and REST API
v0.4.0 REST API service
v0.3.1 Functional simulator with minimal command API
v0.2.0 Load access control list from TSV file
v0.1.0 Bare-bones but functional CLI

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-wild-apricot cron'able utility to manage access control lists from Wild Apricot
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-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
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

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

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/Rust library