HCPBridge Documentation GitHub

Digital inputs & outputs

The prebuilt HCP PCBs (v2 and v3.x) have four extra screw terminals: In1, In2, Out1 and Out2. They are disabled by default and enabled per channel under I/O Configuration.

HCP miniThe HCP mini uses the same HCP_Giffordv3 firmware but has no In/Out terminals – leave the channels disabled there.

Electrical limits – read first

Inputs In1 / In2

Type≈5 V voltage input through a fixed divider (1.2 kΩ series, 2.2 kΩ to GND) – not a dry contact
HIGH≈ 3.9 … 5.1 V at the terminal against board GND
IdleLOW – the on-board 2.2 kΩ pulls the input down
Maximum≈ 5.1 V. Never apply 12 V or 24 V – that destroys the GPIO.
Pull modeKeep none (external) – the internal pull-up cannot work against the on-board 2.2 kΩ.
Debounce50 ms

A push button must therefore switch about 5 V onto the terminal; a potential-free contact across the terminals does nothing. A 3.3 V signal is not detected reliably.

Outputs Out1 / Out2

TypeHigh-side switch – optocoupler-driven N-channel MOSFET (source follower)
ONSources the rail selected by the 5V | – | 3V jumper, minus about one MOSFET threshold (≈ 0.7–1.5 V)
OFFHigh impedance (floating)
Suitable forPLC inputs, active-HIGH relay module inputs, logic inputs
Not suitable forDriving relays, lamps, motors or mains loads directly
IsolationNone – both sides of the optocoupler share the board GND

Prefer the 5 V jumper position: with 3 V selected the output only reaches about 2.3 V.

Pins

TerminalHCP PCB v2HCP PCB v3.xOther boards
In1GPIO12GPIO12any free GPIO
In2GPIO14GPIO14any free GPIO
Out1GPIO37GPIO25any free GPIO
Out2GPIO35GPIO22any free GPIO

The firmware rejects unusable pins and disables the channel, reporting it as io_error in the debug topic: 0 (not configured), the SPI flash pins (ESP32: 6–11, ESP32-S3: 26–32) and, as outputs, the input-only GPIO34–39 of the classic ESP32.

Settings

SettingInputsOutputs
EnableActivates the channel and its Home Assistant entity.
NameEntity name in Home Assistant.
GPIOPin number (see above).
Pull resistornone (external) on the HCP PCBs; pull-up/-down only on self-built boards without divider–
Active lowOnly for a button to GND with pull-up on self-built boardsOnly if ON/OFF end up swapped
Local actionAction executed by the bridge itself on the activating edge – works without Wi-Fi/MQTT–
Restore after reboot–Off (default) = always off after a restart; on = last state is restored

Local actions

ValueAction
0none – only publish the input state
1impulse / toggle door (open if not fully open, otherwise close)
2 / 3 / 4open / close / stop door
5toggle the operator light
6 / 7ventilation / half-open position
8 / 9toggle Out1 / Out2

Examples

Wall button toggles the light

+5V ────o/ o──── In1     (button, bridge GND shared)

I/O Configuration → Input 1: enable, GPIO 12, pull none (external), active low off, local action toggle light. The button now switches the light directly on the bus, and the press is also available as binary_sensor in Home Assistant.

Out1 drives a relay module

Relay module IN → Out1, module GND → bridge GND, module VCC → its own 5 V supply, jumper on 5 V. The module must be active HIGH; common active-LOW boards need an extra inverting stage. Output 1: enable, GPIO 25 (v3), active low off, restore off.

MQTT and HTTP

# state (retained, only enabled channels)
hormann/<id>/io                {"in1":"true","in2":"false","out1":"false","out2":"true"}

# switch outputs: true | false | anything else toggles
hormann/<id>/command/out1      true
hormann/<id>/command/out2      toggle

# HTTP: on | off | toggle   (404 if the output is not enabled)
curl "http://<device-ip>/io?output=1&state=on"

Inputs become binary_sensor, outputs switch entities in Home Assistant.

Wiring diagrams, the complete electrical analysis and ESPHome snippets: inputs_outputs.md.