# WiFiThermostat - HTTP web interface and API

## Web interface
The thermostat runs a small web interface for direct control and configuration. 
The web interface itself runs on HTTP port 80. 

URL: http://IPADDRESS/

It can be user/password protected using the options in ***Base configuration***.
The Web interface includes the following functions: 
* WiFi settings
* Base configuration
* Extended configuration
* Firmware update
* Restart

## HTTP API

Some values can be also directly be changed using this HTTP API. 
Most options use a TOKEN for "protection", which can be different to the HTTP password and must be configured on the ***Base configuration*** page on the web interface.

Currently the following HTTP API calls are implemented: 

### Set point
Sets the heating target temperature. 

URL: http://IPADDRESS/setPoint?value=VALUE&token=TOKEN

Where VALUE is float in 0.5 steps >= configured setTempMin & <= setTempMax.

Lower values result in setTemp = setTempMin, higher in setTemp = setTempMax. 

Decimals other than .0 and .5 are rounded to the nearest valid value.

### Set mode
Sets the heating mode. 
Can be one of the following values: 
* 0 - heating off
* 1 - normal heating mode
* 2 - reduction mode

URL: http://IPADDRESS/setMode?value=VALUE&token=TOKEN

### MQTT reconnect
Forces MQTT reconnect. Can be used without token or authentication. 

URL: http://IPADDRESS/mqttReconnect

### Restart
Restarts the MCU. Can be used without token or authentication. 

URL: http://IPADDRESS/restart

### Info
Returns some runtime information. Currently not much. 

URL: http://IPADDRESS/info

### API
Returns a JSON string with some current data. Can currently be used without token or authentication but this will be changed. 
Also used for the buttons on the web interface. 

http://IPADDRESS/api

Example: {"devname":"Thermostat 1","ssid":"SSID","setTemp":22.5,"temp":22.40049,"hum":37,"mode":1,"heating":false}

Where: 
* setTemp = set point temperature
* temp, hum = current readings from the temperature/humidity sensor
* mode = heating mode
* heating = false if heating is currently off, true if heating is currently on

Additionally /api can take the following arguments, which are only intended to be used by the web interface buttons: 
* plusBtn
* minusBtn
* modeBtn
* onoffBtn

### confdata, confdata2
This is the backend of the configuration pages in the web interface. Only intended to be used by that. 
