mirror of
https://github.com/arendst/Tasmota.git
synced 2026-10-27 06:22:25 +00:00
Update change logs
This commit is contained in:
1 parent
ab7814bd60
commit
ece10cc3ca
5 files changed
+21
-46
No files matched your search
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in new issue
Block a user