# Homebridge Multi-Tap-Switch
This plugin provides a switch, which can be triggered multiple times to trigger different actions.
Actions could be everything, which can be configured within **Automations**.
## How it works?
The plugin provides a virtual **switch** which can be triggered manually (which doesn't really make sense) or
by **Automations**. A configurable set of **programmable** switches will than be used to
trigger scenes and/or devices (like for i.e. motion or contact sensors).
Each time the switch is triggered ```ON``` - what can be done multiple times without reset - the **stateless** switches
are triggered one after the other.
The switch is reset after a configurable timeout to start from the first **programmable** switch again.
## Installation
Either install this plugin through [Homebridge Config UI X](https://github.com/oznu/homebridge-config-ui-x)
or manually by following these instructions:
1. Install Homebridge (follow [the instructions](https://github.com/homebridge/homebridge/wiki)).
2. Install this plugin by running `npm install -g homebridge-multitap-switch`.
3. Add this plugin to the Homebridge `config.json` (as described in the next section)
## Configuration
The configuration allows the user to add multiple **Multi-Tap-Switches**. The following parameters are available:
| Option | Default Value | Characteristic (runtime configuration) | Description |
|------------------------------------|----------------|----------------------------------------|-------------------------------------------------------------------------------------------|
| `name` | MultiTapSwitch | | Name of the Platform Accessory (primarily shown in logs) |
| `devices[]` | | | Array of configured devices |
| `devices[].name` | | | Name of the switch |
| `devices[].numberConfiguredScenes` | 5 | `Configured Scenes` | Number of **stateless** switches (cannot be changed during runtime) |
| `devices[].triggerTimeout` | 10 | `Trigger Timeout` | Seconds, after which the switch is reset (starting from the first **programmable** switch |
| `devices[].resetAfterSwitchOff` | false | | Reset the switch (like after timeout), when it is turned ```OFF```. |
| `devices[].logging` | false | | Logging of switch/trigger actions. |
The parameter ```triggerTimeout``` can be changed in the configuration during runtime. So, this is just the initial value.
> **NOTE:** If the value is out of sync from the configured value (i.e. updated via Home-App), it will not be updated on later configuration changes.
> It must be set back to the configured value first!
The parameter ```numberConfiguredScenes``` just defines how many **programmable** switches are available. The number of
really **used** switches can configured during runtime, between 0 and the configured number.
> **NOTE:** Additional parameters (also called **Characteristics**) can only be configured via 3rd-party HomeKit apps (i.e.
> Home+, Controller for HomeKit, etc.), but in the basic Home App!
So, an example **platform** plugin config will look as follows:
````
{
"platform": "MultiTapSwitch",
"name": "MTSwitch",
"devices": [
{
"name": "MTSwitch 1",
"numberConfiguredScenes": 5,
"triggerTimeout": 10,
"resetAfterSwitchOff": true,
"logging": true
}
]
}
````