homebridge-web-window-covering
v1.0.8
Published
Homebridge plugin for a web-based window covering
Downloads
2
Readme
homebridge-web-window-covering
Description
This homebridge plugin exposes a web-based valve to Apple's HomeKit. Using simple HTTP requests, the plugin allows you to open and close the window covering.
Installation
- Install homebridge
- Install this plugin:
npm install -g homebridge-web-window-covering - Update your
config.jsonfile
Configuration
"accessories": [
{
"accessory": "WebWindowCovering",
"name": "Window Covering",
"apiroute": "http://myurl.com"
}
]Core
| Key | Description | Default |
| --- | --- | --- |
| accessory | Must be WebWindowCovering | 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 |
| --- | --- | --- |
| horizontalTilt | Whether to expose horizontal tilt as a characteristic | false |
| verticalTilt | Whether to expose vertical tilt as a characteristic | false |
| 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 |
| timeout | Time (in milliseconds) until the accessory will be marked as Not Responding if it is unreachable | 3000 |
| port | Port for your HTTP listener (only one listener per port) | 2000 |
| 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:
- Return JSON information when it receives
/status:
{
"positionState": INT_VALUE,
"currentPosition": INT_VALUE,
"targetPosition": INT_VALUE
}- Open/close the garage when it receives:
/targetPosition?value=INT_VALUE_0_TO_100- Update
currentPositionas it opens/closes by messaging the listen server:
/currentPosition?value=INT_VALUE_0_TO_100- Update
positionStateas it opens/closes by messaging the listen server:
/positionState?value=INT_VALUE_0_TO_2- Update
targetPositionfollowing a manual override by messaging the listen server:
/targetPosition?value=INT_VALUE_0_TO_100- Update
obstructionDetectedwhen an obstruction is detected by messaging the listen server (should notify0after obstruction moves unlessautoResetis enabled):
/obstructionDetected?value=INT_VALUE_0_TO_1Optional
- If
horizontalTiltis enabled, updatecurrentHorizontalTiltAngleas the angle changes:
/currentHorizontalTiltAngle?value=INT_VALUE_-90_TO_90- If
horizontalTiltis enabled, updatetargetHorizontalTiltAnglefollowing a manual override by messaging the listen server:
/targetHorizontalTiltAngle?value=INT_VALUE_-90_TO_90- If
verticalTiltis enabled, updatecurrentVerticalTiltAngleas the angle changes:
/currentVerticalTiltAngle?value=INT_VALUE_-90_TO_90- If
verticalTiltis enabled, updatetargetVerticalTiltAnglefollowing a manual override by messaging the listen server:
/targetVerticalTiltAngle?value=INT_VALUE_-90_TO_90PositionState Key
| Number | Name |
| --- | --- |
| 0 | Opening |
| 1 | Closing |
| 2 | Stationary |
