homebridge-web-thermostat-fan
This plugin is based on the homebridge-web-thermostat but has a slider for fan speed to be able to control AC-s with it as well.
Description
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.
Installation
Install homebridge
Install this plugin: npm install -g homebridge-web-thermostat-fan
Update your config.json
file
Configuration
" accessories " : [
{
" accessory " : " ThermostatWithFan " ,
" name " : " Thermostat with a fan " ,
" apiroute " : " http://myurl.com "
}
]
Core
Key
Description
Default
accessory
Must be ThermostatWithFan
N/A
name
Name to appear in the Home app
N/A
apiroute
Root URL of your device
N/A
Optional fields
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
maxTemp
Upper bound for the temperature selector in the Home app
30
minTemp
Lower bound for the temperature selector in the Home app
15
temperatureThresholds
Whether you want the thermostat accessory to have heating and cooling temperature thresholds
false
coolingThresholdTemperature
Cooling threshold temperature if thresholds are enabled
30
heatingThresholdTemperature
Heating threshold temperature if thresholds are enabled
20
Additional options
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
API Interfacing
Your API should be able to:
Return JSON information when it receives /status
:
{
"targetHeatingCoolingState": INT_VALUE,
"targetTemperature": INT_VALUE,
"currentHeatingCoolingState": INT_VALUE,
"currentTemperature": FLOAT_VALUE,
"fanSpeed": INT_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/INT_VALUE
Set targetTemperature
when it receives:
/targetTemperature/INT_VALUE
(if enabled) Set coolingThresholdTemperature
when it receives:
/coolingThresholdTemperature/INT_VALUE
(if enabled) heatingThresholdTemperature
when it receives:
/heatingThresholdTemperature/INT_VALUE
Optional (if listener is enabled)
Update targetHeatingCoolingState
following a manual override by messaging the listen server:
/targetHeatingCoolingState/INT_VALUE
Update targetTemperature
following a manual override by messaging the listen server:
/targetTemperature/INT_VALUE
(if enabled) Update coolingThresholdTemperature
following a manual override by messaging the listen server:
/coolingThresholdTemperature/INT_VALUE
(if enabled) Update heatingThresholdTemperature
following a manual override by messaging the listen server:
/heatingThresholdTemperature/INT_VALUE
HeatingCoolingState Key
Number
Name
0
Off
1
Heat
2
Cool
3
Auto
FanSpeed Key
Number
Name
0
Off
1
Quiet
2
Low
3
Medium
4
High
5
Auto