* Make compilation more flexible allowing to define in custom.h your own variation to devices and define four wifi networks
* Implement suggestion from Max Prokhorov, it's simpler and cleaner
* Change a #elif by #else
* Move ESPurna Core comment
* Update encoder
- import modified Encoder library
- customize minimum delta value
* minimum delta in header config
* fixup! minimum delta in header config
* fix dead code, actually use interrupts
* move static class methods to normal funcs, apply namespace
* drop hardcoded register use
- use peripheral api (see cores/esp8266/esp8266_peri.h)
- remove bitmask and register struct members
* add a note about changes
* fixup! add a note about changes
- store system crash counter and reset reason in rtcmem instead of eeprom
- store relay state mask in rtc in addition to the eeprom
- store relay state in eeprom only when boot mode requires it
- simplify relay state mask calculation / reading using std::bitset
- light state save and restore
- energy total save and restore
- remove optional RFRAW_SUPPORT
- enable module when RF_SUPPORT=1, optionally enable RCSwitch
- reorder ifdef checks to treat RFB_DIRECT and old RF_SUPPORT the same
- rename RF_PIN to RFB_RX_PIN
- depend on RF_SUPPORT instead of ITEAD_SONOFF_RFBRIDGE
- runtime TX & RX PIN setting
1. Add thermostat to the espurna_modules in progmem.h
2. Add thermostat to webui, gulp, html, js.
3. in general.h MQTT_USE_JSON returned to 0 by default and 1 if thermostat enabled.
- Heartbeat mode and interval configuration added to WebUI ADMIN page
- New option HEARTBEAT_REPEAT_STATUS: on device startup full heartbeat information and after HEARTBEAT_INTERVAL only STATUS report.
- Enhanced first heartbeat message - on device startup it will send heartbeat after ntpSynced will be true to get device time.
P.S. Code is tested. Web part is not compiled, and not tested. I hope it will work :)