Guide · Gates and garage doors
How to add a FAAC gate and a Marantec garage door to Home Assistant
Both can be controlled and monitored from Home Assistant with a Shelly 1 Gen3 wired into the existing control board, plus a separate signal that tells Home Assistant whether the gate or door is open or closed. We've done this on a FAAC 770N swing gate and a Marantec Comfort 270 garage door opener on a Surrey property. Both now work from a dashboard tile and from automations, and run locally.
Safety first. This is low-voltage control wiring on equipment with moving parts and safety circuits. Never connect to a safety input such as photocells, safety edges or obstruction inputs. Terminal names, programming menus and functions differ between control boards, so check your own board's manual. If you're unsure, use a qualified installer.
The approach: one trigger, one status
Every gate or garage door needs two separate connections:
- A trigger. A momentary pulse into the board's open or impulse input, exactly like pressing the wall button. The Shelly's relay does this.
- A status. A signal that tells Home Assistant whether it's open or closed. Without it you can pulse the gate but never know what state it's in.
Off-the-shelf modules such as Remootio and ismartgate do both jobs. We used a Shelly 1 Gen3 because it runs locally and puts a relay and an input in one small unit that fits beside the control board. The same Shelly does the trigger and the status, kept electrically separate.
FAAC swing gate (770N, 24V DC)
Trigger
Wire the Shelly's relay output (O and I) to the board's IN1 (OPEN A) input and GND. That's the normally-open command input, so it behaves like a push-button. Leave the safety-edge inputs alone. Set the Shelly's Auto Off timer to about one second so each trigger is a clean momentary pulse. The board treats each pulse as a step command: it opens a closed gate and closes an open one.
Status
The board's OUT2 auxiliary output (24V DC, 100mA maximum) can report the gate state, but it isn't a dry contact, so it can't go straight into the Shelly. Instead, OUT2 drives the coil of a small 24V DC interposing relay (we used a Finder 40.52-type DPDT, which draws around 25 to 30mA, well inside OUT2's rating). The relay's potential-free contact then connects the Shelly's SW input to its L terminal. The gate's 24V DC side never touches the Shelly's mains-referenced input.
On the board's advanced programming menu, set OUT2 to function 05 ("automated system open or in pause"). That gives a steady on while open or paused and off while closed. We first landed on function 07 ("moving"), which is on only while the gate travels, and the live Shelly input in Home Assistant showed straight away that it was wrong. If your status flickers or reads wrong, check which function you've selected.
Shelly settings
- Input 0 mode: Switch.
- Output 0 type: Detached. This stops the status input from ever driving the Shelly's own relay, so status only reports and never accidentally fires a pulse.
- Action on power on: we recommend Turn OFF rather than restoring the last state, so a power blip can't leave the relay held closed against the board's input.
Marantec Comfort 270 garage door opener
Trigger
Wire the Shelly's relay in parallel with the existing wall button across the control board's terminal block XB03: O to terminal 1 (GND) and I to terminal 2 (Impulse). Leave terminals 3 and 4 and the photocell terminals (70/71) untouched. Because it's in parallel, the original button keeps working. Use the same one-second Auto Off pulse as the gate.
Status
Fit a standalone magnetic reed switch on the door and wire it straight to the Shelly's SW and L terminals. A reed switch is inherently potential-free, so unlike the FAAC output it needs no interposing relay. Use the same Switch and Detached settings as above.
- Don't assume a spare wire at the board is a door sensor. We hoped to reuse a bundle of wires there as a ready-made door sensor, and it turned out to belong to an unrelated alarm sensor. Identify any existing wiring before you rely on it.
- A reed switch has no polarity. Whether it reads on or off when closed depends on how it's mounted. If the dashboard shows open while the door is shut, flip the state test in Home Assistant instead of rewiring.
The Home Assistant cover
A template cover turns the relay and the status input into one entity with a proper open/closed state. Replace the entity names with your own:
template:
- cover:
- name: "Garage Door"
device_class: garage
state: >
{% if is_state('binary_sensor.garage_shelly_input_0', 'off') %}
open
{% else %}
closed
{% endif %}
open_cover:
- action: switch.turn_on
target:
entity_id: switch.garage_shelly
close_cover:
- action: switch.turn_on
target:
entity_id: switch.garage_shelly
Both open_cover and close_cover send the identical pulse on purpose, because the board toggles. The dashboard only shows the button that makes sense for the tracked state. The 'off' in the state test is for our reed switch's polarity; for a gate wired through an interposing relay as above it was 'on'. Add a Tile card on the cover with the cover-open-close feature for a single tile showing status and buttons.
After editing configuration.yaml, reload Template Entities under Developer Tools → YAML. Forgetting this step gave us a confusing "still wrong" moment that had nothing to do with the logic.
Automation gotchas
A toggle relay can re-open what you meant to close
Because each pulse toggles, a "close the garage" step in a Going Out script will open a door that's already shut. Only pulse when the cover is actually open:
- if:
- condition: state
entity_id: cover.garage_door
state: open
then:
- action: switch.turn_on
target:
entity_id: switch.garage_shelly
Check the condition does what you think
Our "close the gate at 10pm" automation wrapped its open check in a not, so it only fired when the gate was already closed, the opposite of the intent. Test scheduled automations at both states.
A left-open alert is worth having
triggers:
- trigger: state
entity_id: cover.garage_door
to: open
for:
minutes: 20
actions:
- action: notify.mobile_app_your_phone
data:
message: The garage door has been open for over 20 minutes.
The notify service name has to match your phone exactly, and it can change after a companion-app reinstall. Check the live name under Developer Tools → Actions rather than guessing.
Frequently asked questions
Do my remote and wall button still work?
Yes. The Shelly is wired in alongside them, so the original controls carry on working.
Does it work without the internet?
Yes. The Shelly and Home Assistant talk to each other over your local network. You only need the internet for remote access.
Will these terminals match my FAAC or Marantec board?
Not necessarily. These are the terminals on the boards we worked on. FAAC boards in particular come in several variants with different menus. Always check your own board's manual before connecting anything.
Want your gate or garage door in Home Assistant?
We do the wiring, the Home Assistant setup and the dashboard, and test it on site before we leave. Covering Woking, Guildford, Reigate and the wider Surrey area.