4319fb86dc
- dingtian-relay: relay+input controller (4ch on hand). Inputs are decoupled from relays (configurable via input_link_relay) — solves the access-controller-button-flow blocker the UHPPOTE couldn't. Full protocol from the SDK (UDP string control :60001, `00` status parse, input_link_url push, multicast discovery). Driver + hardware test still to build. - dingtian-vs-mqtt: use direct HTTP/UDP now; MQTT skipped (broker = extra infra + failure mode + overkill at one-host/few-devices scale) but kept for later multi-lane scale. - autonomous-direction: record the roadmap to fully unmanned (no booth) and how it reshapes the threat model (operator-fraud -> unattended-machine threats), makes host-in-the-loop entry mandatory, and raises fail-state stakes. - threat-model: note the unmanned shift. index + log. gitignore the vendor SDK (dingtian/, 71MB of binaries/examples) — reference only, protocol captured in the wiki.
47 lines
2.4 KiB
Markdown
47 lines
2.4 KiB
Markdown
---
|
|
type: entity
|
|
tags: [parking, hardware, access-control, relay]
|
|
sources: []
|
|
updated: 2026-06-15
|
|
---
|
|
|
|
# Dingtian Relay Controller
|
|
|
|
A network **relay + input** board (the unit on hand is the **4-channel** variant: 4 relays + 4
|
|
inputs). Chosen to drive the entry/exit lane because — unlike the [[uhppote-controller]] — its
|
|
**inputs are independent of its relays**, which solves the [[access-controller-button-flow]]
|
|
blocker (a button on an input does not auto-open a relay; the host decides).
|
|
|
|
SDK: `dingtian/4ch/sdk_v2_0_0/` (programming manual, examples). MIT-compatible use; no vendor
|
|
runtime needed.
|
|
|
|
## ⚠️ The one gotcha: `input_link_relay`
|
|
|
|
By **default the device links each input to auto-fire its matching relay** (`input_link_relay: 1`,
|
|
`on_action_on: [[0],[1],…]` in the config) — i.e. the *same* auto-open problem as the UHPPOTE.
|
|
The difference: **it is configurable.** Set `input_link_relay: 0` (or clear the action mappings)
|
|
so an input only *reports* and the host commands the relay. **This config step is mandatory** for
|
|
the ticket-first entry flow. See [[autonomous-direction]].
|
|
|
|
## Protocol (Dingtian string — what we use)
|
|
|
|
Transport options: UDP/TCP string, UDP binary, HTTP CGI, Modbus, MQTT. We use **HTTP + UDP** —
|
|
see [[dingtian-vs-mqtt]].
|
|
|
|
- **Relay control — UDP ASCII, port 60001:** `1`+ch = ON, `2`+ch = OFF, `T`+ch = toggle.
|
|
Pulse/jog `11*` (default 500 ms), delay `11:30` (30 s then off), flash `11F5`. `X` = all relays.
|
|
Intent-only pulse for a barrier = `pulseOpen` ([[barrier-not-a-door]]).
|
|
- **Status / inputs — send `00`** → `「relays」:「inputs」:「count」`, e.g. **`0000:1111:4`** (4ch:
|
|
relays off, inputs high). `0` = OFF/Low, `1` = ON/High. Poll-based.
|
|
- **Input push — `input_link_url`:** device **HTTP POSTs to a host URL on input change** — the
|
|
push path for button events without a broker.
|
|
- **Discovery:** UDP multicast `224.0.2.11:60000`, send `\x05\xAA` (devices reply). Defaults:
|
|
IP `192.168.1.100`, UDP `60000` (binary) / `60001` (string).
|
|
- Binary protocol (port 60000) adds optional **password** + multicast; bitmask relay/input maps.
|
|
|
|
## Status
|
|
|
|
Protocol understood from the SDK; **driver + on-hardware test not built yet**. Next: a `dingtian`
|
|
relay driver in [[device-registry]] (UDP control + status parse) and the input-push endpoint,
|
|
with `input_link_relay` disabled on the device. Needs the device IP + LAN to test.
|