--- 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.