This script interfaces with homebridge to expose a relay to Apple's HomeKit, allowing you to integrate numerous devices into your smart home.
-
NodeMCU
-
Relay Module
-
Pin header cables
-
Micro-USB cable
-
First, install the
ArduinoJson
library from the Library manager in the Arduino IDE, then follow this gist which walks you through how to flash a NodeMCU. -
Assuming that you already have homebridge set up, the next thing you will have to do is install homebridge-http using the command:
npm install -g homebridge-http
- Finally, update your
config.json
file following the example below, making sure to adapt it accordingly:
"accessories": [
{
"accessory": "Http",
"name": "Lights",
"on_url": "http://relay.local/setState?type=switch&value=1",
"off_url": "http://relay.local/setState?type=switch&value=0",
"http_method": "GET"
}
]
NodeMCU | Relay Module |
---|---|
3V3 |
VCC |
GND |
GND |
D7 |
IN1 |
As you can see from the config.json
example above, the basic format of the HTTP request is the declaration of the mode type followed by the required state:
http://relay.local/setState?type=STRING_VALUE&value=INT_VALUE
Here is a table which shows you the available queries:
Name | Query | Description | Example Uses |
---|---|---|---|
Switch | /setState?type=switch |
Will simply turn on/off the relay permanently as per the Home app. | Lights, Faucets, Fans |
Momentary | /setState?type=momentary |
Will activate the relay for a brief moment, then deactivate after the amount of time specified in the script. | Garages, Gates, Buzzers |
Modulation | /setState?type=modulation |
Will activate then deactivate the relay constantly for the amount of time specified in the script until turned off. | Lights, Misting systems |
State | /status |
Will return the currentState in JSON form as 0 or 1 |
N/A |