For quite a while I have been looking for a way to integrate my Hörmann garage door into openHAB. My goal very simple: control the door through openHAB just like with the original remote. The available solutions didn’t really work out for me.
- HM-KNX, directly connects to the Hörmann bus, but KNX is no option for me (wiring) and price is well above 100 €
- Bisecur Gateway, also requires wiring, also above 100 €
- UPA1, requires additional interface (e.g. ESP32) to connect to openHAB
- Another remote and connect it to some interface
None of them were within the justifiable budget (money / time) for this functionality so I focused on other projects until a few days ago I came across the Homematic HmIP-MOD-HO .
Priced slightly above the Hörmann UAP 1 but well below the Bisecur Gateway it seemed worth a try as I’m already running other Homematic devices. As I didn’t find enough valuable information available I wanted to share my experience.
0. Preparation
Make sure your motor is supported by the HmIP-MOD-HO and that the CCU firmware is updated. Make sure the BUS port of your motor is not used. The HmIP-MOD-HO uses the same address as the UAP1, so they can’t be operated in parallel.
1. Inclusion in Homematic WebUI
As for other Homematic devices, installation starts at the Homematic WebUI. Type in KEY and SGTIN and start the search process. Within the next 60 seconds, connect the HmIP-MOD-HO to the BUS port of your motor.
The status LED of the HmIP-MOD-HO will start blinking orange and ultimately turn red. That’s no problem. Press and hold the button (which is the LED) for 4 seconds until it start blinking orange again. Now it’s in inclusion mode. It turned red again, but the WebUI inbox showed the newly identified device. After confirmation I could play with the buttons (see picture, sorry for German setting) and it controlled the garage door as intended.
2. Integration in openHAB
My PaperUI inbox already showed the new thing which provides surprisingly many channels.
After playing around I am now using the following:
- 1#DOOR_COMMAND: This string channel can be set to NOP, OPEN, CLOSE, STOP or PARTIAL_OPEN in order to make the door execute it.
- 1#DOOR_STATE: This string channel provides the door status VENTILATION_POSITION, OPEN, CLOSE or POSITION_UNKNOWN. The latter is used when the door moves or if the door has been stopped at any non-preset (open, closed, ventilation) position. You don’t get precise position information like percentage, though.
- 1#ERROR_CODE: Number channel with an error code in case there is some problem, otherwise 0.
I’d like to point out some other channels some might be interested in, but which I decided not to use. There are even more available though.
- 1#PROCESS: This string channel with NOT_STABLE while motor is running and STABLE in standstill.
- 2#STATE: This switch channel allows controlling the light of the motor. As I’m happy with the logic my SupraMatic has built-in I’m currently not planning to integrate this little bulb. I have the general garage lighting independent of the motor anyway.
- 0#SIGNAL_STRENGTH: I checked this number item only once at setup just to know. It’s stationary equipment and shouldn’t change that often or drastically.
3. Items
The first, virtual item is the one I use for my sitemaps.
Rollershutter UG_Garage_Tor "Garagentor" <garagedoor>
String UG_Garage_Tor_1DOOR_COMMAND "DOOR_COMMAND" {channel="homematic:HmIP-MOD-HO:OE00000000:00000000000000:1#DOOR_COMMAND"}
Number UG_Garage_Tor_1ERROR_CODE "ERROR_CODE" {channel="homematic:HmIP-MOD-HO:OE00000000:00000000000000:1#ERROR_CODE"}
String UG_Garage_Tor_1DOOR_STATE "DOOR_STATE" {channel="homematic:HmIP-MOD-HO:OE00000000:00000000000000:1#DOOR_STATE"}
4. Rules
The goal is to have the virtual rollershutter item as the sole interaction point. I have never used ventilation position or independent light control and never had the need to. Therefor the following rules purely forward the commands for open/close/stop to the garage door and feed the status back open/closed/other. At the moment that’s all I want.
rule "Garage door: close"
when
Item UG_Garage_Tor received command DOWN
then
UG_Garage_Tor_1DOOR_COMMAND.sendCommand("CLOSE")
end
rule "Garage door: open"
when
Item UG_Garage_Tor received command UP
then
UG_Garage_Tor_1DOOR_COMMAND.sendCommand("OPEN")
end
rule "Garage door: stop"
when
Item UG_Garage_Tor received command STOP
then
UG_Garage_Tor_1DOOR_COMMAND.sendCommand("STOP")
end
rule "Garage door: update position"
when
Item UG_Garage_Tor_1DOOR_STATE changed
then
var pTorStatus = UG_Garage_Tor_1DOOR_STATE.state
if (pTorStatus == "OPEN") {
UG_Garage_Tor.postUpdate(UP)
}
else if (pTorStatus == "CLOSED") {
UG_Garage_Tor.postUpdate(DOWN)
}
else { // position unknown, ventilation position or moving
UG_Garage_Tor.postUpdate(20)
}
end
5. Result
The icon shows the garage door status, no matter if it has been operated by the wall switch, the original remote or the HmIP-MOD-HO. The buttons allow to open, stop and close the door.
Of course for many others this is only a fraction of the desired functionality. I still hope it helps to understand what to expect from HmIP-MOD-HO and how to get started with it.