homebridge-web-garage

Homebridge plugin for a web-based garage

Usage no npm install needed!

<script type="module">
  import homebridgeWebGarage from 'https://cdn.skypack.dev/homebridge-web-garage';
</script>

README

homebridge-web-garage

npm npm

Description

This homebridge plugin exposes a web-based garage opener to Apple's HomeKit. Using HTTP requests, you can open/close the garage and update the plugin with the garage's real-time position. The plugin achieves this by setting up a listen server which listens for changes in state from your device and then feeds them real-time into HomeKit.

Installation

  1. Install homebridge
  2. Install this plugin: npm install -g homebridge-web-garage
  3. Update your config.json

Configuration

"accessories": [
     {
       "accessory": "GarageDoorOpener",
       "name": "Garage",
       "apiroute": "http://myurl.com"
     }
]

Core

Key Description Default
accessory Must be GarageDoorOpener N/A
name Name to appear in the Home app N/A
apiroute Root URL of your device N/A

Optional fields

Key Description Default
autoLock Whether your garage should auto-close after being opened false
autoLockDelay Time (in seconds) until your garage will automatically close (if enabled) 10
autoReset Whether obstruction detection should automatically change the state back to 0 after being triggered false
autoResetDelay Time (in seconds) until the obstruction detection will automatically reset (if enabled) 5

Additional options

Key Description Default
pollInterval Time (in seconds) between device polls 300
port Port for your HTTP listener (only one listener per port) 2000
timeout Time (in milliseconds) until the accessory will be marked as Not Responding if it is unreachable 3000
http_method HTTP method used to communicate with the device GET
username Username if HTTP authentication is enabled N/A
password Password if HTTP authentication is enabled N/A
model Appears under the Model field for the accessory plugin
serial Appears under the Serial field for the accessory apiroute
manufacturer Appears under the Manufacturer field for the accessory author
firmware Appears under the Firmware field for the accessory version

API Interfacing

Your API should be able to:

  1. Return JSON information when it receives /status:
{
    "currentDoorState": INT_VALUE,
    "targetDoorState": INT_VALUE
}
  1. Open/close the garage when it receives:
/setTargetDoorState/INT_VALUE_0_TO_1
  1. Update currentDoorState as it opens/closes by messaging the listen server:
/currentDoorState?value=INT_VALUE_0_TO_3
  1. Update targetDoorState following a manual override by messaging the listen server:
/targetDoorState?value=INT_VALUE_0_TO_1
  1. Update obstructionDetected when an obstruction is detected by messaging the listen server (should notify 0 after obstruction moves unless autoReset is enabled):
/obstructionDetected?value=INT_VALUE_0_TO_1

DoorState Key

Number Name
0 Open
1 Closed
2 Opening
3 Closing