LiveEdge can send and receive GPIO (contact-closure) triggers in three ways, so a site can start small or reuse the GPIO equipment it already has.
Adding GPIO to LiveEdge
| Low-cost USB GPIO device | Network GPIO device, such as Broadcast Tools | Current GPIO / automation server devices | |
|---|---|---|---|
| How it connects | USB to the LiveEdge; the LiveEdge GPIO App provides its web page and API | IP over the facility network | The site's existing GPIO or automation server |
| Fits when | A handful of triggers next to the LiveEdge, at the lowest cost | Contacts are away from the LiveEdge, or shared across a site | The facility already runs GPIO automation |
Example applications
- SCTE triggering
- Graphics triggering
- Output stream control
- Tally light control and monitoring
Example · Low-cost USB attached GPIO device
The rest of this brief documents a working build of the first option:
- A low-cost USB / IP attached GPIO device with 8 relay outputs and 8 isolated inputs
- Outputs connected to a Tri-LED stack light (red, yellow, green)
- An output-to-input loopback that confirms each trigger
At a glance
One GPIO device does the work, reached two ways.
- Web clients (browser, scripts, Companion) reach the GPIO device over IP, port 80.
- The LiveEdge GPIO App (
localhost:8080) reaches the same device over USB-C. - The GPIO device serves the page and API, times relay pulses, and debounces inputs.
- 8 relays drive the stack light and other gear, and are off at power-up.
- 8 inputs, 5–36 V, isolated, dry or wet.
Clients reach the GPIO device directly over IP, or through the LiveEdge GPIO App over USB; either way the device itself times relays and reads inputs.
Wiring
| 12 V input loop (relay → input): 12 V+ to the relay's COM, relay NO to DIx, 12 V− to the input block's COM. The input reads ON while the relay is closed. | Stack light: 12 V+ to the COMs of relays 1–3, red / yellow / green wires to each relay's NO, black to 12 V−. Use NO so the lamps are off when the device is unpowered or rebooting. |
Hardware and wiring
One low-cost USB / IP attached GPIO device does everything; firmware runs on the device, so timing does not depend on the network or the LiveEdge GPIO App.
| Part | Detail |
|---|---|
| Relays | 8 × SPDT (COM / NO / NC), 10 A 250 VAC or 30 VDC, driven by a TCA9554 I/O expander; all off at power-up |
| Digital inputs | 8 × opto-isolated, 5–36 V, wet or dry contact, NPN or PNP; 20 ms debounce, activation counter per input |
| Network | W5500 10/100 Ethernet, DHCP, mDNS name gpio-server.local |
| USB-C | Power, flashing, and a command link to the LiveEdge GPIO App |
| Extras | RGB status LED (red = no network, green = online), buzzer |
Access and API
The same Videon-styled page and API are served two ways; both can run at once.
| Path | Address | Use when |
|---|---|---|
| IP, on the GPIO device | http://<device IP>/ (port 80), or gpio-server.local | The device is on the network; nothing else needed |
| USB, via the LiveEdge GPIO App | http://localhost:8080/ | The device is plugged into the LiveEdge by USB; the app also runs in Docker |
The page has relay On / Off / Pulse buttons, All On / All Off, live input states and counts, and an API tab with a Try It tester and live event log. Every control endpoint accepts GET or POST, so it works from a browser, a script or Companion.
| Endpoint | Action |
|---|---|
GET /api/state | Relays, inputs, counts, network info (JSON) |
/api/relay/<1-8>?state=on|off|toggle | Set one relay |
/api/relay/<1-8>?pulse=<ms> | On for 10–600,000 ms, then off |
/api/relays?mask=<0-255> | Set all relays (bit 0 = relay 1) |
GET /api/events | Live push stream; a state update on every change |
Measured performance
An input change reaches the web page in 15–60 ms; all 9 of 9 test pulses were caught.
| Measure | Result |
|---|---|
| Relay closes → input ON | 15–60 ms (relay travel + 20 ms debounce) |
| Pulse accuracy | 500 ms requested → 500 ms measured |
| API, Ethernet | 8–26 ms, even with idle connections held open |
| API, USB via LiveEdge GPIO App | 3–6 ms (30–50 ms in Docker) |
| Relay change → page, via app | 4–10 ms |
| Longest firmware stall | 0.1 s (was 2.3 s before fixes) |