homebridge-web-thermostat
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
Optional (if listener is enabled)
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