Update change logs

This commit is contained in:
Theo Arends committed 2026-02-14 11:43:06 +01:00
1 parent ab7814bd60
commit ece10cc3ca
5 files changed
+21 -46

No files matched your search

+1 -2
View File
@@ -33,8 +33,6 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| USE_SUNRISE | x | x / x | x | x | x | x |
| USE_RULES | x | x / x | x | x | x | x |
| USE_SCRIPT | - | - / - | - | - | - | - |
| USE_EXPRESSION | - | x / x | - | - | - | - |
| SUPPORT_IF_STATEMENT | - | x / x | - | - | - | - |
| USE_HOTPLUG | - | - / - | - | - | - | - |
| USE_INFLUXDB | - | - / x | - | - | - | - |
| USE_PROMETHEUS | - | - / - | - | - | - | - |
@@ -114,6 +112,7 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| -USE_PCF85063 | - | - / - | - | - | - | - |
| -USE_PCF85363 | - | - / - | - | - | - | - |
| -USE_RX8010 | - | - / - | - | - | - | - |
| -USE_RX8025 | - | - / - | - | - | - | - |
| -USE_RX8030 | - | - / - | - | - | - | - |
| USE_SHT | - | - / x | - | x | - | - |
| USE_HTU | - | - / x | - | x | - | - |
+2 -1
View File
@@ -5,7 +5,8 @@ All notable changes to this project will be documented in this file.
## [15.2.0.5]
### Added
- Support SPI bus2 for Ethernet and SDCard (#24433)
- ESP32 support SPI bus2 for Ethernet and SDCard (#24433)
- Support for RX8025T RTC (#24445)
### Breaking Changed
+2 -1
View File
@@ -116,7 +116,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm
### Added
- Support for TCA9554 8-bit I/O expander mutually exclusive with PCA9557
- Support for Adafruit I2C QT Rotary Encoder [#24270](https://github.com/arendst/Tasmota/issues/24270)
- Support SPI bus2 for Ethernet and SDCard [#24433](https://github.com/arendst/Tasmota/issues/24433)
- Support for RX8025T RTC [#24445](https://github.com/arendst/Tasmota/issues/24445)
- ESP32 support SPI bus2 for Ethernet and SDCard [#24433](https://github.com/arendst/Tasmota/issues/24433)
- Improv USB CDC connected devices
- Dingtian `SetOption81 1` to invert input and `SetOption133 1` to invert output [#24364](https://github.com/arendst/Tasmota/issues/24364)
- Zigbee support for `int24` type [#24334](https://github.com/arendst/Tasmota/issues/24334)
-2
View File
@@ -543,8 +543,6 @@
// Select none or only one of the below defines USE_RULES or USE_SCRIPT
#define USE_RULES // Add support for rules (+13k code, +768 bytes mem)
#define SUPPORT_MQTT_EVENT // Support trigger event with MQTT subscriptions (+1k8 code)
#define USE_EXPRESSION // Add support for expression evaluation in rules (+1k7 code)
#define SUPPORT_IF_STATEMENT // Add support for IF statement in rules (+2k7)
// #define USER_RULE1 "<Any rule1 data>" // Add rule1 data saved at initial firmware load or when command reset is executed
// #define USER_RULE2 "<Any rule2 data>" // Add rule2 data saved at initial firmware load or when command reset is executed
// #define USER_RULE3 "<Any rule3 data>" // Add rule3 data saved at initial firmware load or when command reset is executed
+16 -40
View File
@@ -113,27 +113,25 @@
#define MAXIMUM_COMPARE_OPERATOR COMPARE_OPERATOR_STRING_NOT_CONTAINS
const char kCompareOperators[] PROGMEM = "=\0>\0<\0|\0==!=>=<=$>$<$|$!$^";
#ifdef USE_EXPRESSION
const char kExpressionOperators[] PROGMEM = "+-*/%^\0";
#define EXPRESSION_OPERATOR_ADD 0
#define EXPRESSION_OPERATOR_SUBTRACT 1
#define EXPRESSION_OPERATOR_MULTIPLY 2
#define EXPRESSION_OPERATOR_DIVIDEDBY 3
#define EXPRESSION_OPERATOR_MODULO 4
#define EXPRESSION_OPERATOR_POWER 5
const char kExpressionOperators[] PROGMEM = "+-*/%^\0";
#define EXPRESSION_OPERATOR_ADD 0
#define EXPRESSION_OPERATOR_SUBTRACT 1
#define EXPRESSION_OPERATOR_MULTIPLY 2
#define EXPRESSION_OPERATOR_DIVIDEDBY 3
#define EXPRESSION_OPERATOR_MODULO 4
#define EXPRESSION_OPERATOR_POWER 5
const uint8_t kExpressionOperatorsPriorities[] PROGMEM = {1, 1, 2, 2, 3, 4};
#define MAX_EXPRESSION_OPERATOR_PRIORITY 4
const uint8_t kExpressionOperatorsPriorities[] PROGMEM = {1, 1, 2, 2, 3, 4};
#define MAX_EXPRESSION_OPERATOR_PRIORITY 4
#define LOGIC_OPERATOR_AND 1
#define LOGIC_OPERATOR_OR 2
#define LOGIC_OPERATOR_AND 1
#define LOGIC_OPERATOR_OR 2
#define IF_BLOCK_INVALID -1
#define IF_BLOCK_ANY 0
#define IF_BLOCK_ELSEIF 1
#define IF_BLOCK_ELSE 2
#define IF_BLOCK_ENDIF 3
#endif // USE_EXPRESSION
#define IF_BLOCK_INVALID -1
#define IF_BLOCK_ANY 0
#define IF_BLOCK_ELSEIF 1
#define IF_BLOCK_ELSE 2
#define IF_BLOCK_ENDIF 3
// Define to indicate that rules are always enabled
#ifdef USE_BERRY
@@ -148,9 +146,7 @@ const char kRulesCommands[] PROGMEM = "|" // No prefix
#ifdef SUPPORT_MQTT_EVENT
"|" D_CMND_SUBSCRIBE "|" D_CMND_UNSUBSCRIBE
#endif
#ifdef SUPPORT_IF_STATEMENT
"|" D_CMND_IF
#endif
;
void (* const RulesCommand[])(void) PROGMEM = {
@@ -159,9 +155,7 @@ void (* const RulesCommand[])(void) PROGMEM = {
#ifdef SUPPORT_MQTT_EVENT
, &CmndSubscribe, &CmndUnsubscribe
#endif
#ifdef SUPPORT_IF_STATEMENT
, &CmndIf
#endif
};
struct RULES {
@@ -824,10 +818,8 @@ bool RuleSetProcess(uint8_t rule_set, String &event_saved)
// Response_P(S_JSON_COMMAND_SVALUE, D_CMND_RULE, D_JSON_INITIATED);
// MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_RULE));
#ifdef SUPPORT_IF_STATEMENT
char *pCmd = command;
RulesPreprocessCommand(pCmd); // Do pre-process for IF statement
#endif // SUPPORT_IF_STATEMENT
ExecuteCommand(command, SRC_RULE);
serviced = true;
}
@@ -1355,7 +1347,6 @@ void CmndUnsubscribe(void) {
#endif // SUPPORT_MQTT_EVENT
#ifdef USE_EXPRESSION
/********************************************************************************************/
/*
* Looking for matched bracket - ")"
@@ -1731,9 +1722,7 @@ float evaluateExpression(const char * expression, unsigned int len) {
return object_values[0];
}
#endif // USE_EXPRESSION
#ifdef SUPPORT_IF_STATEMENT
/********************************************************************************************/
/*
* Process an if command
@@ -2238,7 +2227,6 @@ void RulesPreprocessCommand(char *pCommands)
}
return;
}
#endif // SUPPORT_IF_STATEMENT
/*********************************************************************************************\
* Commands
@@ -2350,12 +2338,8 @@ void CmndRuleTimer(void)
i = 1;
max_i = MAX_RULE_TIMERS;
}
#ifdef USE_EXPRESSION
float timer_set = evaluateExpression(XdrvMailbox.data, XdrvMailbox.data_len);
timer_set = (timer_set > 0) ? millis() + (1000 * timer_set) : 0;
#else
uint32_t timer_set = (XdrvMailbox.payload > 0) ? millis() + (1000 * XdrvMailbox.payload) : 0;
#endif // USE_EXPRESSION
if (XdrvMailbox.data_len > 0) {
for ( ; i <= max_i ; ++i ) {
Rules.timer[i -1] = timer_set;
@@ -2390,15 +2374,11 @@ void CmndVariable(void)
ResponseJsonEnd();
} else {
if (XdrvMailbox.data_len > 0) {
#ifdef USE_EXPRESSION
if (XdrvMailbox.data[0] == '=') { // Spaces already been skipped in data
dtostrfd(evaluateExpression(XdrvMailbox.data + 1, XdrvMailbox.data_len - 1), Settings->flag2.calc_resolution, rules_vars[XdrvMailbox.index -1]);
} else {
strlcpy(rules_vars[XdrvMailbox.index -1], ('"' == XdrvMailbox.data[0]) ? "" : XdrvMailbox.data, sizeof(rules_vars[XdrvMailbox.index -1]));
}
#else
strlcpy(rules_vars[XdrvMailbox.index -1], ('"' == XdrvMailbox.data[0]) ? "" : XdrvMailbox.data, sizeof(rules_vars[XdrvMailbox.index -1]));
#endif // USE_EXPRESSION
bitSet(Rules.vars_event, XdrvMailbox.index -1);
}
ResponseCmndIdxChar(rules_vars[XdrvMailbox.index -1]);
@@ -2413,7 +2393,6 @@ void CmndMemory(void)
ResponseCmndAll(SET_MEM1, MAX_RULE_MEMS);
} else {
if (XdrvMailbox.data_len > 0) {
#ifdef USE_EXPRESSION
if (XdrvMailbox.data[0] == '=') { // Spaces already been skipped in data
char rules_mem[FLOATSZ];
dtostrfd(evaluateExpression(XdrvMailbox.data + 1, XdrvMailbox.data_len - 1), Settings->flag2.calc_resolution, rules_mem);
@@ -2421,9 +2400,6 @@ void CmndMemory(void)
} else {
SettingsUpdateText(SET_MEM1 + XdrvMailbox.index -1, ('"' == XdrvMailbox.data[0]) ? "" : XdrvMailbox.data);
}
#else
SettingsUpdateText(SET_MEM1 + XdrvMailbox.index -1, ('"' == XdrvMailbox.data[0]) ? "" : XdrvMailbox.data);
#endif // USE_EXPRESSION
bitSet(Rules.mems_event, XdrvMailbox.index -1);
}
ResponseCmndIdxChar(SettingsText(SET_MEM1 + XdrvMailbox.index -1));