diff --git a/CHANGELOG.md b/CHANGELOG.md index 032b3e023..48cd42700 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,21 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [9.2.0.7] +## [9.3.0.1] +### Changed +- Remove the need to start filenames with a slash (/) in Ufs commands +- Removed command ``VirtualCT`` as synonym for ``SetOption106`` (#11049) + +### Fixed +- Ili1942 driver (#11046) +- ESP32 Mi32 driver (#11048) + +## [Released] + +## [9.3.0] 20210219 +- Release Kenneth + +## [9.2.0.7] 20210219 ### Added - Support for Device Groups Device Map (#10898) - Support for Eastron SDM72D-M three phase 100A Modbus energy meter (#10862) @@ -132,8 +146,6 @@ All notable changes to this project will be documented in this file. - Compile error when ``#ifdef USE_IR_RECEIVE`` is disabled regression from 9.1.0.2 - Prometheus memory leak (#10221) -## [Released] - ## [9.2.0] 20201216 - Release Julie diff --git a/FIRMWARE.md b/FIRMWARE.md index da20d75f9..e7c03c036 100644 --- a/FIRMWARE.md +++ b/FIRMWARE.md @@ -18,7 +18,7 @@ See [CHANGELOG.md](https://github.com/arendst/Tasmota/blob/development/tasmota/C ## Development -[![Dev Version](https://img.shields.io/badge/development%20version-v9.2.x.x-blue.svg)](https://github.com/arendst/Tasmota) +[![Dev Version](https://img.shields.io/badge/development%20version-v9.3.x.x-blue.svg)](https://github.com/arendst/Tasmota) [![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://ota.tasmota.com/tasmota/) [![Tasmota CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+CI%22) [![Tasmota ESP32 CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20ESP32%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+ESP32+CI%22) diff --git a/README.md b/README.md index 4b41da5cf..232c92565 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ In addition to the [release webpage](https://github.com/arendst/Tasmota/releases ## Development -[![Dev Version](https://img.shields.io/badge/development%20version-v9.2.x.x-blue.svg)](https://github.com/arendst/Tasmota) +[![Dev Version](https://img.shields.io/badge/development%20version-v9.3.x.x-blue.svg)](https://github.com/arendst/Tasmota) [![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://ota.tasmota.com/tasmota/) [![Tasmota CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+CI%22) [![Tasmota ESP32 CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20ESP32%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+ESP32+CI%22) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 082ca49e7..8df5b85cc 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -78,94 +78,11 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.2.0.7 -### Added -- Command ``CTRange`` to specify the visible CT range the bulb is capable of [#10311](https://github.com/arendst/Tasmota/issues/10311) -- Command ``L1MusicSync <0|Off>|<1|On>|<2|Toggle>, 1..10, 1..100>`` to control Sonoff L1 Music Sync mode sensitivity and speed [#10722](https://github.com/arendst/Tasmota/issues/10722) -- Command ``RuleTimer0`` to access all RuleTimers at once [#10352](https://github.com/arendst/Tasmota/issues/10352) -- Command ``Speed2`` to control a once off fade [#10741](https://github.com/arendst/Tasmota/issues/10741) -- Command ``VirtualCT`` to simulate or fine tune CT bulbs with 3,4,5 channels [#10311](https://github.com/arendst/Tasmota/issues/10311) -- Command ``SetOption40 0..250`` to disable button functionality if activated for over 0.1 second re-introduced -- Command ``SetOption43 1..255`` to control Rotary step [#10407](https://github.com/arendst/Tasmota/issues/10407) -- Command ``SetOption118 1`` to move ZbReceived from JSON message and into the subtopic replacing "SENSOR" default [#10353](https://github.com/arendst/Tasmota/issues/10353) -- Command ``SetOption119 1`` to remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic [#10355](https://github.com/arendst/Tasmota/issues/10355) -- Zigbee command ``SetOption120 1`` or ``ZbEndpointTopic 1`` to add the zigbee endpoint as suffix in topic when using ``SetOption89 1`` -- Zigbee command ``ZbScan`` to do an energy scan on each radio channel -- Commands ``ChannelRemap``, ``MultiPWM``, ``AlexaCTRange``, ``PowerOnFade``, ``PWMCT``, ``WhiteBlend`` and ``VirtualCT`` as synonyms for ``SetOption37, 68, 82, 91, 92, 105`` and ``106`` -- Commands ``ZbNameKey``, ``ZbDeviceTopic``, ``ZbNoPrefix``, ``ZbEndpointSuffix``, ``ZbNoAutoBind`` and ``ZbNameTopic`` as synonyms for ``SetOption83, 89, 100, 101, 110`` and ``112`` -- Commands ``ZbNoAutoBind``, ``ZbReceivedTopic`` and ``ZbOmitDevice`` as synonyms for ``SetOption116, 118`` and ``119`` -- Commands ``BuzzerActive`` and ``BuzzerPwm`` as synonyms for ``SetOption67`` and ``111`` -- Filesystem commands ``Ufs``, ``UfsType``, ``UfsSize``, ``UfsFree``, ``UfsDelete``, ``UfsRename`` and ``UfsRun`` -- Support for filesystem ``autoexec.bat`` to execute sequential commands like backlog -- Milliseconds to console output [#10152](https://github.com/arendst/Tasmota/issues/10152) -- Gpio ``Option_a1`` enabling PWM2 high impedance if powered off as used by Wyze bulbs [#10196](https://github.com/arendst/Tasmota/issues/10196) -- Rotary No Pullup GPIO selection ``Rotary A/B_n`` [#10407](https://github.com/arendst/Tasmota/issues/10407) -- BSSID and Signal Strength Indicator to GUI wifi scan result [#10253](https://github.com/arendst/Tasmota/issues/10253) -- Support for P9813 RGB Led MOSFET controller [#10104](https://github.com/arendst/Tasmota/issues/10104) -- Support for GPIO option selection -- Support for FTC532 8-button touch controller by Peter Franck [#10222](https://github.com/arendst/Tasmota/issues/10222) -- Support for BS814A-2 8-button touch buttons by Peter Franck [#10447](https://github.com/arendst/Tasmota/issues/10447) -- Support for up to 4 I2C SEESAW_SOIL Capacitance & Temperature sensors by Peter Franck [#10481](https://github.com/arendst/Tasmota/issues/10481) -- Support for TOF10120 time of flight sensor by Cyril Pawelko [#10190](https://github.com/arendst/Tasmota/issues/10190) -- Support for Afrikaans language translations by Christiaan Heerze -- Support for Frysk language translations by Christiaan Heerze -- Support for IR inverted leds using ``#define IR_SEND_INVERTED true`` [#10301](https://github.com/arendst/Tasmota/issues/10301) -- Support for disabling 38kHz IR modulation using ``#define IR_SEND_USE_MODULATION false`` [#10301](https://github.com/arendst/Tasmota/issues/10301) -- Support for SPI display driver for ST7789 TFT by Gerhard Mutz [#9037](https://github.com/arendst/Tasmota/issues/9037) -- Support for TM1637 seven segment display by Ajith Vasudevan [#10889](https://github.com/arendst/Tasmota/issues/10889) -- Support for time proportioned (``#define USE_TIMEPROP``) and optional PID (``#define USE_PID``) relay control [#10412](https://github.com/arendst/Tasmota/issues/10412) -- Support for 24/26/32/34 bit RFID Wiegand interface (D0/D1) by Sigurd Leuther [#3647](https://github.com/arendst/Tasmota/issues/3647) -- Support for SM2135 current selection using GPIO ``SM2135 DAT`` index [#10634](https://github.com/arendst/Tasmota/issues/10634) -- Support for Sugar Valley NeoPool Controller by Norbert Richter [#10637](https://github.com/arendst/Tasmota/issues/10637) -- Support for Device Groups Device Map [#10898](https://github.com/arendst/Tasmota/issues/10898) -- Support for Eastron SDM72D-M three phase 100A Modbus energy meter [#10862](https://github.com/arendst/Tasmota/issues/10862) -- Support for ESP32 ``Module 3`` Odroid Go 16MB binary tasmota32-odroidgo.bin [#8630](https://github.com/arendst/Tasmota/issues/8630) -- Support for ESP32 ``Module 5`` Wireless Tag Eth01 [#9496](https://github.com/arendst/Tasmota/issues/9496) -- Support for ESP32 ``Module 7`` M5stack core2 16MB binary tasmota32-core2.bin [#10635](https://github.com/arendst/Tasmota/issues/10635) -- Support for Berry language on ESP32 -- Support rotary encoder on Shelly Dimmer [#10407](https://github.com/arendst/Tasmota/issues/10407#issuecomment-756240920) -- Support character `#` to be replaced by `space`-character in command ``Publish`` topic [#10258](https://github.com/arendst/Tasmota/issues/10258) -- Support trailing silence in buzzer tune [#10694](https://github.com/arendst/Tasmota/issues/10694) -- Rule trigger string comparisons for EndsWith ``$>``, StartsWith ``$<`` and Contains ``$|`` [#10538](https://github.com/arendst/Tasmota/issues/10538) -- SPI display driver SSD1331 Color oled by Jeroen Vermeulen [#10376](https://github.com/arendst/Tasmota/issues/10376) -- Compile time option ``USE_MQTT_TLS_DROP_OLD_FINGERPRINT`` to drop old (less secure) TLS fingerprint -- ESP8266 Fallback to ``*.bin.gz`` binary when OTA upload of ``*.bin`` binary fails - -### Breaking Changed -- ESP32 switch from default SPIFFS to default LittleFS file system loosing current (zigbee) files -- Replaced MFRC522 13.56MHz rfid card reader GPIO selection from ``SPI CS`` by ``RC522 CS`` -- Replaced NRF24L01 GPIO selection from ``SPI CS`` by ``NRF24 CS`` and ``SPI DC`` by ``NRF24 DC`` -- Replaced ILI9341 GPIO selection from ``SPI CS`` by ``ILI9341 CS`` and ``SPI DC`` by ``ILI9341 DC`` -- Replaced ST7789 GPIO selection from ``SPI CS`` by ``ST7789 CS`` and ``SPI DC`` by ``ST7789 DC`` -- Replaced ILI9488 GPIO selection from ``SPI CS`` by ``ILI9488_CS`` -- Replaced EPaper29 GPIO selection from ``SPI CS`` by ``EPaper29 CS`` -- Replaced EPaper42 GPIO selection from ``SPI CS`` by ``EPaper42 CS`` -- Replaced SSD1351 GPIO selection from ``SPI CS`` by ``SSD1351 CS`` -- Replaced RA8876 GPIO selection from ``SPI CS`` by ``RA8876 CS`` - +## Changelog v9.3.0.1 ### Changed -- Remove support for direct migration from versions before v8.1.0 (Doris) -- IRremoteESP8266 library from v2.7.14 to v2.7.15 -- NeoPixelBus library from v2.6.0 to v2.6.1.4 -- ILI9341 library from Adafruit_ILI9341-1.2.0-Tasmota-1.0 to ILI9341-gemu-1.0 -- Command ``Sleep 0`` removes any sleep from wifi modem except when ESP32 BLE is active -- Logging from heap to stack freeing 700 bytes RAM -- Disabled ``USE_LIGHT`` light support for ZBBridge saving 17.6kB [#10374](https://github.com/arendst/Tasmota/issues/10374) -- Force initial default state ``SetOption57 1`` to scan wifi network every 44 minutes for strongest signal [#10395](https://github.com/arendst/Tasmota/issues/10395) -- PubSubClient MQTT_SOCKET_TIMEOUT from 15 to 4 seconds -- Domoticz fixed 2 decimals resolution by user selectable ``TempRes``, ``HumRes`` and ``PressRes`` resolutions -- Increase number of button GPIOs from 4 to 8 -- ESP32 Increase number of switch GPIOs from 8 to 28 -- ESP32 increase number of relay GPIOs from 8 to 28 -- ESP32 Increase number of interlock groups from 4 to 14 +- Remove the need to start filenames with a slash (/) in Ufs commands +- Removed command ``VirtualCT`` as synonym for ``SetOption106`` [#11049](https://github.com/arendst/Tasmota/issues/11049) ### Fixed -- Redesign syslog and mqttlog using log buffer [#10164](https://github.com/arendst/Tasmota/issues/10164) -- Shutter stop issue [#10170](https://github.com/arendst/Tasmota/issues/10170) -- Scripter script_sub_command [#10181](https://github.com/arendst/Tasmota/issues/10181) -- Scripter JSON variable above 32 chars [#10193](https://github.com/arendst/Tasmota/issues/10193) -- Shelly Dimmer power on state [#10154](https://github.com/arendst/Tasmota/issues/10154) [#10182](https://github.com/arendst/Tasmota/issues/10182) -- Wemo emulation for single devices [#10165](https://github.com/arendst/Tasmota/issues/10165) [#10194](https://github.com/arendst/Tasmota/issues/10194) -- ESP32 LoadStoreError when using ``#define USER_TEMPLATE`` [#9506](https://github.com/arendst/Tasmota/issues/9506) -- Compile error when ``#ifdef USE_IR_RECEIVE`` is disabled regression from 9.1.0.2 -- Prometheus memory leak [#10221](https://github.com/arendst/Tasmota/issues/10221) +- Ili1942 driver [#11046](https://github.com/arendst/Tasmota/issues/11046) +- ESP32 Mi32 driver [#11048](https://github.com/arendst/Tasmota/issues/11048) diff --git a/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp b/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp index 808c60362..ebf828790 100644 --- a/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp +++ b/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp @@ -175,7 +175,7 @@ void ILI9341_2::writecmd(uint8_t d) { void ILI9341_2::init(uint16_t width, uint16_t height) { //sspi2 = SPISettings(2500000, MSBFIRST, SPI_MODE3); - if (_hwspi == 2) { + if (_hwspi >= 2) { iwidth = ILI9341_TFTWIDTH; iheight = ILI9341_TFTHEIGHT; } else { @@ -187,8 +187,13 @@ void ILI9341_2::init(uint16_t width, uint16_t height) { sspi2 = SPISettings(40000000, MSBFIRST, SPI_MODE0); - if (_hwspi==2) { - spi2=&SPI; + if (_hwspi >= 2) { + spi2 = &SPI; +#ifdef ESP32 + if (_hwspi > 2) { + spi2->begin(_sclk, _miso, _mosi, -1); + } +#endif // ESP32 } else { #ifdef ESP32 if (_spibus == 2) { @@ -522,7 +527,7 @@ void ili9342_bpwr(uint8_t on); void ILI9341_2::DisplayOnff(int8_t on) { - if (_hwspi==2) { + if (_hwspi>=2) { ili9342_bpwr(on); } @@ -572,7 +577,7 @@ void ILI9341_2::dim(uint8_t dim) { if (_bp>=0) { ledcWrite(ESP32_PWM_CHANNEL,dimmer); } else { - if (_hwspi==2) { + if (_hwspi>=2) { ili9342_dimm(dim); } } diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 1c5c9b588..0edd337fa 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -433,7 +433,6 @@ #define D_SO_POWERONFADE "PowerOnFade" // SO91 #define D_SO_PWMCT "PWMCT" // SO92 #define D_SO_WHITEBLEND "WhiteBlend" // SO105 -#define D_SO_VIRTUALCT "VirtualCT" // SO106 #define D_CMND_CHANNEL "Channel" #define D_CMND_COLOR "Color" #define D_CMND_COLORTEMPERATURE "CT" diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index ec0ef2dcf..ce1ad81f9 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,6 +20,6 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09020007; +const uint32_t VERSION = 0x09030001; #endif // _TASMOTA_VERSION_H_ diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index 0144d826d..f60a6bdbd 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -131,7 +131,7 @@ const uint8_t LIGHT_COLOR_SIZE = 25; // Char array scolor size const char kLightCommands[] PROGMEM = "|" // No prefix // SetOptions synonyms D_SO_CHANNELREMAP "|" D_SO_MULTIPWM "|" D_SO_ALEXACTRANGE "|" D_SO_POWERONFADE "|" D_SO_PWMCT "|" - D_SO_WHITEBLEND "|" D_SO_VIRTUALCT "|" + D_SO_WHITEBLEND "|" // Other commands D_CMND_COLOR "|" D_CMND_COLORTEMPERATURE "|" D_CMND_DIMMER "|" D_CMND_DIMMER_RANGE "|" D_CMND_DIMMER_STEP "|" D_CMND_LEDTABLE "|" D_CMND_FADE "|" D_CMND_RGBWWTABLE "|" D_CMND_SCHEME "|" D_CMND_SPEED "|" D_CMND_WAKEUP "|" D_CMND_WAKEUPDURATION "|" @@ -150,7 +150,7 @@ const char kLightCommands[] PROGMEM = "|" // No prefix SO_SYNONYMS(kLightSynonyms, 37, 68, 82, 91, 92, - 105, 106, + 105, ); void (* const LightCommand[])(void) PROGMEM = { diff --git a/tasmota/xdrv_50_filesystem.ino b/tasmota/xdrv_50_filesystem.ino index 2ed092618..3a5626cfb 100644 --- a/tasmota/xdrv_50_filesystem.ino +++ b/tasmota/xdrv_50_filesystem.ino @@ -426,6 +426,14 @@ bool UfsExecuteCommandFile(const char *fname) { * Commands \*********************************************************************************************/ +const int UFS_FILENAME_SIZE = 48; + +char* UfsFilename(char* fname, char* fname_in) { + fname_in = Trim(fname_in); // Remove possible leading spaces + snprintf_P(fname, UFS_FILENAME_SIZE, PSTR("%s%s"), ('/' == fname_in[0]) ? "" : "/", fname_in); + return fname; +} + const char kUFSCommands[] PROGMEM = "Ufs|" // Prefix "|Type|Size|Free|Delete|Rename|Run"; @@ -468,11 +476,13 @@ void UFSDelete(void) { // UfsDelete sdcard or flashfs file if only one of them available // UfsDelete2 flashfs file if available if (XdrvMailbox.data_len > 0) { + char fname[UFS_FILENAME_SIZE]; + UfsFilename(fname, XdrvMailbox.data); bool result = false; if (ffs_type && (ffs_type != ufs_type) && (2 == XdrvMailbox.index)) { - result = TfsDeleteFile(XdrvMailbox.data); + result = TfsDeleteFile(fname); } else { - result = (ufs_type && ufsp->remove(XdrvMailbox.data)); + result = (ufs_type && ufsp->remove(fname)); } if (!result) { ResponseCmndFailed(); @@ -487,13 +497,17 @@ void UFSRename(void) { // UfsRename2 flashfs file if available if (XdrvMailbox.data_len > 0) { bool result = false; - const char *fname1 = strtok(XdrvMailbox.data, ","); - const char *fname2 = strtok(nullptr, ","); + char *fname1 = strtok(XdrvMailbox.data, ","); + char *fname2 = strtok(nullptr, ","); if (fname1 && fname2) { + char fname_old[UFS_FILENAME_SIZE]; + UfsFilename(fname_old, fname1); + char fname_new[UFS_FILENAME_SIZE]; + UfsFilename(fname_new, fname2); if (ffs_type && (ffs_type != ufs_type) && (2 == XdrvMailbox.index)) { - result = TfsRenameFile(fname1, fname2); + result = TfsRenameFile(fname_old, fname_new); } else { - result = (ufs_type && ufsp->rename(fname1, fname2)); + result = (ufs_type && ufsp->rename(fname_old, fname_new)); } } if (!result) { @@ -506,7 +520,8 @@ void UFSRename(void) { void UFSRun(void) { if (XdrvMailbox.data_len > 0) { - if (UfsExecuteCommandFile(XdrvMailbox.data)) { + char fname[UFS_FILENAME_SIZE]; + if (UfsExecuteCommandFile(UfsFilename(fname, XdrvMailbox.data))) { ResponseClear(); } else { ResponseCmndFailed(); diff --git a/tasmota/xdsp_04_ili9341.ino b/tasmota/xdsp_04_ili9341.ino index ca06dc244..2b1a31a73 100644 --- a/tasmota/xdsp_04_ili9341.ino +++ b/tasmota/xdsp_04_ili9341.ino @@ -65,7 +65,7 @@ void ILI9341_InitDriver() #ifdef USE_DISPLAY_ILI9341 uint8_t dtype = 1; #else - uint8_t dtype = 2; + uint8_t dtype = 3; // sign ili9342 with variable spi pins #endif // USE_DISPLAY_ILI9341 // default colors diff --git a/tasmota/xsns_62_esp32_mi_ble.ino b/tasmota/xsns_62_esp32_mi_ble.ino index 44a475942..8b7b760ba 100644 --- a/tasmota/xsns_62_esp32_mi_ble.ino +++ b/tasmota/xsns_62_esp32_mi_ble.ino @@ -1941,9 +1941,21 @@ void MI32EverySecond(bool restart){ MI32TimeoutSensors(); if (MI32.option.MQTTType == 0){ + // show tas style sensor MQTT MI32ShowSomeSensors(); - } else { + } + + if (MI32.option.MQTTType == 1 +#ifdef USE_HOME_ASSISTANT + || + Settings.flag.hass_discovery +#endif + ) { + // these two share a counter + // discovery only sent if hass_discovery MI32DiscoveryOneMISensor(); + // show independent style sensor MQTT + // note - if !MQTTType, then this is IN ADDITION to 'normal' MI32ShowOneMISensor(); }