What's New - FengtianGu/Sonoff-Tasmota GitHub Wiki
See development build changelog for planned features.
- Release bins are back to Arduino core 2.3 for improved Wi-Fi stability with various hardware
- Add support for online template change using command Template or GUI Configure Other
- Add support for Korean language translations
- Add commands PowerCal, VoltageCal and CurrentCal for HLW8012, HJL01 and BL0937 based energy sensors
- Add command SSerialSend5 <hexdata> to SerialBridge
- Add command Interlock 0 / 1 / 1,2 3,4 .. to control interlock ON/OFF and add up to 8 relays in 1 to 4 interlock groups
- Add command Template 255 to copy module configuration over to current active template and store as user template named Merged
- Add command SetOption36 to control boot loop default restoration
- Add command SetOption37 for RGBCW color mapping
- Add command SetOption55 0/1 and define MDNS_ENABLE to disable/enable mDNS
- Add command SetOption62 0/1 to disable retain on Button or Switch hold messages
- Add support for Smanergy KA10 Smart Wall Socket with Energy monitoring
- Add support for OBI Power Socket 2
- Add support for YTF IR Bridge
- Add support for Mi LED Desk Lamp with rotary switch
- Add support for Digoo DG-SP202 Smart Socket with Energy monitoring
- Add support for MAX31855 K-Type thermocouple sensor using softSPI
- Add support for Luminea ZX2820 Smart Socket with Energy monitoring
- Add support for Near Field Communication (NFC) controller PN532 using Serial
- Add support for MAX44009 Ambient Light sensor
- Add support for multiple ADS1115 I2C devices
- Add support for sensor SCD30
- Add property MqttCount to status 6 message representing number of Mqtt re-connections
- Add property LinkCount to state and status 11 message representing number of Wifi Link re-connections
- Add property Downtime to state and status 11 message representing the duration of wifi connection loss
- Add variable %timestamp% to rules
- Add rule support for "==", "!=" ">=" and "<="
- Add Home Assistant status sensor
- Add Slovak language.
- Add support for AZ-Instrument 7798 CO2 meter/datalogger
- Add support for Gosund SP1 v2.3 Power Socket with Energy Monitoring
- Add support for Armtronix dimmers.
- Add support for SM Smart Wifi Dimmer PS-16-DZ
- Add support for Teckin US Power Socket with Energy Monitoring
- Add support for GPIO02 for newer Sonoff Basic
- Add support for Manzoku Power Strip
- Add support for I2C MGC3130 Electric Field Effect sensor
- Add support for SDM220
- Add command SetOption24 0/1 to select pressure unit as hPa or mmHg
- Add command SetOption59 0/1 to change state topic from tele/STATE to stat/RESULT
- Add command SetOption58 0/1 to enable IR raw data info in JSON message
- Add command IRSend <frequency>|0,<rawdata1>,<rawdata2>,.. to allow raw data transmission
- Add command SetOption56 0/1 to enable wifi network scan and select highest RSSI
- Add command SetOption57 0/1 to enable wifi network re-scan every 44 minutes with a rssi threshold of 10 to select highest RSSI
- Add command SetOption60 0/1 to select dynamic sleep (0) or sleep (1)
- Add Announce Switches to MQTT Discovery
TasmotaSerial hardware serial detection is swapped started with TasmotaSerial v2.2.0. While keeping the hardware connection unchanged the Rx and Tx configuration parameters need to be reconfigured swapped to align TasmotaSerial single wire to two wire use.
The following configuration will select Hardware Serial and will disable user serial input, SerialLog and force a sensor specific baudrate.
Sensor | GPIO1 (Tx) | GPIO3 (Rx) | Baudrate |
---|---|---|---|
MHZ19(B) | 60 MHZ Tx | 61 MHZ Rx | 9600 |
PZEM004T | 62 PZEM0XX Tx | 63 PZEM004 Rx | 9600 |
SenseAir | 64 SAir Tx | 65 SAir Rx | 9600 |
PMS5003 | 00 None | 69 PMS5003 | 9600 |
NovaSds | 101 SDS0X1 Tx | 70 SDS0X1 Rx | 9600 |
SDM120 | 75 SDM120 Tx | 76 SDM120 Rx | 9600 |
SDM630 | 77 SDM120 Tx | 78 SDM120 Rx | 9600 |
PZEM014/016 | 62 PZEM0XX Tx | 98 PZEM016 Rx | 9600 |
PZEM003/017 | 62 PZEM0XX Tx | 99 PZEM017 Rx | 9600 |
MP3 Player | 100 MP3 Player | 00 None | 9600 |
Tuya Dimmer | 107 Tuya Tx | 108 Tuya Rx | 9600 |
This release expands the rule functionality with:
- commands like
Add
,Sub
,Mult
andScale
allowing floating point arithmetic on sensor data. - variables like %time%, %uptime%, %sunrise% and %sunset%
Support for the following devices was added:
- Sonoff S26
- Sonoff iFan02
- BlitzWolf or equivalent energy monitoring devices
Removed libraries
- Adafruit_BME680-1.0.5
- Adafruit_Sensor-1.0.2.02 Libraries added
- BME680_driver-bme680_v3.5.9
- C2Programmer-1.0.0
- ESPAsyncUDP-master Updated library
- esp-knx-ip-0.5.1
Starting with TasmotaSerial version 2.0.0 it is possible for serial connected sensors to use the Hardware Serial interface. This solves possible software interrupts failures resulting in lost sensor readings or watchdog/exception reboots. This is especially true for ESP8266/Arduino core version 2.3.0 which, by lack of iRam, does only allow interrupt routines from flash which might lead to before mentioned failures.
When the following sensor configurations are made Hardware Serial is used which will disable user serial input, SerialLog and force a sensor specific baudrate.
Sensor | GPIO1 (Tx) | GPIO3 (Rx) | Baudrate |
---|---|---|---|
PZEM004T | 59 PZEM Rx | 58 PZEM Tx | 9600 |
SDM120 | 72 SDM120 Rx | 71 SDM120 Tx | 9600 |
MHZ19(B) | 57 MHZ Rx | 56 MHZ Tx | 9600 |
SenseAir | 61 SAir Rx | 60 SAir Tx | 9600 |
PMS5003 | 00 None | 65 PMS5003 | 9600 |
NovaSds | 00 None | 66 SDS0X1 | 9600 |
The current release is compiled with core version v2.3.0. Due to increased wifi issues like no connection and lower signal strength using core 2.4.0 this release falls back to core 2.3.0.
Updated libraries
- TasmotaSerial-2.0.0
To have more flexible control this release introduces rules to act on different events like activated timers, button presses or sensor readings. See the wiki for more information and examples.
To provide more local control 16 timers were introduced for controlling power outlets during different times during the week. Optional webinterface and Sunrise/Sunset support is also available.
The current release is compiled with core version v2.4.0. This is done to use at least a newer version of the core as it allows better interrupt support due to more free iRAM used by the Arilux Rf and Software Serial interrupt handlers. In v2.3.0 my interrupts had to use normal RAM because of lack of free iRAM which sometimes results in software watchdog restarts.
Core v2.4.1 could have been used too but this version has a problem with sleep mode making the device unresponsive and only a serial firmware upload would revive it. See issue #2559 for background information. This version of Tasmota disables sleep mode on core v2.4.1
Updated libraries
- TasmotaSerial-1.2.0
New libraries
- Adafruit_SGP30 1.0.0 + 13 commits
- esp-knx-ip 0.5.0
- esp-mqtt-arduino 1.0.1 + 2 commits and 1 local fix
- Joba_Tsl2561 replacing TSL2561-Arduino-Library
- Multichannel_Gas_Sensor
- TasmotaMqtt 1.1.1
To ease Home Assistant (and Domoticz #1731) configuration a feature called MQTT device discovery is made available for Tasmota switches and lights.
By executing command SetOption19 On
this feature is enabled and after a forced reboot a retained MQTT message starting with topic "homeassistant..", as defined in user_config.h HOME_ASSISTANT_DISCOVERY_PREFIX, is send containing parameters used by Home Assistant to configure a switch or a light.
So no user interaction is needed on Home Assistant.
If you manage to let Home Assistant execute a script after it's restart containing a MQTT command like cmnd/your_light/state
it will also use the current state of Tasmota without the use of the retain flag so hated by me.
To disable this feature and get rid of the retained message execute command SetOption19 Off
and after a forced reboot the homeassistant topic should have been removed from the MQTT server.
Tasmota is build to install on devices with 1MB usable flash. To easily use Over The Air (OTA) firmware updates only half of this flash space can be used by Tasmota as the other half is needed to store the OTA firmware image before it can be installed.
To keep Tasmota this small I had to reduce redundancy as much as possible. I also had to tweak some libraries by removing default features and disable some features in the user_config.h.
This worked kind of fine until version 2.4.0 of the ESP8266/Arduino board manager came along. This version needs an extra 22k for it's libraries and functionality. To provide easy OTA updates I had to tweak Tasmota even further to the point that major features like Emulation almost had to be disabled by default.
Luckily the ESP8266/Arduino board manager software adjusts it's free flash space based on the current program space. This means that a small program has more OTA flash space to use than a large program. I used this feature by providing the sonoff-minimal.bin firmware image containing only MQTT and a webserver which allows for larger Tasmota images by using a two step OTA approach.
- First OTA upload the sonoff-minimal.bin image in the small free space area
- Then OTA upload the final sonoff.bin image in the larger free space area
This process is now automated if used with an external OTA server.
Tasmota now tries to load the requested image and if it notices that the image won't fit it will load the minimal version first which in turn will load the requested final image. This is OtaMagic.
To ade in OtaMagic the file pio/espupload.py has been updated to rename the platformio generated firmware.bin filename to the released firmware filename.
To save code space when using version 2.4.0 of the ESP8266/Arduino board manager some compile time parameters need to be removed. For Ardiuino IDE a change has been made to file arduino/version 2.4.0/platform.txt and for platformio a script pio/strip-floats.py is made available to be enabled in platformio.ini when compiling. When the correct installation steps are being performed as outlined in the menu on the right this will be implemented correctly.
Updated libraries
- TasmotaSerial-1.1.0
- PubSubClient library file PubSubClient.h define MQTT_MAX_PACKET_SIZE 1000
The use of a different language from English has been revisited due to incompatible JSON messages between Tasmota and external tools (#1473). This has resulted in major changes to the language files which now only translate the Web GUI and Logging messages. All JSON messages will now be in English.
The response from a HTPP command request will now be in plain JSON only. This allows for better integration with external tools. As a result the special Energy status message has been abandoned and is now provided as a Sensor status message. Useres may have to update their tools monitoring Energy values.
The Color2
, Color3
and Color4
commands have been renamed to respectively Color3
, Color4
and Color5
to make room for the new Color2
command.
The introduction of Device function pointers should make future integration of new devices easier.
New libraries have been added:
- Adafruit_BME680-1.0.5
- Adafruit_Sensor-1.0.2 + 2 commits
- TasmotaSerial-1.0.0
- TSL2561-Arduino-Library
Command EnergyReset 1..3
has been replaced by commands EnergyReset1
, EnergyReset2
and EnergyReset3
to allow more functonality.
Updated libraries
- ArduinoJson 5.11.2
- IRRemoteEsp8266 2.2.1 + 2 commits but disabled some protocols (code size reduction)
- NeoPixelBus 2.2.9
- OneWire 2.3.3 + 6 commits and disabled CRC lookup-table (#define ONEWIRE_CRC8_TABLE 0) (code size reduction)
- PubSubClient 2.6 + 9 commits and additional delay (#790)
- I2Cdevlib-Core patched for esp8266-core 2.4.0 compatibility