Skip to content

Gifford47/HCPBridgeMqtt

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

405 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Buy a ready to use kit here

Discussion & orders
Getting started prebuild PCBs

Support this project

If you like HCPBridge and want to support its development, consider sponsoring me! Your contribution helps cover development, testing and bug-fixing.

Sponsor

Hörmann hormann — MQTT + Home Assistant

Web Interface

Emulates Hörmann UAP1-HCP (HCP2) using an ESP32 + RS485 converter and exposes garage door controls via MQTT and a web UI.


Table of Contents


Quick Start

  1. Flash the firmware to an ESP32 (see docs/ for build instructions).
  2. Connect ESP32 TX/RX to an RS485 converter and wire to the HCP bus.
  3. Power on the motor control board and run a BUS scan (see Installation).
  4. Connect to the device hotspot or your Wi-Fi and open the web interface (details below).
  5. Configure Wi-Fi and MQTT via the web UI or config.json.

If you just want to test: connect to hotspot hormann / password gifford47, open the web UI and set your MQTT broker.


Compatibility

Supported motors (UAP1-HCP / HCP2-Bus / Modbus)
SupraMatic E/P Serie 4
ProMatic Serie 4
Rollmatic v2

Not compatible with E3 series motors (different protocol / layout). For older HCP1 hardware see other projects: hgdo, hoermann_door, hormann-hcp.


Features

  • Read door status: open/closed/position, light on/off
  • Control: open, close, stop, light toggle, set position (half/vent/custom)
  • MQTT with Home Assistant Auto Discovery
  • Web Interface for configuration & control
  • OTA Updates
  • First-use hotspot (for out-of-the-box Wi-Fi setup)
  • Support for ESP32-S1/S2/S3 families
  • Optional external sensors (DS18x20, BME280, DHT22, HC-SR04, HC-SR501, MQ4)
  • Efficient MQTT traffic (only publish on state change)
  • Support multiple HCP Bridges for several doors

Installation

Hardware

  1. Just plug-in the provided RJ12 cable (see Screenshots)
    See also: Getting started prebuild PCBs

BUS Scan / First Run

  • Old hardware: trigger BUS scan by flipping the last DIP switch (ON → OFF). Note: BUS power (+24V) may be removed when no devices detected — you can "jump start" using +24V from motor connectors if necessary.
  • New hardware: BUS scan via the LC display in menu 37. See:

Web Interface

To access the web interface, first connect to the device’s automatic Wi-Fi hotspot.
By default, the hotspot is named HCPBRIDGE and secured with the password gifford47.

Once connected, open a web browser and go to:
http://[deviceip]
(you can also try http://192.168.4.1 if you are connected directly to the hotspot).

When the login screen appears, use the following default credentials:

  • Username: admin
  • Password: (leave empty)

After logging in, you will see the main control panel of the device.

OTA Update Access

For performing OTA (Over-The-Air) updates, authentication uses a different set of credentials:

  • Username: admin
  • Password: admin


Factory Reset & Sensor Recovery

The Boot button (GPIO 0) supports two reset levels:

Presses (within 6s) Action
3x Disable all sensors and restart (sensor recovery)
5x Full factory reset (clear all preferences)

Sensor recovery (3x press): If a faulty sensor causes boot problems, press the button 3 times to disable all sensors. The device will restart normally and you can fix the sensor configuration in the Web UI.

Automatic crash recovery: If a sensor causes a crash (panic/watchdog), the firmware detects this on the next boot via esp_reset_reason() and automatically disables all sensors.

Full factory reset (5x press): Clears all Wi-Fi, MQTT and sensor configuration. The device will restart with its default hotspot.


MQTT & Home Assistant

MQTT topics (example)

hormann/<device_id>/state -> JSON with state/position/light/temperature
hormann/<device_id>/command -> payloads: OPEN, CLOSE, STOP, LIGHT_TOGGLE, SET_POSITION:50
hormann/<device_id>/sensor/

Home Assistant (MQTT Auto Discovery)

The project publishes Home Assistant discovery messages for:

  • cover (shutter) entity with position support
  • binary_sensor for light / door open
  • sensors for temperature / humidity (if present)

Example configuration.yaml is not required when discovery is enabled.


Configuration

You can configure:

  • Wi-Fi (hotspot or STA)
  • MQTT broker settings (host, port, user, password, base topic)
  • Device name and ID
  • Sensor thresholds and mapping

Configuration can be done via the Web UI.


Sensors (optional)

Sensors are manually enabled via the Web UI under Sensor Configuration. Each sensor can be individually activated with a checkbox — no auto-detection. If an enabled sensor is not connected or fails to initialize, the ESP will continue booting normally and report the error via the debug MQTT entity.

Supported sensors:

  • BME280 (I2C) — temperature, humidity, pressure
  • DS18x20 (OneWire) — temperature
  • DHT22 — temperature, humidity
  • HC-SR04 (ultrasonic) — distance / parking space detection
  • HC-SR501 (PIR) — motion
  • MQ4 (analog) — methane / natural gas

Sensor readings are published to MQTT under hormann/<device_id>/sensor with configurable thresholds. Pins and thresholds are configurable in the Web UI.

Parking Space Detection (HC-SR04)

The HC-SR04 ultrasonic sensor can be used to detect available parking space. The "Parking" feature (displayed as "free": true/false in MQTT):

  • Measures distance to an object (e.g., car in garage)
  • Tracks the maximum distance ever measured (represents empty space baseline)
  • Compares current distance to max with a proximity threshold (default: 10cm)
  • Publishes true when (current_distance + threshold) > max_distancespace available
  • Publishes false when occupied → no parking space

Configuration:

  • Enable sensor: Activate HC-SR04 in Sensor Configuration tab
  • Trigger & Echo pins: Set custom GPIO pins for your board
  • Max distance: Sensor range limit (default: 150cm)
  • Proximity threshold: Distance margin for detection (default: 10cm, configurable as sen_prox_thresh)

Sensor Safety

  • Each sensor is tested up to 3 times during boot before being marked as failed
  • Failed sensors are shown with red text in the Web UI (last known value preserved)
  • During normal operation, 5 consecutive poll failures disable a sensor until reboot
  • MQTT discovery and publishing skip failed sensors — no stale data sent to Home Assistant
  • See Factory Reset & Sensor Recovery for crash recovery options

Ventilation (vent) position

A small implementation supports a ventilation (vent) position and custom positioning. The vent behaviour uses a configured numeric position value. You can set custom positions with MQTT SET_POSITION.


Troubleshooting

  • No BUS devices found: check wiring, test +24V, try "jump start" with motor connector +24V. For old HW, ensure DIP-based scan is toggled.
  • Cannot reach Web UI: connect to hotspot HCPBRIDGE / try http://192.168.4.1. Check firewall or captive-portal on client device.
  • MQTT messages not arriving: verify broker settings, credentials, and that device is connected to Wi-Fi. Use a local MQTT client (mosquitto_sub) to debug.
  • OTA fails: confirm OTA credentials (admin/admin) and sufficient flash space. Use serial logs to inspect errors.

If you need help, start a discussion in the repo.


Development & Contributing

Contributions welcome! Please:

  1. Fork the repo
  2. Create a feature branch (feat/my-change)
  3. Open a PR with a clear description and tests where possible

License

This project is licensed under the MIT License — see LICENSE for details.


Screenshots

Motor connection

Web UI

Hass

HA shutter card

hormann


More docs

About

Open-source ESP32 project that connects your Hörmann garage door to Home Assistant or any MQTT-based smart home system. It provides full local control and real-time status updates via Wi-Fi, web interface, and MQTT — no cloud, no proprietary gateway, just fast, private, and reliable smart garage automation.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 60.5%
  • C 18.9%
  • HTML 12.8%
  • Python 7.8%