mirror of https://github.com/arendst/Tasmota.git
v5.5.1b
5.5.1b * Extent max number of WS2812 pixels from 256 to 512 (#667) * Add OTA handling if server responds with no update available (#695) * Removed undocumented command FlashMode (#696) * Fix compile time error message due to increased message buffer size (#703)
This commit is contained in:
parent
48635f0906
commit
c88080b2bd
122
README.md
122
README.md
|
@ -1,61 +1,61 @@
|
||||||
## Sonoff-Tasmota
|
## Sonoff-Tasmota
|
||||||
Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE.
|
Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE.
|
||||||
|
|
||||||
Current version is **5.5.1a** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/master/sonoff/_releasenotes.ino) for change information.
|
Current version is **5.5.1b** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/master/sonoff/_releasenotes.ino) for change information.
|
||||||
|
|
||||||
### ATTENTION All versions
|
### ATTENTION All versions
|
||||||
|
|
||||||
Only Flash Mode DOUT is supported. Do not use Flash Mode DIO / QIO / QOUT as it might seem to brick your device.
|
Only Flash Mode DOUT is supported. Do not use Flash Mode DIO / QIO / QOUT as it might seem to brick your device.
|
||||||
|
|
||||||
See [Wiki](https://github.com/arendst/Sonoff-Tasmota/wiki/Theo's-Tasmota-Tips) for background information.
|
See [Wiki](https://github.com/arendst/Sonoff-Tasmota/wiki/Theo's-Tasmota-Tips) for background information.
|
||||||
|
|
||||||
### ATTENTION Version 5.x.x specific information
|
### ATTENTION Version 5.x.x specific information
|
||||||
|
|
||||||
This version uses a new linker script to free flash memory for future code additions. It moves the settings from Spiffs to Eeprom. If you compile your own firmware download the new linker to your IDE or Platformio base folder. See [Wiki > Prerequisite](https://github.com/arendst/Sonoff-Tasmota/wiki/Prerequisite).
|
This version uses a new linker script to free flash memory for future code additions. It moves the settings from Spiffs to Eeprom. If you compile your own firmware download the new linker to your IDE or Platformio base folder. See [Wiki > Prerequisite](https://github.com/arendst/Sonoff-Tasmota/wiki/Prerequisite).
|
||||||
|
|
||||||
Best practice to implement is:
|
Best practice to implement is:
|
||||||
- Open the webpage to your device
|
- Open the webpage to your device
|
||||||
- Perform option ``Backup Configuration``
|
- Perform option ``Backup Configuration``
|
||||||
- Upgrade new firmware using ``Firmware upgrade``
|
- Upgrade new firmware using ``Firmware upgrade``
|
||||||
- If configuration conversion fails keep the webpage open and perform ``Restore Configuration``
|
- If configuration conversion fails keep the webpage open and perform ``Restore Configuration``
|
||||||
|
|
||||||
You should now have a device with 32k more code memory to play with.
|
You should now have a device with 32k more code memory to play with.
|
||||||
|
|
||||||
### Version Information
|
### Version Information
|
||||||
|
|
||||||
- This version provides all (Sonoff) modules in one file and starts up with Sonoff Basic.
|
- This version provides all (Sonoff) modules in one file and starts up with Sonoff Basic.
|
||||||
- Once uploaded select module using the configuration webpage or the commands ```Modules``` and ```Module```.
|
- Once uploaded select module using the configuration webpage or the commands ```Modules``` and ```Module```.
|
||||||
- After reboot select config menu again or use commands ```GPIOs``` and ```GPIO``` to change GPIO with desired sensor.
|
- After reboot select config menu again or use commands ```GPIOs``` and ```GPIO``` to change GPIO with desired sensor.
|
||||||
|
|
||||||
<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonoffbasic.jpg" width="250" align="right" />
|
<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonoffbasic.jpg" width="250" align="right" />
|
||||||
|
|
||||||
See [Wiki](https://github.com/arendst/Sonoff-Tasmota/wiki) for more information.<br />
|
See [Wiki](https://github.com/arendst/Sonoff-Tasmota/wiki) for more information.<br />
|
||||||
See [Community](https://groups.google.com/d/forum/sonoffusers) for forum and more user experience.
|
See [Community](https://groups.google.com/d/forum/sonoffusers) for forum and more user experience.
|
||||||
|
|
||||||
The following devices are supported:
|
The following devices are supported:
|
||||||
- [iTead Sonoff Basic](http://sonoff.itead.cc/en/products/sonoff/sonoff-basic)
|
- [iTead Sonoff Basic](http://sonoff.itead.cc/en/products/sonoff/sonoff-basic)
|
||||||
- [iTead Sonoff RF](http://sonoff.itead.cc/en/products/sonoff/sonoff-rf)
|
- [iTead Sonoff RF](http://sonoff.itead.cc/en/products/sonoff/sonoff-rf)
|
||||||
- [iTead Sonoff SV](https://www.itead.cc/sonoff-sv.html)<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonoff_th.jpg" width="250" align="right" />
|
- [iTead Sonoff SV](https://www.itead.cc/sonoff-sv.html)<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonoff_th.jpg" width="250" align="right" />
|
||||||
- [iTead Sonoff TH10/TH16 with temperature sensor](http://sonoff.itead.cc/en/products/sonoff/sonoff-th)
|
- [iTead Sonoff TH10/TH16 with temperature sensor](http://sonoff.itead.cc/en/products/sonoff/sonoff-th)
|
||||||
- [iTead Sonoff Dual](http://sonoff.itead.cc/en/products/sonoff/sonoff-dual)
|
- [iTead Sonoff Dual](http://sonoff.itead.cc/en/products/sonoff/sonoff-dual)
|
||||||
- [iTead Sonoff Pow](http://sonoff.itead.cc/en/products/sonoff/sonoff-pow)
|
- [iTead Sonoff Pow](http://sonoff.itead.cc/en/products/sonoff/sonoff-pow)
|
||||||
- [iTead Sonoff 4CH](http://sonoff.itead.cc/en/products/sonoff/sonoff-4ch)
|
- [iTead Sonoff 4CH](http://sonoff.itead.cc/en/products/sonoff/sonoff-4ch)
|
||||||
- [iTead Sonoff 4CH Pro](http://sonoff.itead.cc/en/products/sonoff/sonoff-4ch-pro)
|
- [iTead Sonoff 4CH Pro](http://sonoff.itead.cc/en/products/sonoff/sonoff-4ch-pro)
|
||||||
- [iTead S20 Smart Socket](http://sonoff.itead.cc/en/products/residential/s20-socket)
|
- [iTead S20 Smart Socket](http://sonoff.itead.cc/en/products/residential/s20-socket)
|
||||||
- [iTead Slampher](http://sonoff.itead.cc/en/products/residential/slampher-rf)
|
- [iTead Slampher](http://sonoff.itead.cc/en/products/residential/slampher-rf)
|
||||||
- [iTead Sonoff Touch](http://sonoff.itead.cc/en/products/residential/sonoff-touch)
|
- [iTead Sonoff Touch](http://sonoff.itead.cc/en/products/residential/sonoff-touch)
|
||||||
- [iTead Sonoff SC](http://sonoff.itead.cc/en/products/residential/sonoff-sc)
|
- [iTead Sonoff SC](http://sonoff.itead.cc/en/products/residential/sonoff-sc)
|
||||||
- [iTead Sonoff Led](http://sonoff.itead.cc/en/products/appliances/sonoff-led)
|
- [iTead Sonoff Led](http://sonoff.itead.cc/en/products/appliances/sonoff-led)
|
||||||
- [iTead Sonoff BN-SZ01 Ceiling Led](http://sonoff.itead.cc/en/products/appliances/bn-sz01)
|
- [iTead Sonoff BN-SZ01 Ceiling Led](http://sonoff.itead.cc/en/products/appliances/bn-sz01)
|
||||||
- [iTead Sonoff RF Bridge 433](http://sonoff.itead.cc/en/products/appliances/sonoff-rf-bridge-433)
|
- [iTead Sonoff RF Bridge 433](http://sonoff.itead.cc/en/products/appliances/sonoff-rf-bridge-433)
|
||||||
- [iTead Sonoff Dev](https://www.itead.cc/sonoff-dev.html)
|
- [iTead Sonoff Dev](https://www.itead.cc/sonoff-dev.html)
|
||||||
- [iTead 1 Channel Switch 5V / 12V](https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html)
|
- [iTead 1 Channel Switch 5V / 12V](https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html)
|
||||||
- [iTead Motor Clockwise/Anticlockwise](https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html)
|
- [iTead Motor Clockwise/Anticlockwise](https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html)
|
||||||
- [Electrodragon IoT Relay Board](http://www.electrodragon.com/product/wifi-iot-relay-board-based-esp8266/)
|
- [Electrodragon IoT Relay Board](http://www.electrodragon.com/product/wifi-iot-relay-board-based-esp8266/)
|
||||||
|
|
||||||
Planned support:
|
Planned support:
|
||||||
- [iTead Sonoff T1](http://sonoff.itead.cc/en/products/residential/sonoff-t1)
|
- [iTead Sonoff T1](http://sonoff.itead.cc/en/products/residential/sonoff-t1)
|
||||||
- [iTead Sonoff B1](http://sonoff.itead.cc/en/products/residential/sonoff-b1)
|
- [iTead Sonoff B1](http://sonoff.itead.cc/en/products/residential/sonoff-b1)
|
||||||
|
|
||||||
<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonofftoucheu.jpg" height="280" align="left" />
|
<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonofftoucheu.jpg" height="280" align="left" />
|
||||||
<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonoff4ch.jpg" height="250" align="right" />
|
<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonoff4ch.jpg" height="250" align="right" />
|
||||||
|
|
|
@ -0,0 +1,900 @@
|
||||||
|
/* 5.5.1b
|
||||||
|
* Extent max number of WS2812 pixels from 256 to 512 (#667)
|
||||||
|
* Add OTA handling if server responds with no update available (#695)
|
||||||
|
* Removed undocumented command FlashMode (#696)
|
||||||
|
* Fix compile time error message due to increased message buffer size (#703)
|
||||||
|
*
|
||||||
|
* 5.5.1 20170805
|
||||||
|
* Fix Sonoff Rf Bridge issues
|
||||||
|
* Add Sonoff RF Bridge MQTT messages on received and learned RF signal
|
||||||
|
* Add command VoltRes 0|1 to select voltage resolution to 0.1 V (#654)
|
||||||
|
* Add averaging to Analog input (#686)
|
||||||
|
* Add Energy tele data on Sonoff Pow Threshold change (#688)
|
||||||
|
* Fix inconsistent property names in Messages (#690)
|
||||||
|
*
|
||||||
|
* 5.5.0 20170730
|
||||||
|
* Reduce code space by removing the following commands as they are replaced by SetOption alternatives:
|
||||||
|
* SaveState = SetOption0
|
||||||
|
* ButtonRestrict = SetOption1
|
||||||
|
* Units = SetOption2
|
||||||
|
* MQTT = SetOption3
|
||||||
|
* MQTTResponse = SetOption4
|
||||||
|
* TempUnit = SetOption8
|
||||||
|
* Smoothing WS2812 animation poll, invert fade speed and max allowed wakeup time down to 3000 seconds
|
||||||
|
* Fix initial button press detection
|
||||||
|
* Add support for Sonoff RF Bridge 433 using command RfKey
|
||||||
|
* Fix regression from 5.0.7 by increasing message buffer size from 360 to 368 to accomodate 4 x DS18x20 sensors (#637)
|
||||||
|
* Add GroupTopic to Topic test when using ButtonTopic/SwitchTopic to send either ON/OFF or TOGGLE (#642)
|
||||||
|
* Adjust HLW calibration limits to accomodate HuaFan device and add commands HlwPSet, HlwUSet and HlwISet (#654)
|
||||||
|
*
|
||||||
|
* 5.4.0 20170725
|
||||||
|
* Fix command reset regression introduced in 5.2.0
|
||||||
|
* Increase polling from 0.1 second to 0.05 second
|
||||||
|
* Add multipress to all buttons
|
||||||
|
* Fix button 1 double press behaviour on multi relay devices
|
||||||
|
* Add support for Hua Fan Smart Socket (#479)
|
||||||
|
* Add support for Sonoff 4ch Pro (#565)
|
||||||
|
* Add command SetOption13 1 to allow immediate action on single button press
|
||||||
|
* (disables multipress, hold and unrestricted commands) (#587)
|
||||||
|
*
|
||||||
|
* 5.3.0 20170715
|
||||||
|
* Major Hue rewrite which might introduce Alexa problems. If so, initiate an issue
|
||||||
|
* Add support for Sonoff Led and BN-SZ01 Ceiling Led brightness control to Hue
|
||||||
|
* Fix Sonoff Led Power, Dimmer and Color MQTT response (#176)
|
||||||
|
* Add commands Delay and Backlog to allow multiple commands at once separated by ";" (#593)
|
||||||
|
* Use default flashmode DOUT to solve restart hangs on esp8285 chips (#453, #598)
|
||||||
|
* Change Web console column width from 99 to 300 (#599)
|
||||||
|
*
|
||||||
|
* 5.2.4 20170703
|
||||||
|
* Removed flash mode update after selecting different module solving esp8285 related problems
|
||||||
|
* Add device type flag to sonoff_template.ino
|
||||||
|
* Change Sonoff Led Wakeup and add support for Sonoff BN-SZ01 Led (#567)
|
||||||
|
*
|
||||||
|
* 5.2.3 20170630
|
||||||
|
* Change Sonoff Led color conversion code
|
||||||
|
* Fix SetOption12 handling
|
||||||
|
* Simplify auto configuration upgrade
|
||||||
|
* Add option Upgrade <version_number> to only upgrade to any higher version (Old PR #213)
|
||||||
|
* Change FallbackTopic to cmnd/<MQTTClient>/<command> <parameter> bypassing FullTopic and Prefix (#538)
|
||||||
|
*
|
||||||
|
* 5.2.2 20170625
|
||||||
|
* Add configuration SaveAddress to Status 1 and Information Page
|
||||||
|
* Change Sonoff Led Color conversion from AtoH to strtol
|
||||||
|
* Fix possible wrong uploads due to configuration overwrites (#542)
|
||||||
|
* Fix payload negative numbers (#547)
|
||||||
|
*
|
||||||
|
* 5.2.1 20170622
|
||||||
|
* Fix Restore Configuration in case of lower version
|
||||||
|
* Revert auto configuration upgrade allowing easy upgrade which was removed in version 5.2.0
|
||||||
|
* Fix config auto upgrade from versions below version 4.1.1 (#530)
|
||||||
|
*
|
||||||
|
* 5.2.0 20170619
|
||||||
|
* Add command SetOption12 1 to disable newly released configuration flash rotate to reduce flash wear
|
||||||
|
* Fix command CounterDebounce by removing test for active GPIO (#524)
|
||||||
|
* Add command SetOption33 1..250 to allow user configure POW Max_Power_Retry count (#525)
|
||||||
|
*
|
||||||
|
* 5.1.7 20170616
|
||||||
|
* Prep removal of SetOptions alternatives
|
||||||
|
* Restore webpage upgrade error messages removed in 5.1.5
|
||||||
|
* Add hold button functionality to buttons 2 to 4
|
||||||
|
* Add command SetOption32 1..100 to set Key Hold Time from 0.1 seconds to 10 seconds (#200)
|
||||||
|
* Allow slashes in Topic, GroupTopic, ButtonTopic and SwitchTopic (#507)
|
||||||
|
* Changed webpage form actions from post to get and use relative path url (#434, #522)
|
||||||
|
*
|
||||||
|
* 5.1.6 20170606
|
||||||
|
* Shrink code
|
||||||
|
* Removed online configuration of Domoticz In and Domoticz Out MQTT strings
|
||||||
|
* Removed commands DomoticzInTopic and DomoticzOutTopic
|
||||||
|
* Add define KEY_HOLD_TIME to configure button hold threshold before sending MQTT Hold message
|
||||||
|
* Add command StateText4 to configure button MQTT Hold text (= MQTT_CMND_HOLD)
|
||||||
|
* Add command SetOption11 0|1 to swap pushbutton single and double press functionality (#200)
|
||||||
|
* Add command SwitchMode<x> 5 (PUSHBUTTONHOLD) and 6 (PUSHBUTTONHOLD_INV) (#489)
|
||||||
|
*
|
||||||
|
* 5.1.5 20170604
|
||||||
|
* Shrink code in preparation to ESP8266-Arduino 2.4.0-rc1
|
||||||
|
* Add effect parameter to HUE Device (#464)
|
||||||
|
*
|
||||||
|
* 5.1.4 20170601
|
||||||
|
* Removed pre-compiled versions from repository as they are available within the release
|
||||||
|
* Changed HUE Device type to color supporting version (#464)
|
||||||
|
* Fix compile error when BE_MINIMAL is selected (#467, #476)
|
||||||
|
* Add multiple compiled versions to release using updated Travis script and platformio.ini (#467)
|
||||||
|
*
|
||||||
|
* 5.1.3 20170520
|
||||||
|
* Add Domoticz Counter
|
||||||
|
*
|
||||||
|
* 5.1.2 20170519
|
||||||
|
* Fix Counter/Timer JSON message and update Counter/Timer on webpage
|
||||||
|
* Fix WS2812 Domoticz related regression issues
|
||||||
|
*
|
||||||
|
* 5.1.1 20170517
|
||||||
|
* Allow command FullTopic in group mode
|
||||||
|
* Prepare for more use of RTC memory
|
||||||
|
* Add independant WS2812 led string power control (#386, #390)
|
||||||
|
* Add command Counter<x> to control up to four GPIO falling edge interrupt counters or timers (#459)
|
||||||
|
* Add command CounterType<x> to select between pulse counting or pulse timing
|
||||||
|
* Add command CounterDebounce to select global counter debounce time in mSec
|
||||||
|
*
|
||||||
|
* 5.1.0 20170513
|
||||||
|
* Fix Offline/Removal of retained topic when FullTopic is changed
|
||||||
|
* Add FullTopic to MQTT Configuration and Information web pages
|
||||||
|
* Add license model GPLv3 (#188)
|
||||||
|
*
|
||||||
|
* 5.0.7 20170511
|
||||||
|
* Fix possible exception 28 on empty command
|
||||||
|
* Add command SetOption0 as replacement for SaveState
|
||||||
|
* Add command SetOption1 as replacement for ButtonRestrict
|
||||||
|
* Add command SetOption2 as replacement for Units
|
||||||
|
* Add command SetOption4 as replacement for MqttResponse
|
||||||
|
* Add command SetOption8 as replacement for TempUnit
|
||||||
|
* Add command SetOption10 On|Off to select between Offline or Removing previous retained topic (#417, #436)
|
||||||
|
*
|
||||||
|
* 5.0.6 20170510
|
||||||
|
* Remove hyphen in case of a single DHT sensor connected (#427)
|
||||||
|
* Add command MqttRetry <seconds> to change default MQTT reconnect retry timer from minimal 10 seconds (#429)
|
||||||
|
*
|
||||||
|
* 5.0.5 20170508
|
||||||
|
* Add command FullTopic with tokens %topic% (replaced by command Topic value) and
|
||||||
|
* %prefix% (replaced by command Prefix<x> values) for more flexible topic definitions (#244)
|
||||||
|
* See wiki > MQTT Features https://github.com/arendst/Sonoff-Tasmota/wiki/MQTT-Features for more information
|
||||||
|
*
|
||||||
|
* 5.0.4 20170505
|
||||||
|
* Add Sonoff Pow Energy Total up to 40 MWh
|
||||||
|
* Add command EnergyReset 1|2|3 to reset Energy counters (#406)
|
||||||
|
* Fix Domoticz Energy logging (#411)
|
||||||
|
* Add command PowerOnState 4 to keep relay always on and disabling all power control (#418)
|
||||||
|
*
|
||||||
|
* 5.0.3 20170504
|
||||||
|
* Add command SensorRetain on|off to enable retaining of mqtt message tele/sonoff/SENSOR (#74)
|
||||||
|
* Change WifiConfig timeout from 60 seconds to 180 seconds (#212)
|
||||||
|
* Change Sonoff Touch command Ledstate functionality by turning led on if power is off (#214)
|
||||||
|
* Add 4 seconds delay after power on before enabling button to workaround Wemos D1 mini RTS circuit (#380)
|
||||||
|
*
|
||||||
|
* 5.0.2 20170503
|
||||||
|
* Reset SaveData, SaveState and MqttResponse to default values due to rearranging settings
|
||||||
|
* Moved some settings to flag area
|
||||||
|
* Add command TempUnit Celsius|Fahrenheit for selecting Celsius or Fahrenheit (#347)
|
||||||
|
* Add command TempRes 0..3 for selecting Temperature Resolution (#347)
|
||||||
|
* Add command HumRes 0..3 for selecting Humidity Resolution (#347)
|
||||||
|
* Add command PressRes 0..3 for selecting Pressure Resolution (#347)
|
||||||
|
* Add command EnergyRes 0..5 for selecting Energy Resolution (#347)
|
||||||
|
* Add "TempUnit":"C|F" to sensor JSON output (#347)
|
||||||
|
* Add support for up to three DHT type sensors each using a different GPIO (#339, #404)
|
||||||
|
*
|
||||||
|
* 5.0.1 20170429
|
||||||
|
* Adjust Sonoff SC messages to prepare for display feature
|
||||||
|
* Move static data from RAM to Flash
|
||||||
|
* Fix PowerOnState for some devices not reporting "Power on" state (#284, #380, #383)
|
||||||
|
*
|
||||||
|
* 5.0.0 20170425
|
||||||
|
* Memory status message update
|
||||||
|
* Fix setting migration to better preserve settings during move (#382)
|
||||||
|
* Best practice is first doing a Backup Configuration before installing version 5.0.0
|
||||||
|
* Reset save count after setting move
|
||||||
|
* Start using new linker script without SPIFFS
|
||||||
|
*
|
||||||
|
* 4.2.0 20170424
|
||||||
|
* Prepare for SPIFFS removal by moving settings to EEPROM area
|
||||||
|
* Fix compilation error when webserver is disabled (#378)
|
||||||
|
*
|
||||||
|
* 4.1.3 20170410
|
||||||
|
* Add user configuarble GPIO to module S20 Socket and Slampher
|
||||||
|
* Add support for Sonoff SC (#112)
|
||||||
|
* Set PWM frequency from 1000Hz to 910Hz as used on iTead Sonoff Led firmware (#122)
|
||||||
|
* Set Sonoff Led unconfigured floating outputs to 0 to reduce exceptions due to power supply instabilities (#122)
|
||||||
|
* Add Access Point Mac Address to Status 11 and Telemetry (#329)
|
||||||
|
* Fix DS18B20 negative temperature readings (#334)
|
||||||
|
*
|
||||||
|
* 4.1.2 20170403
|
||||||
|
* Rename Unrecognised command to Unknown command
|
||||||
|
* Remove all command lists
|
||||||
|
* Remove command SmartConfig (superseded by WifiConfig)
|
||||||
|
* Fix boot loop when selecting module Sonoff 4CH or Sonoff Touch on non ESP8285 hardware
|
||||||
|
* Add optional support for Toshiba and Mitsubishi HVAC IR control (needs updated IRremote8266 library) (#83, #257)
|
||||||
|
* Add all configured switches to Domoticz Configuration web page (#305)
|
||||||
|
* Fix compile error when selecting WS2812 DMA (#313)
|
||||||
|
*
|
||||||
|
* 4.1.1 20170329
|
||||||
|
* Fix default Telemetry for command Prefix3
|
||||||
|
* Fix webserver Module parameters for disabled select
|
||||||
|
* Fix sensor status for enabled switches
|
||||||
|
* Remove Light as alternative for Power (save code space)
|
||||||
|
* Remove migration option from pre V3 (code cleanup)
|
||||||
|
* Remove unofficial SPIFFS support (code cleanup)
|
||||||
|
* Remove command list when unknown command is entered (save code space)
|
||||||
|
* Rename Status11 json from StatusPWR to unique StatusSTS
|
||||||
|
* Rename command Gateway to IPAddres2, Subnetmask to IPAddress3 and DnsServer to IPAddress4 (save code space)
|
||||||
|
* Add Command MqttResponse to select either command or RESULT topic as response (#258)
|
||||||
|
* Add command StateText1 to StateText3 to assign MQTT_STATUS_OFF, MQTT_STATUS_ON and MQTT_CMND_TOGGLE respectively (#286)
|
||||||
|
* Remove restart after IPAddress changes (#292)
|
||||||
|
* Add support for MAX31850 in xsns_ds18x20.ino (#295)
|
||||||
|
* Fix possible uptime update misses (#302)
|
||||||
|
*
|
||||||
|
* 4.1.0 20170325
|
||||||
|
* Change static IP addresses in user_config.h from list (using commas) to string (using dots)
|
||||||
|
* Unify display result of commands Modules, Module and Gpios
|
||||||
|
* Rewrite Module selection web page to bring size down from 18651 to 4319 bytes (!) (#234, #240)
|
||||||
|
* Add basic support for (Lixada) H801 RGBWW controller (#252)
|
||||||
|
* Add command Prefix1 to Prefix3 to assign SUB_PREFIX, PUB_PREFIX and PUB_PREFIX2 respectively (#255)
|
||||||
|
* Add static ip addresses to flash (#262)
|
||||||
|
* Add commands IpAddress, Gateway, Subnetmask and DnsServer to select static ip addresses (#273)
|
||||||
|
*
|
||||||
|
* 4.0.8 20170321
|
||||||
|
* Fix entering non-numeric webpassword
|
||||||
|
* Force selection between TLS or Webserver due to memory restraint (#240)
|
||||||
|
* Allow entering empty string using "0" for selected commands (#242)
|
||||||
|
* Fix exception when posting commands to web console containing % (#250)
|
||||||
|
*
|
||||||
|
* 4.0.7 20170319
|
||||||
|
* Increased Sonoff Led PWM frequency from 432 to 1000
|
||||||
|
* Fix possible watch dog reboot after changing module type on web page
|
||||||
|
* Fix reporting of GPIO usage from web page
|
||||||
|
* Fix Sonoff Led blank during firmware upgrade
|
||||||
|
* Fix Sonoff Led flicker and possible flash corruption by using latest Arduino-esp8266 versions
|
||||||
|
* of pwm core files included in sonoff library (#211)
|
||||||
|
* Add PWM output control with commands PWM1 to PWM5 using user selectable GPIOs (#211)
|
||||||
|
* Fix exceptions due to low values of commands HlwPCal (10000), HlwUCal (1000) and HlwICal (2500) (#223)
|
||||||
|
* Add Switch state to sensor status (#227, #233)
|
||||||
|
* Add user configuarble GPIO to module Sonoff Touch (#228)
|
||||||
|
* Add define WEB_PORT to user_config.h to change default web server port from 80 (#232)
|
||||||
|
* Fix failed Ota Firmware upgrade started from Web page (#235)
|
||||||
|
*
|
||||||
|
* 4.0.6 20170316
|
||||||
|
* Fix to better find device by Wifi hostname
|
||||||
|
* Fix compile error when some I2C devices are disabled
|
||||||
|
* Add (experimental) support for SHT1X emulating I2C (#97)
|
||||||
|
* Add ADC to ElectroDragon (#203)
|
||||||
|
* Add support for Sonoff Dev (#206)
|
||||||
|
*
|
||||||
|
* 4.0.5 20170314
|
||||||
|
* Add command Status 11 to show power status with Vcc if define USE_ADC_VCC is enabled (default)
|
||||||
|
* Add ADC input to Sonoff SV and Wemos D1 mini - Needs recompile with define USE_ADC_VCC disabled (#137)
|
||||||
|
* Add MQTT host:port to timeout message (#199)
|
||||||
|
*
|
||||||
|
* 4.0.4 20170312
|
||||||
|
* Add pulse timers for up to 4 relays (#106)
|
||||||
|
* Fix Sonoff Led power state when dimmer or color is 0 (#176)
|
||||||
|
* Add command NtpServer<x> to configure up to three NTP servers (#177)
|
||||||
|
* Delete module User Test as module Wemos D1 mini has same/more user configurable GPIO (#178)
|
||||||
|
* Add more user configurable GPIO to module ElectroDragon (#183)
|
||||||
|
*
|
||||||
|
* 4.0.3 20170309
|
||||||
|
* Renamed Module NodeMCU to WeMos D1 mini
|
||||||
|
* Add GPIO1 as user option to some modules
|
||||||
|
* Add Buttons, Relays and Leds to user configurable options (#159)
|
||||||
|
* Add description on Module parameters web page to some well known GPIOs (#107, #171)
|
||||||
|
*
|
||||||
|
* 4.0.2 20170308
|
||||||
|
* Restore correct seriallog level after Serial logging was disabled
|
||||||
|
* Add simple dimmer slider to Sonoff Led web page
|
||||||
|
* Reduced root webpage size by 31%
|
||||||
|
* Expand Status 2 with Build date/time and core version
|
||||||
|
* Fix webserver redirection when not in WifiManager mode (#156)
|
||||||
|
* Add command ButtonRestrict On/Off to restrict access to button hold and button multi press options above 2 (#161)
|
||||||
|
* Fix DS18S20 negative temperature readings (#165)
|
||||||
|
* Fix crlf compilation error due to bad syntax (#144, #167)
|
||||||
|
*
|
||||||
|
* 4.0.1 20170305
|
||||||
|
* Fix char default sizes and set MESSZ to 360 (#143)
|
||||||
|
* Fix SerialLog setting status
|
||||||
|
* Disable syslog when emulation is active
|
||||||
|
* Add DS18B20 web page display refresh
|
||||||
|
*
|
||||||
|
* 4.0.0 20170303
|
||||||
|
* Add define to remove config migration code for versions below 3.0 (See Wiki-Upgrade-Migration path)
|
||||||
|
* Free memory by switching from String to char[]
|
||||||
|
* Raised Sonoff Led PWM frequency from 200Hz to 432Hz in search of stability (hardware watchdog timeouts) (#122)
|
||||||
|
* Increase message size and suggested minimum MQTT_MAX_PACKET_SIZE to 512 (#114, #124)
|
||||||
|
* Remove runtime warning message regarding MQTT_MAX_PACKET_SIZE too small as it is now moved to compile time (#124)
|
||||||
|
* Fix possible panics with web console and http commands while UDP syslog is active (#127)
|
||||||
|
* Add optional static IP address (#129)
|
||||||
|
* Add define ENERGY_RESOLUTION in user_config.h to allow user control over precision (#136)
|
||||||
|
*
|
||||||
|
* 3.9.22 20170228
|
||||||
|
* Update web console
|
||||||
|
* Fix Status 4 JSON message
|
||||||
|
* Add Exception info during restart if available
|
||||||
|
* Add osWatch service to detect loop hangs that might happen during (OTA) upgrades
|
||||||
|
* Add WiOn support for relay and switch only (#82, #102)
|
||||||
|
* Allow for user specified relay count up to four in sonoff_template.h (#109)
|
||||||
|
* Add support for HTU21 compatible I2C sensors SI7013, SI7020 and SI7021 (#118)
|
||||||
|
* Add NodeMCU or Wemos configuration option (#119)
|
||||||
|
*
|
||||||
|
* 3.9.21 20170224
|
||||||
|
* Add ajax to web root page and web console (#79)
|
||||||
|
* Add commands SwitchMode1..4 and enable user switches 2, 3 and 4 (#84, #88)
|
||||||
|
* Fix MQTT upgrade when webserver is active
|
||||||
|
*
|
||||||
|
* 3.9.20 20170221
|
||||||
|
* Add minimal basic authentication to Web Admin mode (#87)
|
||||||
|
* Fix Hue and add HSB support (#89)
|
||||||
|
*
|
||||||
|
* 3.9.19 20170219
|
||||||
|
* Sonoff Led: Made GPIO04, 05 and 15 available for user
|
||||||
|
* Sonoff Led: Add commands Fade, Speed, WakupDuration, Wakeup and LedTable
|
||||||
|
*
|
||||||
|
* 3.9.18 20170218
|
||||||
|
* Fix ledstate 0 to turn off led
|
||||||
|
* Fix Sonoff Led dimmer range (#16)
|
||||||
|
* Change Sonoff Led command Dimmer to act on both cold and warm color
|
||||||
|
* Add Sonoff Led command Color CCWW where CCWW are hexadecimal values fro 00 - FF
|
||||||
|
* Reduce Sonoff Led flickering by disabling interrupts during flash save and disabling
|
||||||
|
* Led during OTA upgrade and Web upload (#16)
|
||||||
|
*
|
||||||
|
* 3.9.17 20170217
|
||||||
|
* Fix possible ArduinoJSON related memory fragmentation
|
||||||
|
* Changed console logging using less memory
|
||||||
|
* Add GPIO04 as user selectable for Sonoff Dual (#75)
|
||||||
|
*
|
||||||
|
* 3.9.16 20170214
|
||||||
|
* Update latching relay handler
|
||||||
|
* Add support for IR led using IRremoteESP8266 library (#59)
|
||||||
|
* Add Hue argument passing using ArduinoJSON library (#59)
|
||||||
|
*
|
||||||
|
* 3.9.15 20170213
|
||||||
|
* Change JSON float values from string to number according to http://json.org (#56)
|
||||||
|
* Add support for exs latched relay module https://ex-store.de/ESP8266-WiFi-Relay-V31 (#58)
|
||||||
|
* Add support for inverted relays
|
||||||
|
* Changed MAX_LOG_LINES from 70 to 60 to preserve memory
|
||||||
|
*
|
||||||
|
* 3.9.14 20170211
|
||||||
|
* Add False and True as alternatives for 0/Off and 1/On (#49)
|
||||||
|
* Fix Status10 JSON format (#52)
|
||||||
|
* Fix DS18x20 using OneWire library (#53)
|
||||||
|
*
|
||||||
|
* 3.9.13 20170210
|
||||||
|
* Add FlashChipMode to Status 4
|
||||||
|
* Removed redundant DHT2 option and code
|
||||||
|
* Add Sonoff SV GPIO pin 05 configuration (#40)
|
||||||
|
* Add configuration file backup and restore via web page
|
||||||
|
* Fix latency due to light_sleep mode even if sleep was set to zero (#50)
|
||||||
|
*
|
||||||
|
* 3.9.12 20170208
|
||||||
|
* Fix compile error when webserver is disabled (#30)
|
||||||
|
* Fix possible ESP8285 flash problem by updating Flash Chip Mode to DOUT during OTA upload
|
||||||
|
* Fix hostname issues by not allowing user entry of string formatting and removing from user_config.h (#36)
|
||||||
|
*
|
||||||
|
* 3.9.11 20170204
|
||||||
|
* Fix command I2Cscan
|
||||||
|
* Fix not allowed spaces in Topic, ButtonTopic and SwitchTopic
|
||||||
|
* Make all TELEMETRY, STATUS and COMMAND message topics unique (#4)
|
||||||
|
* Advertise command topic to be used by iobroker (#299)
|
||||||
|
* Fix butten (non)detection if no GPIO_KEY1 is defined (#13)
|
||||||
|
* Change WeMo serialnumber from 7 decimal chars to 8 hexadecimal chars (#18)
|
||||||
|
* Update web page with Build Date/Time, Emulation and mDNS Discovery and Advertise information (#21)
|
||||||
|
*
|
||||||
|
* 3.9.10 20170130
|
||||||
|
* Add WS2812 Color Type selection (RGB or GRB) to user_config.h (#7)
|
||||||
|
* Hue api changes to support HUE App(s) (#8)
|
||||||
|
*
|
||||||
|
* 3.9.9 20170130
|
||||||
|
* Add command status 10 showing sensor data
|
||||||
|
* Fix hlw status messages if hlw is disabled
|
||||||
|
*
|
||||||
|
* 3.9.8 20170130
|
||||||
|
* Remove GPIO07 and GPIO08 from user selectable (#5)
|
||||||
|
*
|
||||||
|
* 3.9.7 20170129
|
||||||
|
* Fix possible WS2812 exceptions when using emulation
|
||||||
|
* Add command Emulation to dynamic configure Belkin WeMo and Hue Bridge for Alexa
|
||||||
|
*
|
||||||
|
* 3.9.6 20170129
|
||||||
|
* Add dynamic sleep for WS2812 animation (#1)
|
||||||
|
*
|
||||||
|
* 3.9.5 20170128
|
||||||
|
* Fix error message in case of wrong Domoticz command
|
||||||
|
*
|
||||||
|
* 3.9.4 20170127
|
||||||
|
* Fix Sonoff Dual Relay switching (#287)
|
||||||
|
*
|
||||||
|
* 3.9.3 20170127
|
||||||
|
* Add confirmation before Restart via webpage
|
||||||
|
* Expand Domoticz Configuration webpage with Key, Switch and Sensor Index and
|
||||||
|
* add commands DomoticzSwitchIdx and DomoticzSensorIdx (#86) (#174) (#219)
|
||||||
|
* Fix default DHT11 sensor driver selection
|
||||||
|
* Fix LedPower status after button press (#279)
|
||||||
|
* Add command Sleep 0 - 250 mSec for optional light sleep mode to lower energy consumption (#272)
|
||||||
|
* (Expect overall button/key/switch misses and wrong values on Sonoff Pow)
|
||||||
|
* Add Hue brightness extension (#281)
|
||||||
|
* Fix Hue brightness and change to call by reference (#283)
|
||||||
|
*
|
||||||
|
* 3.9.2 20170124
|
||||||
|
* Add confirmation before Reset Configuration via webpage (#244)
|
||||||
|
* Add WS2812 features (see Wiki commands)
|
||||||
|
*
|
||||||
|
* 3.9.1 20170124
|
||||||
|
* Change PowerOnState function to only trigger when Power On (and not just restart) (#238)
|
||||||
|
* Move HLW interrupts back to RAM and make WS2812_DMA optional as it generates Exception on Pow (#264)
|
||||||
|
* Add charset=utf-8 to webpages (#266)
|
||||||
|
* Update Hue emulation (#268)
|
||||||
|
* Fix status module number
|
||||||
|
* Add support for domoticz Dimmer on Sonoff_Led and WS2812
|
||||||
|
* Fix possible ESP8285 flash problem by updating Flash Chip Mode to DOUT during web upload
|
||||||
|
*
|
||||||
|
* 3.2.6a 20170120
|
||||||
|
* Fix Sonoff Pow compile error (#255)
|
||||||
|
* Move HLW interrupts back to ROM (Needed for WS2812 DMA interrupts)
|
||||||
|
* Removed all IO config from user_config.h as this will be done by commands or webpage
|
||||||
|
* Removed MessageFormat and supports JSON only except POWER/LIGHT status
|
||||||
|
* Add command LedPower to control main led (#247)
|
||||||
|
* Add more FriendlyNames for Hue (#254)
|
||||||
|
* Add DMA support for WS2812 when using pin 3 while other pins work just as well in my case...
|
||||||
|
* Add HUE emulation for Alexa (#229)
|
||||||
|
* Add basic WS2812 support (#229)
|
||||||
|
* Fix Wemo when MQTT is disabled (#245)
|
||||||
|
* Revert ButtonTopic and change SwitchTopic1 - 4 to one SwitchTopic
|
||||||
|
* Rename MqttUnits to Units
|
||||||
|
* Add Mqtt command to enable/disable MQTT
|
||||||
|
*
|
||||||
|
* 3.2.2a 20170115
|
||||||
|
* Add dynamic (Sonoff) Module, user GPIO and sensor selection (one size fits (almost) all)
|
||||||
|
* Add support for Sonoff LED
|
||||||
|
* Add Seriallog disable after 600 seconds for Sonoff Dual and 4 Channel
|
||||||
|
* Add ButtonTopic2 - 4, SwitchTopic1 - 4 and SwitchRetain
|
||||||
|
*
|
||||||
|
* 3.2.2 20170113
|
||||||
|
* Fix PowerOnState 2 functionality after re-applying power (#230)
|
||||||
|
*
|
||||||
|
* 3.2.1 20170113
|
||||||
|
* Fix some failed command decoding (#228)
|
||||||
|
* Removed passwords from status messages (#216)
|
||||||
|
*
|
||||||
|
* 3.2.0 20170111
|
||||||
|
* Add I2C BH1750 sensor (#222)
|
||||||
|
* Sensor rewrite preparing for online selection
|
||||||
|
*
|
||||||
|
* 3.1.16 20170109
|
||||||
|
* Fix Domoticz possible error condition
|
||||||
|
* Remove Wifi password from connection message (#216)
|
||||||
|
* Add Configure Other menu item to web page (#209)
|
||||||
|
* Add command FriendlyName, field Friendly Name and define FRIENDLY_NAME to be used by Alexa
|
||||||
|
* eliminating current use of MQTT_CLIENT_ID (#209)
|
||||||
|
* Add friendlyname to webpage replacing former hostname
|
||||||
|
*
|
||||||
|
* 3.1.15 20170108
|
||||||
|
* Fix Domoticz send key regression with Toggle command
|
||||||
|
*
|
||||||
|
* 3.1.14 20170107
|
||||||
|
* Add support for command TOGGLE (define MQTT_CMND_TOGGLE) when ButtonTopic is in use and not equal to Topic (#207)
|
||||||
|
*
|
||||||
|
* 3.1.13 20170107
|
||||||
|
* Fix web console command input when SUB_PREFIX contains '/' (#152)
|
||||||
|
* Add command response to web command (#200)
|
||||||
|
* Add option to disable MQTT as define USE_MQTT in user_config.h (#200)
|
||||||
|
*
|
||||||
|
* 3.1.12 20170106
|
||||||
|
* Add OTA retry to solve possible HTTP transient errors (#204)
|
||||||
|
* Fix MQTT host discovery
|
||||||
|
*
|
||||||
|
* 3.1.11 20170105
|
||||||
|
* Add mDNS to advertise webserver as <hostname>.local/
|
||||||
|
*
|
||||||
|
* 3.1.10 20170105
|
||||||
|
* Fix ButtonTopic when SUB_PREFIX = PUB_PREFIX
|
||||||
|
* Add workaround for possible MQTT queueing when SUB_PREFIX = PUB_PREFIX
|
||||||
|
* Add optional MQTT host discovery using define USE_DISCOVERY in user_config.h (#115)
|
||||||
|
*
|
||||||
|
* 3.1.9 20170104
|
||||||
|
* Fix Power Blink start position (toggled)
|
||||||
|
* Change PulseTime increments: 1 .. 111 in 0.1 sec (max 11 seconds) and 112 .. 64900 in seconds (= 12 seconds until 18 hours) (#188)
|
||||||
|
* Add support for SUB_PREFIX = PUB_PREFIX (#190)
|
||||||
|
*
|
||||||
|
* 3.1.8 20170103
|
||||||
|
* Add retain flag to LWT offline and only send "tele/sonoff/LWT Offline" (#179)
|
||||||
|
* Change retained LWT Online message to only send "tele/sonoff/LWT Online"
|
||||||
|
*
|
||||||
|
* 3.1.7 20161231
|
||||||
|
* Add retained message LWT Online when sonoff makes MQTT connection (#179)
|
||||||
|
*
|
||||||
|
* 3.1.6 20161230
|
||||||
|
* Add blinking using commands BlinkTime, BlinkCount and Power Blink|3|BlinkOff|4 (#165)
|
||||||
|
*
|
||||||
|
* 3.1.5 20161228
|
||||||
|
* Fix serial space command exception (28)
|
||||||
|
*
|
||||||
|
* 3.1.4 20161227
|
||||||
|
* Fix MQTT subscribe regression exception (3) (#162)
|
||||||
|
* Fix serial empty command exception (28)
|
||||||
|
*
|
||||||
|
* 3.1.3 20161225
|
||||||
|
* Extent Domoticz configuration webpage with optional indices (#153)
|
||||||
|
* Fix multi relay legacy tele message from tele/sonoff/2/POWER to tele/sonoff/POWER2
|
||||||
|
* Add support for iTead Motor Clockwise/Anticlockwise
|
||||||
|
*
|
||||||
|
* 3.1.2 20161224
|
||||||
|
* Extent command PowerOnState with toggle at power on (option 2 is now option 3!) (#156)
|
||||||
|
*
|
||||||
|
* 3.1.1 20161223
|
||||||
|
* Add support for Sonoff Touch and Sonoff 4CH (#40)
|
||||||
|
* Update DomoticzIdx and DomoticzKeyIdx with relay/key index (DomoticzIdx1/DomoticzKeyIdx1)
|
||||||
|
* Add command PowerOnState to control relay(s) at power on (#154)
|
||||||
|
*
|
||||||
|
* 3.1.0 20161221
|
||||||
|
* Add Sonoff Pow measurement smoothing
|
||||||
|
* Fix serial command topic preamble error (#151)
|
||||||
|
* Fix 2.x to 3.x migration inconsistencies (#146)
|
||||||
|
*
|
||||||
|
* 3.0.9 20161218
|
||||||
|
* Add Sonoff Pow voltage reading when relay is on but no load present (#123)
|
||||||
|
*
|
||||||
|
* 3.0.8 20161218
|
||||||
|
* Add temperature conversion to Fahrenheit as option in user_config.h (TEMP_CONVERSION) (#145)
|
||||||
|
*
|
||||||
|
* 3.0.7 20161217
|
||||||
|
* Add user_config_override.h to be used by user to override some defaults in user_config.h (#58)
|
||||||
|
* Fix Sonoff Pow low power (down to 4W) intermittent measurements (#123)
|
||||||
|
*
|
||||||
|
* 3.0.6 20161217
|
||||||
|
* Fix MQTT_CLIENT_ID starting with % sign as in "%06X" (#142)
|
||||||
|
* Add auto power off after PulseTime * 0.1 Sec to relay 1 (#134)
|
||||||
|
*
|
||||||
|
* 3.0.5 20161215
|
||||||
|
* Add more control over LED with command LedState options (#136, #143)
|
||||||
|
* LED_OFF (0), LED_POWER (1), LED_MQTTSUB (2), LED_POWER_MQTTSUB (3), LED_MQTTPUB (4), LED_POWER_MQTTPUB (5), LED_MQTT (6), LED_POWER_MQTT (7)
|
||||||
|
* Add option WIFI_RETRY (4) to command WifiConfig to allow connection retry to other AP without restart (#73)
|
||||||
|
*
|
||||||
|
* 3.0.4 20161211
|
||||||
|
* Fix intermittent Domoticz update misses (#133)
|
||||||
|
*
|
||||||
|
* 3.0.3 20161210
|
||||||
|
* Fix compiler warnings (#132)
|
||||||
|
* Remove redundant code
|
||||||
|
* Fix Domoticz pushbutton support
|
||||||
|
*
|
||||||
|
* 3.0.2 20161209
|
||||||
|
* Add pushbutton to SwitchMode (#130)
|
||||||
|
*
|
||||||
|
* 3.0.1 20161209
|
||||||
|
* Fix initial config
|
||||||
|
*
|
||||||
|
* 3.0.0 20161208
|
||||||
|
* Migrate and clean-up flash layout
|
||||||
|
* Settings from version 2.x are saved but settings from version 3.x can not be used with version 2.x
|
||||||
|
* Change SEND_TELEMETRY_RSSI to SEND_TELEMETRY_WIFI and add AP and SSID to telemetry
|
||||||
|
* Split long JSON messages
|
||||||
|
* Fix inconsistent status messages
|
||||||
|
* Fix all status messages to return JSON if enabled
|
||||||
|
* Remove relay index in cmnd/sonoff/<relay>/POWER now changed
|
||||||
|
* to cmnd/sonoff/POWER for single relay units
|
||||||
|
* and cmnd/sonoff/POWER<relay> for multi relay units like Sonoff dual
|
||||||
|
* Add retain option to Power/Light status controlled by command PowerRetain On|Off (#126)
|
||||||
|
*
|
||||||
|
* 2.1.2 20161204
|
||||||
|
* Add support for second wifi AP (#73)
|
||||||
|
* Update command WifiConfig
|
||||||
|
* Fix possible WifiManager hang
|
||||||
|
*
|
||||||
|
* 2.1.1a 20161203
|
||||||
|
* Fix scan for wifi networks if WeMo is enabled
|
||||||
|
* Fix syslog setting using web page
|
||||||
|
*
|
||||||
|
* 2.1.1 20161202
|
||||||
|
* Add support for ElectroDragon second relay and button (only toggle with optional ButtonTopic) (#110)
|
||||||
|
*
|
||||||
|
* 2.1.0 20161202
|
||||||
|
* Add optional EXPERIMENTAL TLS to MQTT (#49)
|
||||||
|
* Fix MQTT payload handling (#111)
|
||||||
|
* Optimzed WeMo code
|
||||||
|
*
|
||||||
|
* 2.0.21a 20161201
|
||||||
|
* Fix WeMo PowerPlug emulation
|
||||||
|
*
|
||||||
|
* 2.0.21 20161130
|
||||||
|
* Add Belkin WeMo PowerPlug emulation enabled with USE_WEMO_EMULATION in user_config.h (Heiko Krupp) (#105, #109)
|
||||||
|
*
|
||||||
|
* 2.0.20 20161130
|
||||||
|
* Relax MQTTClient naming but only allows hexadecimal uppercase numbers (#107)
|
||||||
|
* Add I2C support with command I2CScan
|
||||||
|
* Add I2C sensor driver for HTU21 as alternate sensor using TH10/16 connectors (Heiko Krupp) (#105)
|
||||||
|
* Add I2C sensor driver for BMP085/BMP180/BMP280/BME280 as alternate sensor using TH10/16 connectors
|
||||||
|
*
|
||||||
|
* 2.0.19a 20161127
|
||||||
|
* Add support for ButtonTopic and ButtonRetain to wall switch function
|
||||||
|
* Add pullup to SWITCH_PIN and command SwitchMode to syntax
|
||||||
|
*
|
||||||
|
* 2.0.18 20161126
|
||||||
|
* Add SUB_PREFIX multi level support allowing 'cmnd' or 'cmnd/level2/level3'
|
||||||
|
* Add wall switch function to GPIO14 and command SwitchMode (Alex Scott) (#103)
|
||||||
|
*
|
||||||
|
* 2.0.17 20161123
|
||||||
|
* Calibrate HLWPCAL from 12345 to 12530
|
||||||
|
* Add alternative sensor driver DHT2 using Adafruit DHT library
|
||||||
|
* Add define MESSAGE_FORMAT to user_config.h
|
||||||
|
* Throttle console messages
|
||||||
|
* Shorten JSON messages
|
||||||
|
* Fix possible Panic
|
||||||
|
* Fix User mode webserver security
|
||||||
|
*
|
||||||
|
* 2.0.16 20161118
|
||||||
|
* Add alternative sensor driver DS18x20 using OneWire library (#95)
|
||||||
|
* Change sensor MQTT message from tele/sonoff/TEMPERATURE to tele/sonoff/DHT/TEMPERATURE or
|
||||||
|
* tele/sonoff/DS18B20/TEMPERATURE or tele/sonoff/DS18x20/1/TEMPERATURE
|
||||||
|
* Add sensors to root webpage and auto refresh every 4 seconds (#92)
|
||||||
|
* Add optional JSON messageformat to all telemetry data
|
||||||
|
* Enforce minimum TelePeriod to be 10 seconds
|
||||||
|
* Fix Energy Yesterday reset after restart
|
||||||
|
* Add Energy Today restore after controlled restart
|
||||||
|
*
|
||||||
|
* 2.0.15 20161116
|
||||||
|
* Change TODAY_POWER and PERIOD_POWER to TODAY_ENERGY and PERIOD_ENERGY
|
||||||
|
* Fix serial regression
|
||||||
|
* Fix syslog hangs when loghost is unavailable
|
||||||
|
*
|
||||||
|
* 2.0.14 20161115
|
||||||
|
* Add HLW threshold delay
|
||||||
|
* Fix HLW intermittent current deviation
|
||||||
|
* Fix button functionality during wificonfig
|
||||||
|
* Add CRC check to DS18B20 sensor (#88)
|
||||||
|
*
|
||||||
|
* 2.0.13 20161113
|
||||||
|
* Add additional upload error code descriptions
|
||||||
|
* Add PlatformIO support (#80)
|
||||||
|
*
|
||||||
|
* 2.0.12 20161113
|
||||||
|
* Fix Serial and Web response regression when no MQTT connection available
|
||||||
|
* Fix Sonoff Dual power telemetric data for second relay
|
||||||
|
* Removed MQTT password from Information web page
|
||||||
|
* Hide MQTT password from Configure MQTT web page
|
||||||
|
*
|
||||||
|
* 2.0.11 20161111
|
||||||
|
* Rewrite button and web toggle code
|
||||||
|
* Fix NTP sync
|
||||||
|
* Add HLW calibration commands HLWPCAL, HLWUCAL and HLWICAL (need define USE_POWERCALIBRATION)
|
||||||
|
* Fix power threshold tests
|
||||||
|
*
|
||||||
|
* 2.0.10 20161109
|
||||||
|
* Add additional Domoticz define (#63)
|
||||||
|
* Add defines MQTT_STATUS_ON and MQTT_STATUS_OFF in user_config.h to select status On/Off string
|
||||||
|
* Fix status response differences (#65)
|
||||||
|
* Fix divide by zero exception (#70)
|
||||||
|
* Fix syslog loop exception
|
||||||
|
*
|
||||||
|
* 2.0.9 20161108
|
||||||
|
* clarify MODULE in user_config.h
|
||||||
|
* Fix hlw false values
|
||||||
|
*
|
||||||
|
* 2.0.8 20161108
|
||||||
|
* Add initial status after power on
|
||||||
|
* Seperate driver files
|
||||||
|
* Fix hlw code and calibrate Pow
|
||||||
|
* Move user config defines to user_config.h (#61)
|
||||||
|
*
|
||||||
|
* 2.0.7 20161030
|
||||||
|
* Make Ticker mandatory
|
||||||
|
* Add Domoticz support (Increase MQTT_MAX_PACKET_SIZE to 400) (#54)
|
||||||
|
* Add command MessageFormat 0|1 to select either legacy or JSON output
|
||||||
|
*
|
||||||
|
* 2.0.6 20161024
|
||||||
|
* Add Sonoff Pow power factor
|
||||||
|
* Initial support for up to four relays using iTEAD PSB (4Channel)
|
||||||
|
* - Currently only supports one button (All buttons behave the same)
|
||||||
|
* - Use command MODEL 4 to select four relay option
|
||||||
|
* (After first power on it will support 2 relays like Sonoff Dual)
|
||||||
|
* Fix ledstate
|
||||||
|
* Add command Status 9 to display Sonoff Pow thresholds
|
||||||
|
* Add commands PowerLow, PowerHigh, VoltageLow, VoltageHigh, CurrentLow and CurrentHigh for use
|
||||||
|
* with Sonoff Pow thresholds
|
||||||
|
*
|
||||||
|
* 2.0.5 20161018
|
||||||
|
* Add updates to user_config.h - moved SEND_TELEMETRY_DS18B20 and SEND_TELEMETRY_DHT to module area.
|
||||||
|
* As Sonoff TH10/16 does not have the logic installed for GPIO04 You'll have to select ONE of both
|
||||||
|
* Add Sonoff Pow support (experimental until Pow tested)
|
||||||
|
* Add command Status 8 to display Sonoff Pow energy values
|
||||||
|
* Add command MqttUnits On|Off to add units to values
|
||||||
|
* Change web main page header character size
|
||||||
|
* Change On/Off to ON/OFF status messages to satisfy openHAB
|
||||||
|
* Change TEMP to TEMPERATURE and HUM to HUMIDITY
|
||||||
|
*
|
||||||
|
* 2.0.4 20161009
|
||||||
|
* Add MQTT_BUTTON_RETAIN, SAVE_DATA and SAVE_STATE defines to user_config.h (#35)
|
||||||
|
* Update ButtonRetain to remove retained message(s) from broker when turned off
|
||||||
|
* Add Retain for second relay on Sonoff Dual
|
||||||
|
* Provide power status messages with device topic index if requested
|
||||||
|
*
|
||||||
|
* 2.0.3 20161008
|
||||||
|
* Update wifi initialization
|
||||||
|
* Add command BUTTONRETAIN for optional MQTT retain on button press (#35)
|
||||||
|
* Add command SAVESTATE to disable power state save. May be used with MQTT retain
|
||||||
|
*
|
||||||
|
* 2.0.2 20161006
|
||||||
|
* Fix wifi issue 2186
|
||||||
|
*
|
||||||
|
* 2.0.1 20161002
|
||||||
|
* Fix button press
|
||||||
|
*
|
||||||
|
* 2.0.0 20161002
|
||||||
|
* Update Sonoff TH10/16 sensor pins (My TH10 only has GPIO14 connected)
|
||||||
|
* Add full support for Sonoff dual
|
||||||
|
*
|
||||||
|
* 1.0.35 20160929
|
||||||
|
* Add more lines to console
|
||||||
|
* Add timeout and disable MQTT on web upload
|
||||||
|
* Add command SAVEDATA to control parameter save (for flash wear afficionados) (#30)
|
||||||
|
*
|
||||||
|
* 1.0.34 20160926
|
||||||
|
* Fix button press six and seven
|
||||||
|
* Add more information to webserver
|
||||||
|
*
|
||||||
|
* 1.0.33 20160915
|
||||||
|
* Better WPS error message
|
||||||
|
* Separate webserver code from support.ino into webserver.ino
|
||||||
|
* Fix webserver User by removing unwanted restart option
|
||||||
|
*
|
||||||
|
* 1.0.32 20160913
|
||||||
|
* Add Wifi Protected Setup (WPS) as third option for initial config
|
||||||
|
* Add command WIFICONFIG replacing deprecated command SMARTCONFIG
|
||||||
|
* Add option WIFICONFIG 3 to start WPSconfig
|
||||||
|
* Add option WIFICONFIG 0 to start saved Wifi config tool (WPSconfig, Smartconfig or Wifimanager)
|
||||||
|
* Change button behaviour - See Wiki
|
||||||
|
*
|
||||||
|
* 1.0.31 20160907
|
||||||
|
* Fix DS18B20 misread if teleperiod = 2
|
||||||
|
* Tuned sensor code
|
||||||
|
* Updated prefered ElectroDragon connection to Relay 1 and Button 1
|
||||||
|
* Moved SONOFF and ELECTRO_DRAGON port config to user_config.h
|
||||||
|
*
|
||||||
|
* 1.0.30 20160902
|
||||||
|
* Fix command TELEPERIOD 0
|
||||||
|
* Add ESP- tag to UDP log message for easy rsyslogd filtering
|
||||||
|
* Add ElectroDragon (Relay 2 only) functionality. Select with #define MODULE ELECTRO_DRAGON
|
||||||
|
* Add ? as null message alternative
|
||||||
|
* Add DHT temperature and humidity telemetry support. Enable with #define SEND_TELEMETRY_DHT
|
||||||
|
* Add DS18B20 temperature telemetry support. Enable with #define SEND_TELEMETRY_DS18B20
|
||||||
|
* Restrict HOSTNAME, MQTTCLIENT, TOPIC and BUTTONTOPIC in topic mode only
|
||||||
|
*
|
||||||
|
* 1.0.29 20160831
|
||||||
|
* Allow UPGRADE, OTAURL, RESTART, RESET, MQTTHOST, MQTTPORT, MQTTUSER, MQTTPASSWORD and WEBSERVER also in group mode
|
||||||
|
*
|
||||||
|
* 1.0.28 20160831
|
||||||
|
* Add webserver state to status 5
|
||||||
|
* Add optional PUB_PREFIX2 (tele) for telemetry usage
|
||||||
|
* Add command TELEPERIOD
|
||||||
|
* Fix syntax message
|
||||||
|
* Change memory status display
|
||||||
|
*
|
||||||
|
* 1.0.27 20160831
|
||||||
|
* Add sketch flash size
|
||||||
|
* Add console to webserver
|
||||||
|
* Add command weblog
|
||||||
|
* Change WifiManager web pages to minimal
|
||||||
|
* Change display default hostname and MQTT client id in webserver
|
||||||
|
* Change HTTP command interface to http://sonoff-1234/cm?cmnd=light 2
|
||||||
|
* Change HEARTBEAT to UPTIME
|
||||||
|
*
|
||||||
|
* 1.0.26 20160829
|
||||||
|
* Add define USE_WEBSERVER to disable web server code in source
|
||||||
|
* Add file upload as alternative for ota upload to webserver
|
||||||
|
* Add information to webserver
|
||||||
|
* Add command hostname
|
||||||
|
* Add command logport
|
||||||
|
* Change HTTP command interface to http://sonoff-1234/cmd?cmnd=light 2
|
||||||
|
* Change button behaviour with regards to Smartconfig and OTA upload. See README.md
|
||||||
|
* Enforce default hostname to either "%s-%04d" or user defined without any %
|
||||||
|
* Enforce default mqtt client id to either "DVES_%06X" or user defined without any %
|
||||||
|
*
|
||||||
|
* 1.0.25 20160822
|
||||||
|
* Remove config system halts to keep ota available
|
||||||
|
*
|
||||||
|
* 1.0.24 20160821
|
||||||
|
* Add test for MQTT_SUBTOPIC
|
||||||
|
* Change log range to LOG_LEVEL_ALL
|
||||||
|
* Change MQTT introduction messages
|
||||||
|
* Moved MQTT_MAX_PACKET_SIZE warning message to introduction messages
|
||||||
|
*
|
||||||
|
* 1.0.23 20160821
|
||||||
|
* Add option USE_SPIFFS to move config from flash to spiffs
|
||||||
|
* Add webserver with options 0 (off), 1 (user) and 2 (admin)
|
||||||
|
* Add HTTP command interface (http://sonoff-1234/c?cmnd=light 2)
|
||||||
|
* Add wifimanager countdown counter
|
||||||
|
* Add command line webpage
|
||||||
|
* Add relay control to wifimanager
|
||||||
|
* Add restart option 99 to force restart
|
||||||
|
* Fix wifi hostname
|
||||||
|
* Fix NETBIOS hostname problem by reducing default hostname length
|
||||||
|
* Fix possible exception if WIFI_HOSTNAME is changed
|
||||||
|
* Fix upgrade messages
|
||||||
|
* Reduce memory use by redesigning config routines
|
||||||
|
* Split syntax message
|
||||||
|
* Rename define SERIAL_IO to USE_SERIAL
|
||||||
|
*
|
||||||
|
* 1.0.22 20160814
|
||||||
|
* Add all MQTT parameters for configuration
|
||||||
|
* Add wifimanager to configure Wifi and MQTT via web server
|
||||||
|
* Change NTP time handling
|
||||||
|
* Fix Smartconfig parameter buffer overflow
|
||||||
|
* Fix PlatformIO warnings
|
||||||
|
*
|
||||||
|
* 1.0.21 20160808
|
||||||
|
* Remove semaphore as subscription flooding (more than 15 subscriptions per second) is managed by SDK (LmacRxBlk:1)
|
||||||
|
* Add optional RTC interrupt (define USE_TICKER) to keep RTC synced during subscription flooding
|
||||||
|
* Remove heartbeatflag
|
||||||
|
*
|
||||||
|
* 1.0.20 20160805
|
||||||
|
* Add semaphore to handle out of memory when too many subscriptions requested
|
||||||
|
* Use Daylight Saving (DST) parameters from user_config.h when timezone = 99
|
||||||
|
* Add status 7 option displaying RTC information
|
||||||
|
* Add ledstate to status 0
|
||||||
|
*
|
||||||
|
* 1.0.19 20160803
|
||||||
|
* Fix possible MQTT_CLIENT_ID induced Exception(28)
|
||||||
|
*
|
||||||
|
* 1.0.18 20160803
|
||||||
|
* Moved Cfg_Default
|
||||||
|
* Fix negative data handling
|
||||||
|
* Remove MQTT information from status 1 and add labels to status 1
|
||||||
|
* Add mac address to status 5
|
||||||
|
* Add MQTT ClientId, UserId and Password to status 6
|
||||||
|
*
|
||||||
|
* 1.0.17 20160731
|
||||||
|
* Better variable range checking
|
||||||
|
* Change ambiguous connection messages
|
||||||
|
* Add timestamp to serial message
|
||||||
|
*
|
||||||
|
* 1.0.16 20160729
|
||||||
|
* Moved wifi, rtc, syslog and config to support.ino
|
||||||
|
* Fixed button action when buttontopic is used. Introduced with 1.0.15
|
||||||
|
* Better buffer overflow checks (strlcpy)
|
||||||
|
*
|
||||||
|
* 1.0.15 20160728
|
||||||
|
* Removed pubsubclient config changes from sonoff.ino as it doesn't work
|
||||||
|
* reapply MQTT_MAX_PACKET_SIZE 256 and MQTT_KEEPALIVE 120 to PubSubClient.h
|
||||||
|
* Add status 0 option displaying all status messages
|
||||||
|
* Change MQTT_MAX_PACKET_SIZE from 1024 to 256
|
||||||
|
* Add buffer overflow checks (snprintf and strncpy)
|
||||||
|
* Implemented common string sizes
|
||||||
|
*
|
||||||
|
* 1.0.14 20160722
|
||||||
|
* Seperate user config from sonoff.ino to user_config.h (pucebaboon)
|
||||||
|
* Change defaults from sidnas2 to domus1
|
||||||
|
* Add MQTT status message as status 6 (pucebaboon)
|
||||||
|
* Add status type to message (pucebaboon)
|
||||||
|
* Add pubsubclient config changes to sonoff.ino (pucebaboon)
|
||||||
|
*
|
||||||
|
* 1.0.13 20160702
|
||||||
|
* Add Ledstate 1 option to show power state on led
|
||||||
|
*
|
||||||
|
* 1.0.12 20160529
|
||||||
|
* Allow disable of button topic using "0"
|
||||||
|
*
|
||||||
|
* 1.0.11 20160524
|
||||||
|
* Provide button response if MQTT connection lost
|
||||||
|
*
|
||||||
|
* 1.0.10 20160520
|
||||||
|
* Add optional button topic to assist external MQTT clients
|
||||||
|
* Change version notation
|
||||||
|
* Reset default values
|
||||||
|
*
|
||||||
|
* 1.0.9 20160503
|
||||||
|
* Add more blinks
|
||||||
|
* Add reset 2 option erasing flash
|
||||||
|
* Add status 5 option displaying network info
|
||||||
|
* Add syslog check for Wifi connection
|
||||||
|
* Resize mqtt_publish log array
|
||||||
|
* Change Wifi smartconfig active from 100 to 60 seconds
|
||||||
|
* Update Wifi initialization
|
||||||
|
*
|
||||||
|
* 1.0.8 20160430
|
||||||
|
* Remove use of Wifi config data from SDK
|
||||||
|
* Add status 3 (syslog info) and status 4 (flash info)
|
||||||
|
* Add restart option to button (5 quick presses)
|
||||||
|
*
|
||||||
|
* 1.0.7 20160420
|
||||||
|
* Add UDP syslog support
|
||||||
|
* Change HOST command to MQTTHOST command
|
||||||
|
* Add commands SYSLOG, SERIALLOG and LOGHOST
|
||||||
|
* Change hostname to lower case to distinguise between open-sdk version
|
||||||
|
* Add support for ESP-12F used in my modified wkaku power socket switch
|
||||||
|
* Fix timezone command
|
||||||
|
* Add RTC month names for future use
|
||||||
|
* Modify button code
|
||||||
|
* Remove initialization errors by better use of MQTT loop
|
||||||
|
*
|
||||||
|
* 1.0.6 20160406
|
||||||
|
* Removed Wifi AP mode (#1)
|
||||||
|
* Add test for Arduino IDE version >= 1.6.8
|
||||||
|
* Fix RTC time sync code
|
||||||
|
*
|
||||||
|
* 1.0.5 20160310
|
||||||
|
* Initial public release
|
||||||
|
* Show debug info by selecting option from IDE Tools Debug port: Serial
|
||||||
|
*/
|
|
@ -0,0 +1,722 @@
|
||||||
|
/*
|
||||||
|
settings.ino - user settings for Sonoff-Tasmota
|
||||||
|
|
||||||
|
Copyright (C) 2017 Theo Arends
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const uint8_t sfb_codeDefault[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 };
|
||||||
|
|
||||||
|
/*********************************************************************************************\
|
||||||
|
* RTC memory
|
||||||
|
\*********************************************************************************************/
|
||||||
|
|
||||||
|
#define RTC_MEM_VALID 0xA55A
|
||||||
|
|
||||||
|
uint32_t _rtcHash = 0;
|
||||||
|
|
||||||
|
uint32_t getRtcHash()
|
||||||
|
{
|
||||||
|
uint32_t hash = 0;
|
||||||
|
uint8_t *bytes = (uint8_t*)&rtcMem;
|
||||||
|
|
||||||
|
for (uint16_t i = 0; i < sizeof(RTCMEM); i++) {
|
||||||
|
hash += bytes[i]*(i+1);
|
||||||
|
}
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RTC_Save()
|
||||||
|
{
|
||||||
|
if (getRtcHash() != _rtcHash) {
|
||||||
|
rtcMem.valid = RTC_MEM_VALID;
|
||||||
|
ESP.rtcUserMemoryWrite(100, (uint32_t*)&rtcMem, sizeof(RTCMEM));
|
||||||
|
_rtcHash = getRtcHash();
|
||||||
|
#ifdef DEBUG_THEO
|
||||||
|
addLog_P(LOG_LEVEL_DEBUG, PSTR("Dump: Save"));
|
||||||
|
RTC_Dump();
|
||||||
|
#endif // DEBUG_THEO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RTC_Load()
|
||||||
|
{
|
||||||
|
ESP.rtcUserMemoryRead(100, (uint32_t*)&rtcMem, sizeof(RTCMEM));
|
||||||
|
#ifdef DEBUG_THEO
|
||||||
|
addLog_P(LOG_LEVEL_DEBUG, PSTR("Dump: Load"));
|
||||||
|
RTC_Dump();
|
||||||
|
#endif // DEBUG_THEO
|
||||||
|
if (rtcMem.valid != RTC_MEM_VALID) {
|
||||||
|
memset(&rtcMem, 0x00, sizeof(RTCMEM));
|
||||||
|
rtcMem.valid = RTC_MEM_VALID;
|
||||||
|
rtcMem.power = sysCfg.power;
|
||||||
|
rtcMem.hlw_kWhtoday = sysCfg.hlw_kWhtoday;
|
||||||
|
rtcMem.hlw_kWhtotal = sysCfg.hlw_kWhtotal;
|
||||||
|
for (byte i = 0; i < 4; i++) {
|
||||||
|
rtcMem.pCounter[i] = sysCfg.pCounter[i];
|
||||||
|
}
|
||||||
|
RTC_Save();
|
||||||
|
}
|
||||||
|
_rtcHash = getRtcHash();
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean RTC_Valid()
|
||||||
|
{
|
||||||
|
return (RTC_MEM_VALID == rtcMem.valid);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG_THEO
|
||||||
|
void RTC_Dump()
|
||||||
|
{
|
||||||
|
#define CFG_COLS 16
|
||||||
|
|
||||||
|
char log[LOGSZ];
|
||||||
|
uint16_t idx;
|
||||||
|
uint16_t maxrow;
|
||||||
|
uint16_t row;
|
||||||
|
uint16_t col;
|
||||||
|
|
||||||
|
uint8_t *buffer = (uint8_t *) &rtcMem;
|
||||||
|
maxrow = ((sizeof(RTCMEM)+CFG_COLS)/CFG_COLS);
|
||||||
|
|
||||||
|
for (row = 0; row < maxrow; row++) {
|
||||||
|
idx = row * CFG_COLS;
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%04X:"), idx);
|
||||||
|
for (col = 0; col < CFG_COLS; col++) {
|
||||||
|
if (!(col%4)) {
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%s "), log);
|
||||||
|
}
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%s %02X"), log, buffer[idx + col]);
|
||||||
|
}
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%s |"), log);
|
||||||
|
for (col = 0; col < CFG_COLS; col++) {
|
||||||
|
// if (!(col%4)) {
|
||||||
|
// snprintf_P(log, sizeof(log), PSTR("%s "), log);
|
||||||
|
// }
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%s%c"), log, ((buffer[idx + col] > 0x20) && (buffer[idx + col] < 0x7F)) ? (char)buffer[idx + col] : ' ');
|
||||||
|
}
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%s|"), log);
|
||||||
|
addLog(LOG_LEVEL_INFO, log);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // DEBUG_THEO
|
||||||
|
|
||||||
|
/*********************************************************************************************\
|
||||||
|
* Config - Flash
|
||||||
|
\*********************************************************************************************/
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "spi_flash.h"
|
||||||
|
}
|
||||||
|
#include "eboot_command.h"
|
||||||
|
|
||||||
|
extern "C" uint32_t _SPIFFS_end;
|
||||||
|
|
||||||
|
#define SPIFFS_END ((uint32_t)&_SPIFFS_end - 0x40200000) / SPI_FLASH_SEC_SIZE
|
||||||
|
|
||||||
|
// Version 3.x config
|
||||||
|
#define CFG_LOCATION_3 SPIFFS_END - 4
|
||||||
|
|
||||||
|
// Version 4.2 config = eeprom area
|
||||||
|
#define CFG_LOCATION SPIFFS_END // No need for SPIFFS as it uses EEPROM area
|
||||||
|
// Version 5.2 allow for more flash space
|
||||||
|
#define CFG_ROTATES 8 // Number of flash sectors used (handles uploads)
|
||||||
|
|
||||||
|
uint32_t _cfgHash = 0;
|
||||||
|
uint32_t _cfgLocation = CFG_LOCATION;
|
||||||
|
|
||||||
|
/********************************************************************************************/
|
||||||
|
/*
|
||||||
|
* Based on cores/esp8266/Updater.cpp
|
||||||
|
*/
|
||||||
|
void setFlashModeDout()
|
||||||
|
{
|
||||||
|
uint8_t *_buffer;
|
||||||
|
uint32_t address;
|
||||||
|
|
||||||
|
eboot_command ebcmd;
|
||||||
|
eboot_command_read(&ebcmd);
|
||||||
|
address = ebcmd.args[0];
|
||||||
|
_buffer = new uint8_t[FLASH_SECTOR_SIZE];
|
||||||
|
if (SPI_FLASH_RESULT_OK == spi_flash_read(address, (uint32_t*)_buffer, FLASH_SECTOR_SIZE)) {
|
||||||
|
if (_buffer[2] != 3) { // DOUT
|
||||||
|
_buffer[2] = 3;
|
||||||
|
noInterrupts();
|
||||||
|
if (SPI_FLASH_RESULT_OK == spi_flash_erase_sector(address / FLASH_SECTOR_SIZE)) {
|
||||||
|
spi_flash_write(address, (uint32_t*)_buffer, FLASH_SECTOR_SIZE);
|
||||||
|
}
|
||||||
|
interrupts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete[] _buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t getHash()
|
||||||
|
{
|
||||||
|
uint32_t hash = 0;
|
||||||
|
uint8_t *bytes = (uint8_t*)&sysCfg;
|
||||||
|
|
||||||
|
for (uint16_t i = 0; i < sizeof(SYSCFG); i++) {
|
||||||
|
hash += bytes[i]*(i+1);
|
||||||
|
}
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************************************************************************************\
|
||||||
|
* Config Save - Save parameters to Flash ONLY if any parameter has changed
|
||||||
|
\*********************************************************************************************/
|
||||||
|
|
||||||
|
uint32_t CFG_Address()
|
||||||
|
{
|
||||||
|
return _cfgLocation * SPI_FLASH_SEC_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFG_Save(byte rotate)
|
||||||
|
{
|
||||||
|
/* Save configuration in eeprom or one of 7 slots below
|
||||||
|
*
|
||||||
|
* rotate 0 = Save in next flash slot
|
||||||
|
* rotate 1 = Save only in eeprom flash slot until SetOption12 0 or restart
|
||||||
|
* rotate 2 = Save in eeprom flash slot, erase next flash slots and continue depending on stop_flash_rotate
|
||||||
|
* stop_flash_rotate 0 = Allow flash slot rotation (SetOption12 0)
|
||||||
|
* stop_flash_rotate 1 = Allow only eeprom flash slot use (SetOption12 1)
|
||||||
|
*/
|
||||||
|
char log[LOGSZ];
|
||||||
|
|
||||||
|
#ifndef BE_MINIMAL
|
||||||
|
if ((getHash() != _cfgHash) || rotate) {
|
||||||
|
if (1 == rotate) { // Use eeprom flash slot only and disable flash rotate from now on (upgrade)
|
||||||
|
stop_flash_rotate = 1;
|
||||||
|
}
|
||||||
|
if (2 == rotate) { // Use eeprom flash slot and erase next flash slots if stop_flash_rotate is off (default)
|
||||||
|
_cfgLocation = CFG_LOCATION +1;
|
||||||
|
}
|
||||||
|
if (stop_flash_rotate) {
|
||||||
|
_cfgLocation = CFG_LOCATION;
|
||||||
|
} else {
|
||||||
|
_cfgLocation--;
|
||||||
|
if (_cfgLocation <= (CFG_LOCATION - CFG_ROTATES)) {
|
||||||
|
_cfgLocation = CFG_LOCATION;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sysCfg.saveFlag++;
|
||||||
|
noInterrupts();
|
||||||
|
spi_flash_erase_sector(_cfgLocation);
|
||||||
|
spi_flash_write(_cfgLocation * SPI_FLASH_SEC_SIZE, (uint32*)&sysCfg, sizeof(SYSCFG));
|
||||||
|
interrupts();
|
||||||
|
if (!stop_flash_rotate && rotate) {
|
||||||
|
for (byte i = 1; i < CFG_ROTATES; i++) {
|
||||||
|
noInterrupts();
|
||||||
|
spi_flash_erase_sector(_cfgLocation -i); // Delete previous configurations by resetting to 0xFF
|
||||||
|
interrupts();
|
||||||
|
delay(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("Cnfg: Save (%d bytes) to flash at %X and count %d"), sizeof(SYSCFG), _cfgLocation, sysCfg.saveFlag);
|
||||||
|
addLog(LOG_LEVEL_DEBUG, log);
|
||||||
|
_cfgHash = getHash();
|
||||||
|
}
|
||||||
|
#endif // BE_MINIMAL
|
||||||
|
RTC_Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFG_Load()
|
||||||
|
{
|
||||||
|
/* Load configuration from eeprom or one of 7 slots below if first load does not stop_flash_rotate
|
||||||
|
*/
|
||||||
|
char log[LOGSZ];
|
||||||
|
|
||||||
|
struct SYSCFGH {
|
||||||
|
unsigned long cfg_holder;
|
||||||
|
unsigned long saveFlag;
|
||||||
|
} _sysCfgH;
|
||||||
|
|
||||||
|
_cfgLocation = CFG_LOCATION +1;
|
||||||
|
for (byte i = 0; i < CFG_ROTATES; i++) {
|
||||||
|
_cfgLocation--;
|
||||||
|
noInterrupts();
|
||||||
|
spi_flash_read(_cfgLocation * SPI_FLASH_SEC_SIZE, (uint32*)&sysCfg, sizeof(SYSCFG));
|
||||||
|
spi_flash_read((_cfgLocation -1) * SPI_FLASH_SEC_SIZE, (uint32*)&_sysCfgH, sizeof(SYSCFGH));
|
||||||
|
interrupts();
|
||||||
|
|
||||||
|
// snprintf_P(log, sizeof(log), PSTR("Cnfg: Check at %X with count %d and holder %X"), _cfgLocation -1, _sysCfgH.saveFlag, _sysCfgH.cfg_holder);
|
||||||
|
// addLog(LOG_LEVEL_DEBUG, log);
|
||||||
|
|
||||||
|
if (((sysCfg.version > 0x05000200) && sysCfg.flag.stop_flash_rotate) || (sysCfg.cfg_holder != _sysCfgH.cfg_holder) || (sysCfg.saveFlag > _sysCfgH.saveFlag)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
delay(1);
|
||||||
|
}
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("Cnfg: Load from flash at %X and count %d"), _cfgLocation, sysCfg.saveFlag);
|
||||||
|
addLog(LOG_LEVEL_DEBUG, log);
|
||||||
|
if (sysCfg.cfg_holder != CFG_HOLDER) {
|
||||||
|
// Auto upgrade
|
||||||
|
noInterrupts();
|
||||||
|
spi_flash_read((CFG_LOCATION_3) * SPI_FLASH_SEC_SIZE, (uint32*)&sysCfg, sizeof(SYSCFG));
|
||||||
|
spi_flash_read((CFG_LOCATION_3 + 1) * SPI_FLASH_SEC_SIZE, (uint32*)&_sysCfgH, sizeof(SYSCFGH));
|
||||||
|
if (sysCfg.saveFlag < _sysCfgH.saveFlag)
|
||||||
|
spi_flash_read((CFG_LOCATION_3 + 1) * SPI_FLASH_SEC_SIZE, (uint32*)&sysCfg, sizeof(SYSCFG));
|
||||||
|
interrupts();
|
||||||
|
if ((sysCfg.cfg_holder != CFG_HOLDER) || (sysCfg.version >= 0x04020000)) {
|
||||||
|
CFG_Default();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_cfgHash = getHash();
|
||||||
|
|
||||||
|
RTC_Load();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFG_Erase()
|
||||||
|
{
|
||||||
|
char log[LOGSZ];
|
||||||
|
SpiFlashOpResult result;
|
||||||
|
|
||||||
|
uint32_t _sectorStart = (ESP.getSketchSize() / SPI_FLASH_SEC_SIZE) + 1;
|
||||||
|
uint32_t _sectorEnd = ESP.getFlashChipRealSize() / SPI_FLASH_SEC_SIZE;
|
||||||
|
boolean _serialoutput = (LOG_LEVEL_DEBUG_MORE <= seriallog_level);
|
||||||
|
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("Cnfg: Erase %d flash sectors"), _sectorEnd - _sectorStart);
|
||||||
|
addLog(LOG_LEVEL_DEBUG, log);
|
||||||
|
|
||||||
|
for (uint32_t _sector = _sectorStart; _sector < _sectorEnd; _sector++) {
|
||||||
|
noInterrupts();
|
||||||
|
result = spi_flash_erase_sector(_sector);
|
||||||
|
interrupts();
|
||||||
|
if (_serialoutput) {
|
||||||
|
Serial.print(F("Flash: Erased sector "));
|
||||||
|
Serial.print(_sector);
|
||||||
|
if (SPI_FLASH_RESULT_OK == result) {
|
||||||
|
Serial.println(F(" OK"));
|
||||||
|
} else {
|
||||||
|
Serial.println(F(" Error"));
|
||||||
|
}
|
||||||
|
delay(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFG_Dump(char* parms)
|
||||||
|
{
|
||||||
|
#define CFG_COLS 16
|
||||||
|
|
||||||
|
char log[LOGSZ];
|
||||||
|
uint16_t idx;
|
||||||
|
uint16_t maxrow;
|
||||||
|
uint16_t row;
|
||||||
|
uint16_t col;
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
uint8_t *buffer = (uint8_t *) &sysCfg;
|
||||||
|
maxrow = ((sizeof(SYSCFG)+CFG_COLS)/CFG_COLS);
|
||||||
|
|
||||||
|
uint16_t srow = strtol(parms, &p, 16) / CFG_COLS;
|
||||||
|
uint16_t mrow = strtol(p, &p, 10);
|
||||||
|
|
||||||
|
// snprintf_P(log, sizeof(log), PSTR("Cnfg: Parms %s, Start row %d, rows %d"), parms, srow, mrow);
|
||||||
|
// addLog(LOG_LEVEL_DEBUG, log);
|
||||||
|
|
||||||
|
if (0 == mrow) { // Default only 8 lines
|
||||||
|
mrow = 8;
|
||||||
|
}
|
||||||
|
if (srow > maxrow) {
|
||||||
|
srow = maxrow - mrow;
|
||||||
|
}
|
||||||
|
if (mrow < (maxrow - srow)) {
|
||||||
|
maxrow = srow + mrow;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (row = srow; row < maxrow; row++) {
|
||||||
|
idx = row * CFG_COLS;
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%04X:"), idx);
|
||||||
|
for (col = 0; col < CFG_COLS; col++) {
|
||||||
|
if (!(col%4)) {
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%s "), log);
|
||||||
|
}
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%s %02X"), log, buffer[idx + col]);
|
||||||
|
}
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%s |"), log);
|
||||||
|
for (col = 0; col < CFG_COLS; col++) {
|
||||||
|
// if (!(col%4)) {
|
||||||
|
// snprintf_P(log, sizeof(log), PSTR("%s "), log);
|
||||||
|
// }
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%s%c"), log, ((buffer[idx + col] > 0x20) && (buffer[idx + col] < 0x7F)) ? (char)buffer[idx + col] : ' ');
|
||||||
|
}
|
||||||
|
snprintf_P(log, sizeof(log), PSTR("%s|"), log);
|
||||||
|
addLog(LOG_LEVEL_INFO, log);
|
||||||
|
delay(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/********************************************************************************************/
|
||||||
|
|
||||||
|
void CFG_Default()
|
||||||
|
{
|
||||||
|
addLog_P(LOG_LEVEL_NONE, PSTR("Cnfg: Use defaults"));
|
||||||
|
CFG_DefaultSet1();
|
||||||
|
CFG_DefaultSet2();
|
||||||
|
CFG_Save(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFG_DefaultSet1()
|
||||||
|
{
|
||||||
|
memset(&sysCfg, 0x00, sizeof(SYSCFG));
|
||||||
|
|
||||||
|
sysCfg.cfg_holder = CFG_HOLDER;
|
||||||
|
// sysCfg.saveFlag = 0;
|
||||||
|
sysCfg.version = VERSION;
|
||||||
|
// sysCfg.bootcount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFG_DefaultSet2()
|
||||||
|
{
|
||||||
|
memset((char*)&sysCfg +16, 0x00, sizeof(SYSCFG) -16);
|
||||||
|
|
||||||
|
sysCfg.flag.savestate = SAVE_STATE;
|
||||||
|
sysCfg.savedata = SAVE_DATA;
|
||||||
|
sysCfg.timezone = APP_TIMEZONE;
|
||||||
|
strlcpy(sysCfg.otaUrl, OTA_URL, sizeof(sysCfg.otaUrl));
|
||||||
|
|
||||||
|
sysCfg.seriallog_level = SERIAL_LOG_LEVEL;
|
||||||
|
// sysCfg.sta_active = 0;
|
||||||
|
strlcpy(sysCfg.sta_ssid[0], STA_SSID1, sizeof(sysCfg.sta_ssid[0]));
|
||||||
|
strlcpy(sysCfg.sta_pwd[0], STA_PASS1, sizeof(sysCfg.sta_pwd[0]));
|
||||||
|
strlcpy(sysCfg.sta_ssid[1], STA_SSID2, sizeof(sysCfg.sta_ssid[1]));
|
||||||
|
strlcpy(sysCfg.sta_pwd[1], STA_PASS2, sizeof(sysCfg.sta_pwd[1]));
|
||||||
|
strlcpy(sysCfg.hostname, WIFI_HOSTNAME, sizeof(sysCfg.hostname));
|
||||||
|
sysCfg.sta_config = WIFI_CONFIG_TOOL;
|
||||||
|
strlcpy(sysCfg.syslog_host, SYS_LOG_HOST, sizeof(sysCfg.syslog_host));
|
||||||
|
sysCfg.syslog_port = SYS_LOG_PORT;
|
||||||
|
sysCfg.syslog_level = SYS_LOG_LEVEL;
|
||||||
|
sysCfg.webserver = WEB_SERVER;
|
||||||
|
sysCfg.weblog_level = WEB_LOG_LEVEL;
|
||||||
|
|
||||||
|
strlcpy(sysCfg.mqtt_fingerprint, MQTT_FINGERPRINT, sizeof(sysCfg.mqtt_fingerprint));
|
||||||
|
strlcpy(sysCfg.mqtt_host, MQTT_HOST, sizeof(sysCfg.mqtt_host));
|
||||||
|
sysCfg.mqtt_port = MQTT_PORT;
|
||||||
|
strlcpy(sysCfg.mqtt_client, MQTT_CLIENT_ID, sizeof(sysCfg.mqtt_client));
|
||||||
|
strlcpy(sysCfg.mqtt_user, MQTT_USER, sizeof(sysCfg.mqtt_user));
|
||||||
|
strlcpy(sysCfg.mqtt_pwd, MQTT_PASS, sizeof(sysCfg.mqtt_pwd));
|
||||||
|
strlcpy(sysCfg.mqtt_topic, MQTT_TOPIC, sizeof(sysCfg.mqtt_topic));
|
||||||
|
strlcpy(sysCfg.button_topic, "0", sizeof(sysCfg.button_topic));
|
||||||
|
strlcpy(sysCfg.mqtt_grptopic, MQTT_GRPTOPIC, sizeof(sysCfg.mqtt_grptopic));
|
||||||
|
sysCfg.flag.mqtt_button_retain = MQTT_BUTTON_RETAIN;
|
||||||
|
sysCfg.flag.mqtt_power_retain = MQTT_POWER_RETAIN;
|
||||||
|
// sysCfg.flag.value_units = 0;
|
||||||
|
// sysCfg.flag.button_restrict = 0;
|
||||||
|
sysCfg.tele_period = TELE_PERIOD;
|
||||||
|
|
||||||
|
sysCfg.power = APP_POWER;
|
||||||
|
sysCfg.poweronstate = APP_POWERON_STATE;
|
||||||
|
sysCfg.ledstate = APP_LEDSTATE;
|
||||||
|
sysCfg.blinktime = APP_BLINKTIME;
|
||||||
|
sysCfg.blinkcount = APP_BLINKCOUNT;
|
||||||
|
sysCfg.sleep = APP_SLEEP;
|
||||||
|
|
||||||
|
sysCfg.domoticz_update_timer = DOMOTICZ_UPDATE_TIMER;
|
||||||
|
for (byte i = 0; i < 4; i++) {
|
||||||
|
sysCfg.switchmode[i] = SWITCH_MODE;
|
||||||
|
// sysCfg.domoticz_relay_idx[i] = 0;
|
||||||
|
// sysCfg.domoticz_key_idx[i] = 0;
|
||||||
|
// sysCfg.domoticz_switch_idx[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sysCfg.hlw_pcal = HLW_PREF_PULSE;
|
||||||
|
sysCfg.hlw_ucal = HLW_UREF_PULSE;
|
||||||
|
sysCfg.hlw_ical = HLW_IREF_PULSE;
|
||||||
|
// sysCfg.hlw_kWhtoday = 0;
|
||||||
|
// sysCfg.hlw_kWhyesterday = 0;
|
||||||
|
// sysCfg.hlw_kWhdoy = 0;
|
||||||
|
// sysCfg.hlw_pmin = 0;
|
||||||
|
// sysCfg.hlw_pmax = 0;
|
||||||
|
// sysCfg.hlw_umin = 0;
|
||||||
|
// sysCfg.hlw_umax = 0;
|
||||||
|
// sysCfg.hlw_imin = 0;
|
||||||
|
// sysCfg.hlw_imax = 0;
|
||||||
|
// sysCfg.hlw_mpl = 0; // MaxPowerLimit
|
||||||
|
sysCfg.hlw_mplh = MAX_POWER_HOLD;
|
||||||
|
sysCfg.hlw_mplw = MAX_POWER_WINDOW;
|
||||||
|
// sysCfg.hlw_mspl = 0; // MaxSafePowerLimit
|
||||||
|
sysCfg.hlw_msplh = SAFE_POWER_HOLD;
|
||||||
|
sysCfg.hlw_msplw = SAFE_POWER_WINDOW;
|
||||||
|
// sysCfg.hlw_mkwh = 0; // MaxEnergy
|
||||||
|
// sysCfg.hlw_mkwhs = 0; // MaxEnergyStart
|
||||||
|
|
||||||
|
CFG_DefaultSet_3_2_4();
|
||||||
|
|
||||||
|
strlcpy(sysCfg.friendlyname[0], FRIENDLY_NAME, sizeof(sysCfg.friendlyname[0]));
|
||||||
|
strlcpy(sysCfg.friendlyname[1], FRIENDLY_NAME"2", sizeof(sysCfg.friendlyname[1]));
|
||||||
|
strlcpy(sysCfg.friendlyname[2], FRIENDLY_NAME"3", sizeof(sysCfg.friendlyname[2]));
|
||||||
|
strlcpy(sysCfg.friendlyname[3], FRIENDLY_NAME"4", sizeof(sysCfg.friendlyname[3]));
|
||||||
|
|
||||||
|
CFG_DefaultSet_3_9_3();
|
||||||
|
|
||||||
|
strlcpy(sysCfg.switch_topic, "0", sizeof(sysCfg.switch_topic));
|
||||||
|
sysCfg.flag.mqtt_switch_retain = MQTT_SWITCH_RETAIN;
|
||||||
|
sysCfg.flag.mqtt_enabled = MQTT_USE;
|
||||||
|
|
||||||
|
sysCfg.flag.emulation = EMULATION;
|
||||||
|
|
||||||
|
strlcpy(sysCfg.web_password, WEB_PASSWORD, sizeof(sysCfg.web_password));
|
||||||
|
|
||||||
|
CFG_DefaultSet_4_0_4();
|
||||||
|
sysCfg.pulsetime[0] = APP_PULSETIME;
|
||||||
|
|
||||||
|
// 4.0.7
|
||||||
|
// for (byte i = 0; i < 5; i++) sysCfg.pwmvalue[i] = 0;
|
||||||
|
|
||||||
|
// 4.0.9
|
||||||
|
CFG_DefaultSet_4_0_9();
|
||||||
|
|
||||||
|
// 4.1.1 + 5.1.6
|
||||||
|
CFG_DefaultSet_4_1_1();
|
||||||
|
|
||||||
|
// 5.0.2
|
||||||
|
CFG_DefaultSet_5_0_2();
|
||||||
|
|
||||||
|
// 5.0.4
|
||||||
|
// sysCfg.hlw_kWhtotal = 0;
|
||||||
|
rtcMem.hlw_kWhtotal = 0;
|
||||||
|
|
||||||
|
// 5.0.5
|
||||||
|
strlcpy(sysCfg.mqtt_fulltopic, MQTT_FULLTOPIC, sizeof(sysCfg.mqtt_fulltopic));
|
||||||
|
|
||||||
|
// 5.0.6
|
||||||
|
sysCfg.mqtt_retry = MQTT_RETRY_SECS;
|
||||||
|
|
||||||
|
// 5.1.7
|
||||||
|
sysCfg.param[P_HOLD_TIME] = KEY_HOLD_TIME; // Default 4 seconds hold time
|
||||||
|
|
||||||
|
// 5.2.0
|
||||||
|
sysCfg.param[P_MAX_POWER_RETRY] = MAX_POWER_RETRY;
|
||||||
|
|
||||||
|
// 5.4.1
|
||||||
|
memcpy_P(sysCfg.sfb_code[0], sfb_codeDefault, 9);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/********************************************************************************************/
|
||||||
|
|
||||||
|
void CFG_DefaultSet_3_2_4()
|
||||||
|
{
|
||||||
|
sysCfg.ws_pixels = WS2812_LEDS;
|
||||||
|
sysCfg.ws_red = 255;
|
||||||
|
sysCfg.ws_green = 0;
|
||||||
|
sysCfg.ws_blue = 0;
|
||||||
|
sysCfg.ws_ledtable = 0;
|
||||||
|
sysCfg.ws_dimmer = 8;
|
||||||
|
sysCfg.ws_fade = 0;
|
||||||
|
sysCfg.ws_speed = 1;
|
||||||
|
sysCfg.ws_scheme = 0;
|
||||||
|
sysCfg.ws_width = 1;
|
||||||
|
sysCfg.ws_wakeup = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFG_DefaultSet_3_9_3()
|
||||||
|
{
|
||||||
|
for (byte i = 0; i < 4; i++) {
|
||||||
|
sysCfg.domoticz_switch_idx[i] = 0;
|
||||||
|
}
|
||||||
|
for (byte i = 0; i < 12; i++) {
|
||||||
|
sysCfg.domoticz_sensor_idx[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sysCfg.module = MODULE;
|
||||||
|
for (byte i = 0; i < MAX_GPIO_PIN; i++){
|
||||||
|
sysCfg.my_module.gp.io[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sysCfg.led_pixels = 0;
|
||||||
|
for (byte i = 0; i < 5; i++) {
|
||||||
|
sysCfg.led_color[i] = 255;
|
||||||
|
}
|
||||||
|
sysCfg.led_table = 0;
|
||||||
|
for (byte i = 0; i < 3; i++){
|
||||||
|
sysCfg.led_dimmer[i] = 10;
|
||||||
|
}
|
||||||
|
sysCfg.led_fade = 0;
|
||||||
|
sysCfg.led_speed = 0;
|
||||||
|
sysCfg.led_scheme = 0;
|
||||||
|
sysCfg.led_width = 0;
|
||||||
|
sysCfg.led_wakeup = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFG_DefaultSet_4_0_4()
|
||||||
|
{
|
||||||
|
strlcpy(sysCfg.ntp_server[0], NTP_SERVER1, sizeof(sysCfg.ntp_server[0]));
|
||||||
|
strlcpy(sysCfg.ntp_server[1], NTP_SERVER2, sizeof(sysCfg.ntp_server[1]));
|
||||||
|
strlcpy(sysCfg.ntp_server[2], NTP_SERVER3, sizeof(sysCfg.ntp_server[2]));
|
||||||
|
for (byte j =0; j < 3; j++) {
|
||||||
|
for (byte i = 0; i < strlen(sysCfg.ntp_server[j]); i++) {
|
||||||
|
if (sysCfg.ntp_server[j][i] == ',') {
|
||||||
|
sysCfg.ntp_server[j][i] = '.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sysCfg.pulsetime[0] = APP_PULSETIME;
|
||||||
|
for (byte i = 1; i < MAX_PULSETIMERS; i++) {
|
||||||
|
sysCfg.pulsetime[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFG_DefaultSet_4_0_9()
|
||||||
|
{
|
||||||
|
strlcpy(sysCfg.mqtt_prefix[0], SUB_PREFIX, sizeof(sysCfg.mqtt_prefix[0]));
|
||||||
|
strlcpy(sysCfg.mqtt_prefix[1], PUB_PREFIX, sizeof(sysCfg.mqtt_prefix[1]));
|
||||||
|
strlcpy(sysCfg.mqtt_prefix[2], PUB_PREFIX2, sizeof(sysCfg.mqtt_prefix[2]));
|
||||||
|
parseIP(&sysCfg.ip_address[0], WIFI_IP_ADDRESS);
|
||||||
|
parseIP(&sysCfg.ip_address[1], WIFI_GATEWAY);
|
||||||
|
parseIP(&sysCfg.ip_address[2], WIFI_SUBNETMASK);
|
||||||
|
parseIP(&sysCfg.ip_address[3], WIFI_DNS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFG_DefaultSet_4_1_1()
|
||||||
|
{
|
||||||
|
strlcpy(sysCfg.state_text[0], MQTT_STATUS_OFF, sizeof(sysCfg.state_text[0]));
|
||||||
|
strlcpy(sysCfg.state_text[1], MQTT_STATUS_ON, sizeof(sysCfg.state_text[1]));
|
||||||
|
strlcpy(sysCfg.state_text[2], MQTT_CMND_TOGGLE, sizeof(sysCfg.state_text[2]));
|
||||||
|
strlcpy(sysCfg.state_text[3], MQTT_CMND_HOLD, sizeof(sysCfg.state_text[3])); // v5.1.6
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFG_DefaultSet_5_0_2()
|
||||||
|
{
|
||||||
|
sysCfg.flag.temperature_conversion = TEMP_CONVERSION;
|
||||||
|
sysCfg.flag.temperature_resolution = TEMP_RESOLUTION;
|
||||||
|
sysCfg.flag.humidity_resolution = HUMIDITY_RESOLUTION;
|
||||||
|
sysCfg.flag.pressure_resolution = PRESSURE_RESOLUTION;
|
||||||
|
sysCfg.flag.energy_resolution = ENERGY_RESOLUTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
/********************************************************************************************/
|
||||||
|
|
||||||
|
void CFG_Delta()
|
||||||
|
{
|
||||||
|
if (sysCfg.version != VERSION) { // Fix version dependent changes
|
||||||
|
if (sysCfg.version < 0x03010200) { // 3.1.2 - Add parameter
|
||||||
|
sysCfg.poweronstate = APP_POWERON_STATE;
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x03010600) { // 3.1.6 - Add parameter
|
||||||
|
sysCfg.blinktime = APP_BLINKTIME;
|
||||||
|
sysCfg.blinkcount = APP_BLINKCOUNT;
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x03020400) { // 3.2.4 - Add parameter
|
||||||
|
CFG_DefaultSet_3_2_4();
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x03020500) { // 3.2.5 - Add parameter
|
||||||
|
getClient(sysCfg.friendlyname[0], sysCfg.mqtt_client, sizeof(sysCfg.friendlyname[0]));
|
||||||
|
strlcpy(sysCfg.friendlyname[1], FRIENDLY_NAME"2", sizeof(sysCfg.friendlyname[1]));
|
||||||
|
strlcpy(sysCfg.friendlyname[2], FRIENDLY_NAME"3", sizeof(sysCfg.friendlyname[2]));
|
||||||
|
strlcpy(sysCfg.friendlyname[3], FRIENDLY_NAME"4", sizeof(sysCfg.friendlyname[3]));
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x03020800) { // 3.2.8 - Add parameter
|
||||||
|
strlcpy(sysCfg.switch_topic, sysCfg.button_topic, sizeof(sysCfg.switch_topic));
|
||||||
|
sysCfg.ex_mqtt_switch_retain = MQTT_SWITCH_RETAIN;
|
||||||
|
sysCfg.ex_mqtt_enabled = MQTT_USE;
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x03020C00) { // 3.2.12 - Add parameter
|
||||||
|
sysCfg.sleep = APP_SLEEP;
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x03090300) { // 3.9.2d - Add parameter
|
||||||
|
CFG_DefaultSet_3_9_3();
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x03090700) { // 3.9.7 - Add parameter
|
||||||
|
sysCfg.ex_emulation = EMULATION;
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x03091400) {
|
||||||
|
strlcpy(sysCfg.web_password, WEB_PASSWORD, sizeof(sysCfg.web_password));
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x03091500) {
|
||||||
|
for (byte i = 0; i < 4; i++) sysCfg.switchmode[i] = SWITCH_MODE;
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x04000200) {
|
||||||
|
sysCfg.ex_button_restrict = 0;
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x04000400) {
|
||||||
|
CFG_DefaultSet_4_0_4();
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x04000500) {
|
||||||
|
memmove(sysCfg.my_module.gp.io, sysCfg.my_module.gp.io +1, MAX_GPIO_PIN -1); // move myio 1 byte to front
|
||||||
|
sysCfg.my_module.gp.io[MAX_GPIO_PIN -1] = 0; // Clear ADC0
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x04000700) {
|
||||||
|
for (byte i = 0; i < 5; i++) {
|
||||||
|
sysCfg.pwmvalue[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x04000804) {
|
||||||
|
CFG_DefaultSet_4_0_9();
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x04010100) {
|
||||||
|
CFG_DefaultSet_4_1_1();
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x05000105) {
|
||||||
|
sysCfg.flag = { 0 };
|
||||||
|
sysCfg.flag.savestate = SAVE_STATE;
|
||||||
|
sysCfg.flag.button_restrict = sysCfg.ex_button_restrict;
|
||||||
|
sysCfg.flag.value_units = sysCfg.ex_value_units;
|
||||||
|
sysCfg.flag.mqtt_enabled = sysCfg.ex_mqtt_enabled;
|
||||||
|
// sysCfg.flag.mqtt_response = 0;
|
||||||
|
sysCfg.flag.mqtt_power_retain = sysCfg.ex_mqtt_power_retain;
|
||||||
|
sysCfg.flag.mqtt_button_retain = sysCfg.ex_mqtt_button_retain;
|
||||||
|
sysCfg.flag.mqtt_switch_retain = sysCfg.ex_mqtt_switch_retain;
|
||||||
|
sysCfg.flag.emulation = sysCfg.ex_emulation;
|
||||||
|
|
||||||
|
CFG_DefaultSet_5_0_2();
|
||||||
|
|
||||||
|
sysCfg.savedata = SAVE_DATA;
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x05000400) {
|
||||||
|
sysCfg.hlw_kWhtotal = 0;
|
||||||
|
rtcMem.hlw_kWhtotal = 0;
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x05000500) {
|
||||||
|
strlcpy(sysCfg.mqtt_fulltopic, MQTT_FULLTOPIC, sizeof(sysCfg.mqtt_fulltopic));
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x05000600) {
|
||||||
|
sysCfg.mqtt_retry = MQTT_RETRY_SECS;
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x05010100) {
|
||||||
|
sysCfg.pCounterType = 0;
|
||||||
|
sysCfg.pCounterDebounce = 0;
|
||||||
|
for (byte i = 0; i < MAX_COUNTERS; i++) {
|
||||||
|
sysCfg.pCounter[i] = 0;
|
||||||
|
rtcMem.pCounter[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x05010600) {
|
||||||
|
if (sysCfg.version > 0x04010100) {
|
||||||
|
memcpy(sysCfg.state_text, sysCfg.ex_state_text, 33);
|
||||||
|
}
|
||||||
|
strlcpy(sysCfg.state_text[3], MQTT_CMND_HOLD, sizeof(sysCfg.state_text[3]));
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x05010700) {
|
||||||
|
sysCfg.param[P_HOLD_TIME] = KEY_HOLD_TIME; // Default 4 seconds hold time
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x05020000) {
|
||||||
|
sysCfg.param[P_MAX_POWER_RETRY] = MAX_POWER_RETRY;
|
||||||
|
}
|
||||||
|
if (sysCfg.version < 0x05050000) {
|
||||||
|
for (byte i = 0; i < 17; i++) {
|
||||||
|
sysCfg.sfb_code[i][0] = 0;
|
||||||
|
}
|
||||||
|
memcpy_P(sysCfg.sfb_code[0], sfb_codeDefault, 9);
|
||||||
|
}
|
||||||
|
|
||||||
|
sysCfg.version = VERSION;
|
||||||
|
CFG_Save(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue