This homebridge plugin exposes a web-based thermostat to Apple's HomeKit. Using simple HTTP requests, the plugin allows you to set the thermostat mode and control the target temperature.
- Install homebridge
- Install this plugin:
npm install -g homebridge-web-thermostat
- Update your
config.json
file
"accessories": [
{
"accessory": "Thermostat",
"name": "Thermostat",
"apiroute": "http://myurl.com"
}
]
Key | Description | Default |
---|---|---|
accessory |
Must be Thermostat |
N/A |
name |
Name to appear in the Home app | N/A |
apiroute |
Root URL of your device | N/A |
Key | Description | Default |
---|---|---|
temperatureDisplayUnits |
Whether you want °C (0 ) or °F (1 ) as your units |
0 |
currentRelativeHumidity |
Whether to include currentRelativeHumidity as a field in /status |
false |
heatOnly |
Whether to only expose the heating characteristic, and not cooling/auto | false |
maxTemp |
Upper bound for the temperature selector in the Home app | 30 |
minTemp |
Lower bound for the temperature selector in the Home app | 15 |
minStep |
Minimum increment value for the temperature selector in the Home app | 0.5 |
temperatureThresholds |
Whether you want the thermostat accessory to have heating and cooling temperature thresholds | false |
Key | Description | Default |
---|---|---|
listener |
Whether to start a listener to get real-time changes from the device | false |
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 (if enabled) | 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 |
Your API should be able to:
- Return JSON information when it receives
/status
:
{
"targetHeatingCoolingState": INT_VALUE,
"targetTemperature": FLOAT_VALUE,
"currentHeatingCoolingState": INT_VALUE,
"currentTemperature": FLOAT_VALUE
}
Note: You must also include the following fields in /status
if enabled in the config.json
:
currentRelativeHumidity
coolingThresholdTemperature
&heatingThresholdTemperature
- Set
targetHeatingCoolingState
when it receives:
/targetHeatingCoolingState?value=INT_VALUE
- Set
targetTemperature
when it receives:
/targetTemperature?value=FLOAT_VALUE
- (if enabled) Set
coolingThresholdTemperature
when it receives:
/coolingThresholdTemperature?value=FLOAT_VALUE
- (if enabled)
heatingThresholdTemperature
when it receives:
/heatingThresholdTemperature?value=FLOAT_VALUE
- Update
targetHeatingCoolingState
following a manual override by messaging the listen server:
/targetHeatingCoolingState?value=INT_VALUE
- Update
targetTemperature
following a manual override by messaging the listen server:
/targetTemperature?value=FLOAT_VALUE
- (if enabled) Update
coolingThresholdTemperature
following a manual override by messaging the listen server:
/coolingThresholdTemperature?value=FLOAT_VALUE
- (if enabled) Update
heatingThresholdTemperature
following a manual override by messaging the listen server:
/heatingThresholdTemperature?value=FLOAT_VALUE
Number | Name |
---|---|
0 |
Off |
1 |
Heat |
2 |
Cool |
3 |
Auto |