Garage Door plugin for homebridge: https://github.com/nfarina/homebridge

Usage no npm install needed!

<script type="module">
  import homebridgeGaragedoorCommand from 'https://cdn.skypack.dev/homebridge-garagedoor-command';



mit license npm npm donate

Homebridge plugin to control a garage door using command line functions
It supports commands to check state, open, and close the garage door


This easiest way to use this plugin is to use homebridge-config-ui-x.
To configure manually, add to the accessories section of Homebridge's config.json after installing the plugin as shown below:

"accessories": [
    "accessory": "GarageCommand",
    "name": "Garage Door",
    "open": "./open.sh",
    "close": "./close.sh",
    "state": "./check_state.sh",
    "status_update_delay": 15,
    "poll_state_delay": 20,
    "ignore_errors": false,
    "log_polling": false

Field Description
accessory Must always be "GarageCommand" (required)
name Name of the Garage Door (required)
open open command. Examples: ./open.sh or node open.js (required)
close close command. Examples: ./close.sh or node close.js (required)
state state command. Examples: ./check_state.js or node state.js (required)
status_update_delay Time to have door in opening or closing state (defaults to 15 seconds)
poll_state_delay Time between polling for the garage door's state (leave blank or set to 0 to disable state polling)
ignore_errors Causes the plugin to replace 'STOPPED' status with 'CLOSED' (defaults to false)
log_polling Will log every single status check to the homebridge log (default to false)
  • The open, close, and state commands must return the following verbs: OPEN, CLOSED, OPENING, CLOSING, STOPPED.


The following config options can also be added manually or configured in homebridge-config-ui-x:

Field Description
manufacturer Manufacturer to display instead of default 'Apexad'
model Model to display instead of default 'Garage Commmand'
serialNum Serial Number to display instead of default '001'


Can I have multiple garage doors?

Yes! but this is a feature of homebridge, not the plugin.
Add another accessory block with a different name than your other garage door.
If using homebridge-config-ui-x you can do this in the plugin settings.

Can you add 'x' feature?

Yes, I probably could. Will I? Probably not. It does not hurt to ask though but I will also gladly look at any PRs too.

What is the STOPPED status?

STOPPED is a valid status for a door to be in, but in the Home App, it is reported as OPEN (with a slightly different icon). If an error occures in getting the status, STOPPED should be returned, and it will be logged, but the plugin has the ignore_errors config option so that a false OPEN event won't be triggered. Be careful with ignore_errors as it can be somewhat dangerous to report an error as CLOSED.