gpio-webhook-arduino/readme.md
2020-05-20 18:09:32 +00:00

59 lines
1.7 KiB
Markdown

# Control I/O pins with a webhook
This is an Arduino IDE sketch for a "smart" controller that can activate pins
based on the state of some webpage. (designed to be driven by [gpio webhook server](https://git.annabunch.es/annabunches/gpio-webhook-server))
The motivating use cases are:
* Controlling a PC power switch remotely, using a transistor wired to the power switch pins
* Lighting specific LEDs to create a remotely controlled 'traffic light'.
This sketch currently targets only the ESP8266, and will probably not work with other
microcontrollers. Support for other boards may come if I run out of ESP8266s.
## Configuration
First:
```
cp config.h.example config.h
```
Then edit `config.h` and fill in the correct values for your environment.
`PIN_MAP` in `config.h` is an array of pins that we want to control. Each item in the array is itself an
array, with the following format:
```
[output_pin, control_mode]
```
The index of the item in the top-level array is its 'index' value in the webhook. (see webhook data, below)
`output_pin` is the pin to control.
`control_mode` is either 0 or 1. 0 is for momentary mode; that is, when the state is active the pin will
only be high for a short time. 1 is for latched mode; the pin will stay high until the state changes.
## Building
Just run `make` to build the code. You need to have `config.h` and `data/ca_cert.pem` defined.
## Webhook data
The webhook should always return a page in the following (JSON-compatible) format:
```
[state_0, state_1, ...]
```
Where index and state are both integers. If you are expecting momentary input, you should return the
state to '0' after the page is served / the webhook is consumed.
## Future Improvements
* make it actually work...
* use WifiManager?