# homebridge-http-accessories

> A http plugin with support of webhooks for Homebridge: https://github.com/nfarina/homebridge

Latest version **0.0.1** (published 2019-01-08) · GPL-3.0 license · 0 weekly downloads

## Install

```sh
npm install homebridge-http-accessories
pnpm add homebridge-http-accessories
yarn add homebridge-http-accessories
bun add homebridge-http-accessories
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.1 |
| Published | 2019-01-08 |
| First published | 2019-01-08 |
| Weekly downloads | 0 |
| License | GPL-3.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.12.0 |
| Dependencies | 3 |
| Unpacked size | 127.1 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 0 |
| Author | uk05de |
| Maintainers | naturtyp |
| Keywords | homebridge-plugin, homebridge, plugin, http, webhook, smart, homekit, siri |

## Links

- npm: https://www.npmjs.com/package/homebridge-http-accessories
- Repository: https://github.com/uk05de/homebridge-http-webhooks
- Homepage: https://github.com/uk05de/homebridge-http-webhooks#readme
- Issues: https://github.com/uk05de/homebridge-http-webhooks/issues
- npm.io page: https://npm.io/package/homebridge-http-accessories

## Dependencies (3)

- [request](https://npm.io/package/request.md) 2.87.x
- [http-auth](https://npm.io/package/http-auth.md) ^3.2.3
- [node-persist](https://npm.io/package/node-persist.md) 2.0.x

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 0.0.1 (latest) — 2019-01-08

## README

# homebridge-http-webhooks

This is a fork of https://github.com/benzman81/homebridge-http-webhooks

I have added a control of windows blinds...

# homebridge-http-webhooks
A http plugin with support of webhooks for [Homebridge](https://github.com/nfarina/homebridge).

The plugin gets its states from any system that is calling the url to trigger a state change.

Currently supports contact, motion, occupancy, smoke sensors, switches, push buttons, lights (only on/off), temperature sensors, humidity sensors and thermostats.

# Installation
1. Install homebridge using: `npm install -g homebridge`
2. Install this plugin using: `npm install -g homebridge-http-webhooks`
3. Update your configuration file. See sample-config.json snippet below.

# Retrieve state
To retrieve the current state you need to call the url `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToTrigger`
The returned JSON format is:
```
    {
        success: true,
        state: cachedState
    }
```

# Trigger change for boolean accessory
To trigger a change of a boolean accessory you need to call the url `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToTrigger&state=NEWSTATE`

## Contact sensor
For contact sensors the value for `NEWSTATE` is either `true` for contact or `false` for no contact.

## Motion sensor
For motion sensors the value for `NEWSTATE` is either `true` for motion detection or `false` for no motion. If `autoRelease` is used, than the state will be released after 5 seconds.

## Occupancy sensor
For occupancy sensors the value for `NEWSTATE` is either `true` for occupancy detection or 'false' for no occupancy. If `autoRelease` is used, than the state will be released after 5 seconds.

## Smoke sensor
For smoke sensors the value for `NEWSTATE` is either `true` for smoke detection or `false` for no smoke.

## Switch
For switches the value for `NEWSTATE` is either `true` for on or `false` for off.

## Push button
For push buttons the value for `NEWSTATE` is `true`. The button will be released automatically.

## Light
For lights the value for `NEWSTATE` is either `true` for on or `false` for off.

## Outlet
For outlets the value for `NEWSTATE` is either `true` for on or `false` for off.

### Outlet in use
For outlets the additional state `stateOutletInUse` is available. The value for `NEWSTATE` is either `true` for on or `false` for off and
can be changed by calling the url `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToTrigger&stateOutletInUse=NEWSTATE`

# Trigger action

## Switch
For switches you can trigger a url of any system for switching the switch on or off.

## Push button
For push buttons you can trigger a url of any system for "pushing the button. The button will be released automatically.

## Light
For lights you can trigger a url of any system for switching the light on or off.

## Outlet
For outlets you can trigger a url of any system for switching the outlet on or off.

# Update a numeric accessory
To update a numeric accessory you need to call the url `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&value=NEWVALUE`

## Temperature sensor
For temperature sensors the value for `NEWVALUE` is the new temperature reading.

## Light sensor
For light sensors the value for `NEWVALUE` is the new light intensity in lux (as float).

## Humidity sensor
For humidity sensors the value for `NEWVALUE` is the new relative humidity percentage reading.

## Air Quality sensor
For air quality sensors the value for `NEWVALUE` is the new air quality value (Between 1-5, 1 Excellent).

# Thermostat
To update a thermostat you can update four different values:
* Current temperature reading: `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&currenttemperature=NEWVALUE`
* Target temperature: `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&targettemperature=NEWVALUE`
* Current state (Off=0 / Heating=1 / Cooling=2): `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&currentstate=NEWVALUE`
* Target state (Off=0 / Heat=1 / Cool=2 / Auto=3): `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&targetstate=NEWVALUE`

# Security System
To update the state of security, you can update two different values:
* Current state (Stay=0 / Away=1 / Night=2 / Disarmed=3 / Triggered=4): `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&currentstate=NEWVALUE`
* Target state (Stay=0 / Away=1 / Night=2 / Disarm=3): `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&targetstate=NEWVALUE`

# Garage Door opener
To update a garage door opener you can update three different values:
* Current door state (Open=0 / Closed=1 / Opening=2 / Closing=3 / Stopped=4): `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&currentdoorstate=NEWVALUE`
* Target door state (Open=0 / Closed=1): `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&targetdoorstate=NEWVALUE`
* Obstruction detected (No=0 / Yes=1): `http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&obstructiondetected=NEWVALUE`

# Stateless switch
Stateless switches requires 3 parameters accessoryId, buttonName and the event to trigger:
* Single press = 0
* Double press = 1
* Long press = 2

`http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&buttonName=theButtonName&event=EVENT`

# Lock mechanism
To update a lock mechanism you can update two different values:

Current lock state (unsecured=0 /secured=1 / jamned=2 /unknown=3 ): http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&lockcurrentstate=NEWVALUE
Target lock state (unsecured=0 / secured=1): http://yourHomebridgeServerIp:webhook_port/?accessoryId=theAccessoryIdToUpdate&locktargetstate=NEWVALUE

# Configuration
Example config.json:
```
    {
        "platforms": [
            {
                "platform": "HttpWebHooks",
                "webhook_port": "51828",
                "cache_directory": "./.node-persist/storage", // (optional, default: "./.node-persist/storage")
                "http_auth_user": "test", // (optional, only if you like to secure your api)
                "http_auth_pass": "test", // (optional, only if you like to secure your api)
                "sensors": [
                    {
                    "id": "sensor1",
                    "name": "Sensor name 1",
                    "type": "contact"
                    },
                    {
                    "id": "sensor2",
                    "name": "Sensor name 2",
                    "type": "motion",
                    "autoRelease": false // (optional)
                    },
                    {
                    "id": "sensor3",
                    "name": "Sensor name 3",
                    "type": "occupancy",
                    "autoRelease": false // (optional)
                    },
                    {
                    "id": "sensor4",
                    "name": "Sensor name 4",
                    "type": "smoke"
                    },
                    {
                    "id": "sensor5",
                    "name": "Sensor name 5",
                    "type": "temperature"
                    },
                    {
                    "id": "sensor6",
                    "name": "Sensor name 6",
                    "type": "humidity"
                    },
                    {
                    "id": "sensor7",
                    "name": "Sensor name 7",
                    "type": "airquality"
                    }
                ],
                "switches": [
                    {
                    "id": "switch1",
                    "name": "Switch name 1",
                    "on_url": "your url to switch the switch on", // (optional)
                    "on_method": "GET", // (optional)
                    "on_body": "{ 'on' : true }", // (optional only for POST and PUT)
                    "off_url": "your url to switch the switch off", // (optional)
                    "off_method": "GET", // (optional)
                    "off_body": "{'on': false }" // (optional only for POST and PUT)
                    }
                ],
                "pushbuttons": [
                    {
                    "id": "pushbutton1",
                    "name": "Push button name 1",
                    "push_url": "your url to be called on push", // (optional)
                    "push_method": "GET" // (optional)
                    }
                ],
                "lights": [
                    {
                    "id": "light1",
                    "name": "Light name 1",
                    "on_url": "your url to switch the light on", // (optional)
                    "on_method": "GET", // (optional)
                    "off_url": "your url to switch the light off", // (optional)
                    "off_method": "GET" // (optional)
                    }
                ],
                "thermostats": [
                    {
                    "id": "thermostat1",
                    "name": "Thermostat name 1",
                    "set_target_temperature_url": "http://127.0.0.1/thermostatscript.php?targettemperature=%f",        // %f is replaced by the target temperature
                    "set_target_heating_cooling_state_url": "http://127.0.0.1/thermostatscript.php?targetstate=%b"     // %b is replaced by the target state
                    }
                ],
                "outlets": [
                    {
                    "id": "outlet1",
                    "name": "Outlet name 1",
                    "on_url": "your url to switch the outlet on", // (optional)
                    "on_method": "GET", // (optional)
                    "off_url": "your url to switch the outlet off", // (optional)
                    "off_method": "GET" // (optional)
                    }
                ],
                "security": [
                    {
                    "id": "security1",
                    "name": "Security System",
                    "set_state_url": "http://localhost/security/mode/%d",     // %d is replaced by the target state
                    "set_state_method": "GET" // (optional)
                    }
                ],
                "garagedooropeners": [
                    {
                        "id": "garagedooropener1",
                        "name": "Garage Door Opener name 1",
                        "open_url" : "your url to open the garage door", // (optional)
                        "open_method" : "GET", // (optional)
                        "close_url" : "your url to close the garage door", // (optional)
                        "close_method" : "GET" // (optional)
                    }
                ],
                "statelessswitches": [
                    {
                    "id": "statelessswitch1",
                    "name": "Stateless Switch 1",
                    "buttons":[ //the buttons of the switch
                        {
                        "name": "Button1"
                        },
                        {
                        "name": "Button2",
                        "double_press": false, //you can disable a type of action
                        "long_press": false
                        }
                    ]
                    }
                ],
                "lockmechanisms": [
									{
									"id": "doorlock1",
									"name": "Door",
									"open_url" : "your url to open the garage door", // (optional)
									"open_method" : "GET",// (optional)
									"close_url" : "your url to close the garage door", // (optional)
									"close_method" : "GET"// (optional)
									}
							  ]
            }
        ]
    }
```

---
_Source: https://npm.io/package/homebridge-http-accessories · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
