# WiFiThermostat - Changelog ## 0.7.1 2022-11-26 * revert "thermostat logic every second, not depending on interval for measurements" as it caused performance issues * enhance compatibility with current Home Assistant versions MQTT-HVAC integration (tested with Home Assistant 2022.11.4) * add documentation: HomeAssistant.md * update documentation ## 0.7.0 2022-11-25 * display active heating lock status * lock symbol on LCD * "HEATING LOCKED" state text on web interface * heating locked rest time text on web interface * rest time on MQTT topic heatingLockTime * toggle heating mode on/off disables active heating lock * added heating pause mode * can be enabled via MQTT and HTTP on /setPause = 1 (0 to disable) * can be enabled via HTTP on /api?setPause=1 (0 to disable) * has internal configurable timeout i.E. 30 min * when active - show pause symbol on LCD * publish rest time on MQTT topic heatingPause * toggle heating mode on/off disables pause mode * replace workaround for minHeatingOffTime active after reboot from v0.6.5 with actual fix * thermostat logic every second, not depending on interval for measurements * setTemp - setTempDecreaseVal is now displayed in WebIF as "Actual set Temp" * IP display on start - removed "IP: " so that also IPs with all 3 digit octets can be displayed * FIX: Measured Temp Correction and Set Temp. Decrease Value could not be changed/saved * WebSockets console enabled by default (old console still available) * moon symbol mirrored ## 0.6.6 2022-11-25 * changed order when switching mode with physical mode button so that less button presses are required to toggle i.E. from Normal to Reduction 1 and back * Normal > Reduction 1 > Reduction 2 * Reduction 1 > Normal > Reduction 2 * Reduction 2 > Normal > Reduction 1 ## 0.6.5 2022-11-25 * fix/workaround minHeatingOffTime active after reboot * changed max button press time to be detected as short press from 200 to 350ms ## 0.6.4 2021-03-22 * updated Arduino core to 2.7.4 ## 0.6.3 2021-03-14 * BUGFIXES: * wrong value in MQTT out "currSetTemp" * MQTT retained save did not work correctly ## 0.6.2 2020-01-23 * CONF * config is only saved if values have changed * config restart note on web interface only shown if a value that requires restart was changed * many settings can be changed without restart now * MQTT conf change resets connection (without restart) * string params can now be set empty by command "set PARAM 0" * notes on serial/mqtt/web-console when a value was changed but not saved, a config change requires restart or a config change requires MQTT connection reset * COMMANDS: added command for MQTT connection reset and info: mqttreset, mqttinfo * moved some pre compile settings and version info to header files fwsettings.h, fwversion.h * preparations for MQTT-TLS, but does not yet work * WebSockets console can now be disabled at compile time to save Flash and RAM, non-WS console with buffer works well, so no real need for WS version ## 0.6.1 2020-01-16 * improved uptime evaluation/output * improved logging function * added another web console which does not use WebSockets and buffers up to 4k message history * WS version stays in for now, accessible via _/wsconsole_ - will maybe merge them to a hybrid version in the future * added EXPERIMENTAL encryption of saved passwords * Disabled by default * Enable encryption with command "encrypt" * Disable again with command "decrypt", which also deletes all stored passwords in order to save them from beeing retrieved easily. If decryption is done intentionally all credentials have to be re-entered. * Simple XOR encryption, key can only be changed at compile time Not perfectly safe but better than storing in plain text. Makes it at least a little bit more difficult to retrieve passwords. Still looking for an improved solution, which is not easy as ressources are very limited and the decryption key must be stored somewhere on the device anyway - which would not be different with another encryption technique. * added compile time options to disable certain features completely * has weird issues when compiling with PlatformIO and WebSockets function is disabled -> has to be investigated * added/improved commands, added help command, etc. * all commands work via serial, MQTT (/cmd topic) and web console now * see commands list in seperate file * added sysinfo page at /sysinfo * many small improvements ## 0.6.0 2020-01-13 * added NTP time sync + config page * added simple logging function which replaces most Serial.print()'s and can send via Serial, MQTT and WebSocket * added WebSocketServer and simple web console (experimental) * TCP port 81 * for basic security accessible only with valid session cookie which is generated on load of /console page * can send commands similar to MQTT and Serial to device * shows log output as long as the connection is up * access system information at http://[IP_ADDR]/sysinfo in JSON format * moved HTML contents to .h files * lots of smaller and bigger changes and improvements ## 0.5.0 2020-01-09 * preparations/changes for building/development using VSCode/PlatformIO * exchanged PersWiFiManager 5.0.0 library to my own forked version, PersWiFiManagerExt 1.0.0, with extended functionality: * AP auto disable after timeout, tries reconnecting a configured WiFi after that * AP only comes up at first disconnect or if no connection can established immediately * 2 different WiFi setups * cyclic connection checks and automatic (re-)connection handling preferring WiFi-1 * auto-reboot after timeout if no WiFi can be connected * HTTP basic authentication for API and config-page (if admin user/password are set they are now mandatory also here) * non-blocking mode as default * added 'Set Reduction Temps' to web interface, where the target temperatures for the reduction modes can be changed easily (former they were in a configuration page) * far improved configuration handling, now uses structs for better clarity * added functionality to save states to MQTT Retained messages instead of flash (configurable) * 'delete' function on disable, which sends empty retained messages out to delete the retained flag on the broker * added configuration MQTT Retained Sensors (former Retained option is now only for states output) * 'delete' function on disable, which sends empty retained messages out to delete the retained flag on the broker * added configuration for MQTT publish intervals (Interval States, Interval Sensors) * reduces MQTT publishing by far. Normally a publish will now occur only on changed data if retained flag is set. * moved some more code away from main .ino to functions * config commands now are also case-insensitive via serial (before that only via MQTT) * improved web configuration pages * WiFi configuration now fully integrated * clearer sections * most parameters have a description now * not all configuration pages do restart on save directly any more, only the ones where it is important * added restart note to web interface when a configuration-set was changed, which does not trigger a restart immediately * added automatically created device name, used as SSID in AP-mode * improved debug information on serial, removed unneccessary outputs * if firmware compiled in DEBUGMODE a note is displayed on web interface (cause it reveals saved passwords on serial in this mode...) * better/saver restart-function * password protected /update function (OTA Firmware Update) if admin user credentials are set * fixed many bugs * some arrays could be accessed out of bounds eventually * sprintf used wrong place holder for variable type * compare of unsigned and signed ints * many other minor and major issues not worth mentioning :-) * updated parts of documentation ## 0.4.0 2019-01-04 * updated ESP8266 Arduino Core to v2.6.3 * updated LiquidCrystal_I2C library to v1.1.3 (former version had compatibility issues with core 2.6 as it seems) https://github.com/johnrickman/LiquidCrystal_I2C/releases * updated DHT-sensor-library (Adafruit) to v1.3.8 * updated ArduinoJson library from 5.13.0 to 6.13.0, which includes breaking changes, so some code had to be changed as described here: https://arduinojson.org/v6/doc/upgrade/ * updated PersWiFiManager library to v5.0.0 * completely redesigned web interface with new features * (multi)user and admin mode for web interface * fixed/improved: HTTP authentication handling * improved MQTT (re)connection handling and heartbeat feature * removed Domoticz support completely * code cleanups ## 0.3.3 2019-11-05 * DHT sensor reading - retry if failed (does not fix issue) * improved temperature sensor timeout handling * updated Adafruit DHT22 sensor lib to 1.3.7 - that seems to have finally fixed the sensor reading issue * renamed "misc" to "scheduler" as it contains only timing/scheduling functions ## 0.3.2 2019-10-18 * fixed/improved: HTTP authentication handling * added: device hostname (announced via DHCP) can now be configured * fixed: restart function on web interface * added: show AP SSID + password on display for some seconds when AP mode is entered ## 0.3.1 2019-10-16 * fixed (issue #1): LCD - outside temp - wrong alignment on 1.1 digit values * added: configurable labels for inside and outside temperature ("I" and "O" in EN or "A" in DE) * fixed (issue #2): when (new) configuration values are not yet saved, initial values from source code are overwritten with blanks (only for most important values, not for MQTT topics, servers, users etc) ## 0.3.0 2019-10-11 * split "mode" to "mode" and "preset", changes in nearly all source files * add In+Out Temperature display (without humidity) without toggling on LCD line 1 * add publish topic "presetName" and "presetHA", where presetHA returns "none" for default preset and the name for the rest * add configuration for preset names, off-message, option for non toggling temp display (conf2 page) * minor fixed in http api and Web-IF * fixes/improvements in MQTT handling (subscribe to less topics than before using wildcard) * restart function: when holding down MODE button for >4s, display shows "Restart?". Restart is executed when: * MODE button is keeped holding * MODE button is pressed/held again as long as the "Restarting?" message is displayed * return to default operation mode when + or - button is pressed * changed position of preset mode indicator - now in LCD line 2 after the set temp * added "flame" symbol in LCD line 2, shown when the heating is active * added connection symbol (also LCD line 2), depending on received MQTT HEARTBEAT messages * added fullscreen messages for WiFi connect and MQTT connect * shows IP on startup and successful WiFi connection * shows AP mode notification and SSID on unsuccessful WiFi connection * shows to which MQTT broker we are connected if connecting was successful * added halfscreen (line 2) notifications - used for displaying the full name of the preset when using the MODE button * fixed http authentication ## 0.2.2 2019-05-31 * Home Assistant direct support (setTemp and setMode topics, real name used in setMode, mode names are configurable) * added MQTT connection message on LWT topic * default MQTT_HEARTBEAT_MAXAGE 180000 (former 12000) * updated PubSubClient to 2.7 (now included in src due to changed parameters) * minor improvements at MQTT connecting * added additional publish topic for PIR sensor (configurable) * bugfixes ## 0.2.1 2018-02-28 * added second reduction mode with different set temperature * MQTT reconnect now tries again every 5 min after 10 fails, finally restarts MCU on 20 unsuccessful retries ## 0.2.0 2018-02-16 * improved MQTT reconnection management with heartbeat and force-reconnect * improved MQTT callback function * improved overall stability * added correction value for set point temperature * added some defines for default values * added http control api with token * added mqttReconnect http call * bugfixes * some documentation Important: for now compiled using Arduino 1.8.5 with ESP8266-Arduino core 2.4.0-rc2, as WiFi (re)connection does not work properly in release 2.4.0 (spent many hours on that)!! ## 0.1.3 2018-02-08 * button handling now uses library r89m/PushButton.h * added support for external PIR motion sensor, can be configured to enable display backlight on movement, pushes status to Domoticz and MQTT * lots of code improvements * removed unused libraries, added library overview in README.md, included only used libraries * added some initial description text in README.md * added heating switch device - send to domoticz/in * improved MQTT reconnect behavior. Retry every 15s if 1-3 connnects failed and just every 5 min if more to avoid blocking. ## 0.1.2 bugfixes ## 0.1.1 feature complete for now, first alpha ## 0.1.0 initial version, not yet feature complete