Add real UHPPOTE access driver via official uhppoted lib
Researched Node options for the UHPPOTE controller and chose the official
`uhppoted` npm package (MIT, actively maintained, single trivial dep). Its API
covers the full design: openDoor, getStatus, the event-log set (getEvent,
getEventIndex, setEventIndex, recordSpecialEvents), and setListener/listen.
Rejected alternatives: raw-dgram DIY, node-red-contrib-uhppoted, Go sidecar.
- packages/devices: add uhppoted@0.9.0; new `uhppote` access driver implementing
AccessControlDevice (pulseOpen -> openDoor intent-only; healthCheck/getDoorStatus
-> getStatus). Registered in the catalog alongside zkteco/esp32-relay.
- Local ambient types (uhppoted ships none); CJS interop via default-import +
destructure under NodeNext.
- Config fields: controller serial (required), optional host/protocol (udp|tcp),
doors, timeout.
Security/safety unchanged: unauthenticated UDP -> isolated VLAN assumed; relay
is intent-only ("a barrier is not a door").
wiki: record the library choice on uhppote-controller + log entry.
Verified: builds; `uhppote` shows in the catalog with correct fields;
instantiates and degrades to "offline" gracefully without hardware (on-VLAN
test pending).
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
type: entity
|
||||
tags: [parking, hardware, access-control, current-choice]
|
||||
sources: [parking-system-architecture]
|
||||
updated: 2026-06-14
|
||||
updated: 2026-06-15
|
||||
---
|
||||
|
||||
# UHPPOTE Controller (current choice)
|
||||
@@ -11,6 +11,15 @@ The starting access-control hardware: a **UHPPOTE Wiegand 26/34 network controll
|
||||
a cheap reader-plus-relay frontend, acceptable **provided you understand its limits**. The plan
|
||||
is UHPPOTE now → ZKTeco later (see [[bom]]). (See [[parking-system-architecture]] §6.)
|
||||
|
||||
> **Implementation:** integrated via the official **`uhppoted`** npm package (MIT, by the
|
||||
> `uhppoted` org — `github.com/uhppoted/uhppoted-lib-nodejs`), added to `@parking/devices` as the
|
||||
> `uhppote` access driver ([[device-registry]]). It exposes exactly the protocol commands this
|
||||
> design needs: `openDoor`, `getStatus`, and the event-log set (`getEvent`, `getEventIndex`,
|
||||
> `setEventIndex`, `recordSpecialEvents`) plus `setListener`/`listen` for auto-push — see
|
||||
> [[event-log-ingestion]]. Transport defaults to **UDP** (broadcast `…:60000`), with optional
|
||||
> per-call TCP on newer firmware. Note: the lib pulls one trivial extra dep (the npm `os`
|
||||
> shim) and tends to use UDP broadcast, which needs socket broadcast permission on the host.
|
||||
|
||||
## What it is
|
||||
|
||||
- Combines reader input ([[wiegand]]) and door relays, with an onboard card list enabling
|
||||
|
||||
+12
@@ -28,3 +28,15 @@ snapshot-on-event), printer. Added a `CameraDevice` interface; new `lane_devices
|
||||
+ `setup_state` tables (migration 0001); admin-only setup endpoints. Stub drivers
|
||||
for now (no real vendor protocols yet). Verified catalog + assign + validation +
|
||||
auth end to end.
|
||||
|
||||
## [2026-06-15] decision | UHPPOTE library chosen + real driver
|
||||
Researched Node options for the UHPPOTE controller. Chose the official
|
||||
**`uhppoted`** npm package (MIT, actively maintained, full API incl. openDoor,
|
||||
get-event(s)/event-index, set-listener, restore-default — covers the whole
|
||||
[[event-log-ingestion]] design). Rejected: raw-dgram DIY (reinvents the lib),
|
||||
node-red-contrib-uhppoted (wrong model), Go REST sidecar (extra runtime). Added
|
||||
it to @parking/devices and implemented a real `uhppote` [[uhppote-controller]]
|
||||
access driver (pulseOpen→openDoor, healthCheck→getStatus), registered in the
|
||||
catalog. CJS interop: default-import + destructure. Verified it builds, appears
|
||||
in the catalog, and degrades to "offline" gracefully without hardware. Real
|
||||
on-VLAN test still pending.
|
||||
|
||||
Reference in New Issue
Block a user