diff --git a/.gitignore b/.gitignore index 3211e2985..96c63651b 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,7 @@ build build_output firmware.map firmware.asm -tasmota.ino.cpp +tasmota/tasmota.ino.cpp tasmota*.bin tasmota*.bin.gz tasmota*.map diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c52a3726..2b2be9567 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ All notable changes to this project will be documented in this file. - Command ``Gpios 255`` to show all possible GPIO configurations - Command ``SwitchText`` to change JSON switch names by barbudor (#9691) - Command ``SetOption114 1`` to detach Switches from Relays and enable MQTT action state for all the SwitchModes returning `{"Switch1":{"Action":"ON"}}` +- Command ``DimmerStep 1..50`` to change default dimmer up and down step of 10% by James Turton (#9733) - HM10 Beacon support and refactoring by Christian Baars (#9702) - Support for Hass discovery of TuyaMcu and Sonoff Ifan by Federico Leoni (#9727) - Initial support for iBeacons (Sensor52) on ESP32 using internal BLE by rvbglas (#9732) @@ -40,6 +41,9 @@ All notable changes to this project will be documented in this file. - Rule handling of JSON ``null`` regression from v8.5.0.1 (#9685) - Arilux RF remote detection regression from v8.3.0 +### Removed +- Auto output selection of decimal or hexadecimal data based on user input. Now only based on ``SetOption17`` + ## [9.0.0.2] - 20201025 ### Added - Support for Vietnamese language translations by Tâm.NT diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ca8a3182e..21114a339 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -59,6 +59,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.1.0 Imogen ### Added +- Command ``DimmerStep 1..50`` to change default dimmer up and down step of 10% by James Turton (#9733) - Command ``Gpios 255`` to show all possible GPIO configurations - Command ``NoDelay`` for immediate backlog command execution by Erik Montnemery (#9544) - Command ``ShutterChange`` to increment change position (#9594) @@ -133,3 +134,4 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Support for direct upgrade from Tasmota versions before v7.0 - Support for downgrade to versions before 9.0 keeping current GPIO configuration - Auto config update for all Friendlynames and Switchtopic from Tasmota versions before v8.0 +- Auto output selection of decimal or hexadecimal data based on user input. Now only based on ``SetOption17`` diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 4a2a03281..8bcd461ee 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -421,6 +421,7 @@ #define D_CMND_COLORTEMPERATURE "CT" #define D_CMND_DIMMER "Dimmer" #define D_CMND_DIMMER_RANGE "DimmerRange" +#define D_CMND_DIMMER_STEP "DimmerStep" #define D_CMND_HSBCOLOR "HSBColor" #define D_CMND_LED "Led" #define D_CMND_LEDTABLE "LedTable" diff --git a/tasmota/settings.h b/tasmota/settings.h index 2c47ce31f..806c3386f 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -635,8 +635,9 @@ struct { uint8_t shutter_mode; // F43 uint16_t energy_power_delta[3]; // F44 uint16_t shutter_pwmrange[2][MAX_SHUTTERS]; // F4A - - uint8_t free_f5a[89]; // F5A Decrement if adding new Setting variables just above and below + uint8_t dimmer_step; // F5A + + uint8_t free_f5b[88]; // F5B - Decrement if adding new Setting variables just above and below // Only 32 bit boundary variables below SysBitfield5 flag5; // FB4 diff --git a/tasmota/settings.ino b/tasmota/settings.ino index c1aa605e1..5ee75c2ce 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1015,6 +1015,8 @@ void SettingsDefaultSet2(void) Settings.dimmer_hw_max = DEFAULT_DIMMER_MAX; Settings.dimmer_hw_min = DEFAULT_DIMMER_MIN; + Settings.dimmer_step = DEFAULT_DIMMER_STEP; + // Display // Settings.display_model = 0; Settings.display_mode = 1; diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index fa6a4f9fc..cfb5315b7 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -219,6 +219,9 @@ String EthernetMacAddress(void); #ifndef DEFAULT_DIMMER_MIN #define DEFAULT_DIMMER_MIN 0 #endif +#ifndef DEFAULT_DIMMER_STEP +#define DEFAULT_DIMMER_STEP 10 +#endif #ifndef DEFAULT_LIGHT_DIMMER #define DEFAULT_LIGHT_DIMMER 10 #endif diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index 5f8491dc0..bfc6319b5 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -129,7 +129,7 @@ enum LightSchemes { LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_M const uint8_t LIGHT_COLOR_SIZE = 25; // Char array scolor size const char kLightCommands[] PROGMEM = "|" // No prefix - D_CMND_COLOR "|" D_CMND_COLORTEMPERATURE "|" D_CMND_DIMMER "|" D_CMND_DIMMER_RANGE "|" D_CMND_LEDTABLE "|" D_CMND_FADE "|" + 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 "|" D_CMND_WHITE "|" D_CMND_CHANNEL "|" D_CMND_HSBCOLOR #ifdef USE_LIGHT_PALETTE @@ -141,7 +141,7 @@ const char kLightCommands[] PROGMEM = "|" // No prefix "|UNDOCA" ; void (* const LightCommand[])(void) PROGMEM = { - &CmndColor, &CmndColorTemperature, &CmndDimmer, &CmndDimmerRange, &CmndLedTable, &CmndFade, + &CmndColor, &CmndColorTemperature, &CmndDimmer, &CmndDimmerRange, &CmndDimmerStep, &CmndLedTable, &CmndFade, &CmndRgbwwTable, &CmndScheme, &CmndSpeed, &CmndWakeup, &CmndWakeupDuration, &CmndWhite, &CmndChannel, &CmndHsbColor, #ifdef USE_LIGHT_PALETTE @@ -2556,9 +2556,12 @@ bool LightColorEntry(char *buffer, uint32_t buffer_length) entry_type = 1; // Hexadecimal } } - if (entry_type) { - Settings.flag.decimal_text = entry_type -1; // SetOption17 - Switch between decimal or hexadecimal output - } + +// Too much magic so removed since 9.0.0.3 +// if (entry_type) { +// Settings.flag.decimal_text = entry_type -1; // SetOption17 - Switch between decimal or hexadecimal output +// } + return (entry_type); } @@ -2829,8 +2832,8 @@ void CmndDimmer(void) // Dimmer1 0..100 - Change RGB Dimmer // Dimmer2 0..100 - Change W(W) Dimmer // Dimmer3 0..100 - Change both RGB and W(W) Dimmers with no fading - // Dimmer + - Incerement Dimmer in steps of 10 - // Dimmer - - Decrement Dimmer in steps of 10 + // Dimmer + - Incerement Dimmer in steps of DimmerStep + // Dimmer - - Decrement Dimmer in steps of DimmerStep uint32_t dimmer; if (XdrvMailbox.index == 3) { TasmotaGlobal.skip_light_fade = true; @@ -2848,9 +2851,9 @@ void CmndDimmer(void) // Handle +/- special command if (1 == XdrvMailbox.data_len) { if ('+' == XdrvMailbox.data[0]) { - XdrvMailbox.payload = (dimmer > 89) ? 100 : dimmer + 10; + XdrvMailbox.payload = (dimmer > (100 - Settings.dimmer_step - 1)) ? 100 : dimmer + Settings.dimmer_step; } else if ('-' == XdrvMailbox.data[0]) { - XdrvMailbox.payload = (dimmer < 11) ? 1 : dimmer - 10; + XdrvMailbox.payload = (dimmer < (Settings.dimmer_step + 1)) ? 1 : dimmer - Settings.dimmer_step; } } // If value is ok, change it, otherwise report old value @@ -2907,6 +2910,22 @@ void CmndDimmerRange(void) Response_P(PSTR("{\"" D_CMND_DIMMER_RANGE "\":{\"Min\":%d,\"Max\":%d}}"), Settings.dimmer_hw_min, Settings.dimmer_hw_max); } +void CmndDimmerStep(void) +{ + // DimmerStep - Show current dimmer step as used by Dimmer +/- + // DimmerStep 1..50 - Set dimmer step + if (XdrvMailbox.data_len > 0) { + if (XdrvMailbox.payload < 1) { + Settings.dimmer_step = 1; + } else if (XdrvMailbox.payload > 50) { + Settings.dimmer_step = 50; + } else { + Settings.dimmer_step = XdrvMailbox.payload; + } + } + ResponseCmndNumber(Settings.dimmer_step); +} + void CmndLedTable(void) { // LedTable - Show current LedTable state