mirror of https://github.com/arendst/Tasmota.git
Optimize RAM for expression
Optimize RAM for expression and add two more constant variables (#5275)
This commit is contained in:
parent
06c97c4e19
commit
280dd25a8b
|
@ -181,7 +181,7 @@ uint32_t UpTime(void)
|
|||
}
|
||||
}
|
||||
|
||||
uint32_t GetMinutesUptime(void)
|
||||
uint32_t MinutesUptime(void)
|
||||
{
|
||||
return (UpTime() / 60);
|
||||
}
|
||||
|
@ -191,7 +191,7 @@ String GetUptime(void)
|
|||
return GetDuration(UpTime());
|
||||
}
|
||||
|
||||
uint32_t GetMinutesPastMidnight(void)
|
||||
uint32_t MinutesPastMidnight(void)
|
||||
{
|
||||
uint32_t minutes = 0;
|
||||
|
||||
|
|
|
@ -232,7 +232,7 @@ String GetSun(uint8_t dawn)
|
|||
return String(stime);
|
||||
}
|
||||
|
||||
uint16_t GetSunMinutes(uint8_t dawn)
|
||||
uint16_t SunMinutes(uint8_t dawn)
|
||||
{
|
||||
uint8_t hour[2];
|
||||
uint8_t minute[2];
|
||||
|
|
|
@ -185,11 +185,11 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule)
|
|||
}
|
||||
snprintf_P(stemp, sizeof(stemp), PSTR("%%TIME%%"));
|
||||
if (rule_param.startsWith(stemp)) {
|
||||
rule_param = String(GetMinutesPastMidnight());
|
||||
rule_param = String(MinutesPastMidnight());
|
||||
}
|
||||
snprintf_P(stemp, sizeof(stemp), PSTR("%%UPTIME%%"));
|
||||
if (rule_param.startsWith(stemp)) {
|
||||
rule_param = String(GetMinutesUptime());
|
||||
rule_param = String(MinutesUptime());
|
||||
}
|
||||
snprintf_P(stemp, sizeof(stemp), PSTR("%%TIMESTAMP%%"));
|
||||
if (rule_param.startsWith(stemp)) {
|
||||
|
@ -198,11 +198,11 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule)
|
|||
#if defined(USE_TIMERS) && defined(USE_SUNRISE)
|
||||
snprintf_P(stemp, sizeof(stemp), PSTR("%%SUNRISE%%"));
|
||||
if (rule_param.startsWith(stemp)) {
|
||||
rule_param = String(GetSunMinutes(0));
|
||||
rule_param = String(SunMinutes(0));
|
||||
}
|
||||
snprintf_P(stemp, sizeof(stemp), PSTR("%%SUNSET%%"));
|
||||
if (rule_param.startsWith(stemp)) {
|
||||
rule_param = String(GetSunMinutes(1));
|
||||
rule_param = String(SunMinutes(1));
|
||||
}
|
||||
#endif // USE_TIMERS and USE_SUNRISE
|
||||
rule_param.toUpperCase();
|
||||
|
@ -347,12 +347,12 @@ bool RuleSetProcess(uint8_t rule_set, String &event_saved)
|
|||
snprintf_P(stemp, sizeof(stemp), PSTR("%%mem%d%%"), i +1);
|
||||
commands.replace(stemp, Settings.mems[i]);
|
||||
}
|
||||
commands.replace(F("%time%"), String(GetMinutesPastMidnight()));
|
||||
commands.replace(F("%uptime%"), String(GetMinutesUptime()));
|
||||
commands.replace(F("%time%"), String(MinutesPastMidnight()));
|
||||
commands.replace(F("%uptime%"), String(MinutesUptime()));
|
||||
commands.replace(F("%timestamp%"), GetDateAndTime(DT_LOCAL).c_str());
|
||||
#if defined(USE_TIMERS) && defined(USE_SUNRISE)
|
||||
commands.replace(F("%sunrise%"), String(GetSunMinutes(0)));
|
||||
commands.replace(F("%sunset%"), String(GetSunMinutes(1)));
|
||||
commands.replace(F("%sunrise%"), String(SunMinutes(0)));
|
||||
commands.replace(F("%sunset%"), String(SunMinutes(1)));
|
||||
#endif // USE_TIMERS and USE_SUNRISE
|
||||
|
||||
char command[commands.length() +1];
|
||||
|
@ -505,8 +505,8 @@ void RulesEvery50ms(void)
|
|||
json_event[0] = '\0';
|
||||
switch (i) {
|
||||
case 0: strncpy_P(json_event, PSTR("{\"System\":{\"Boot\":1}}"), sizeof(json_event)); break;
|
||||
case 1: snprintf_P(json_event, sizeof(json_event), PSTR("{\"Time\":{\"Initialized\":%d}}"), GetMinutesPastMidnight()); break;
|
||||
case 2: snprintf_P(json_event, sizeof(json_event), PSTR("{\"Time\":{\"Set\":%d}}"), GetMinutesPastMidnight()); break;
|
||||
case 1: snprintf_P(json_event, sizeof(json_event), PSTR("{\"Time\":{\"Initialized\":%d}}"), MinutesPastMidnight()); break;
|
||||
case 2: snprintf_P(json_event, sizeof(json_event), PSTR("{\"Time\":{\"Set\":%d}}"), MinutesPastMidnight()); break;
|
||||
case 3: strncpy_P(json_event, PSTR("{\"MQTT\":{\"Connected\":1}}"), sizeof(json_event)); break;
|
||||
case 4: strncpy_P(json_event, PSTR("{\"MQTT\":{\"Disconnected\":1}}"), sizeof(json_event)); break;
|
||||
case 5: strncpy_P(json_event, PSTR("{\"WIFI\":{\"Connected\":1}}"), sizeof(json_event)); break;
|
||||
|
@ -549,7 +549,7 @@ void RulesEverySecond(void)
|
|||
if (RtcTime.valid) {
|
||||
if ((uptime > 60) && (RtcTime.minute != rules_last_minute)) { // Execute from one minute after restart every minute only once
|
||||
rules_last_minute = RtcTime.minute;
|
||||
snprintf_P(json_event, sizeof(json_event), PSTR("{\"Time\":{\"Minute\":%d}}"), GetMinutesPastMidnight());
|
||||
snprintf_P(json_event, sizeof(json_event), PSTR("{\"Time\":{\"Minute\":%d}}"), MinutesPastMidnight());
|
||||
RulesProcessEvent(json_event);
|
||||
}
|
||||
}
|
||||
|
@ -625,7 +625,7 @@ bool findNextNumber(char * &pNumber, double &value)
|
|||
*/
|
||||
bool findNextVariableValue(char * &pVarname, double &value)
|
||||
{
|
||||
bool succeed = false;
|
||||
bool succeed = true;
|
||||
value = 0;
|
||||
String sVarName = "";
|
||||
while (*pVarname) {
|
||||
|
@ -637,32 +637,32 @@ bool findNextVariableValue(char * &pVarname, double &value)
|
|||
}
|
||||
}
|
||||
sVarName.toUpperCase();
|
||||
if (sVarName.startsWith("VAR")) {
|
||||
if (sVarName.startsWith(F("VAR"))) {
|
||||
int index = sVarName.substring(3).toInt();
|
||||
if (index > 0 && index <= MAX_RULE_VARS) {
|
||||
value = CharToDouble(vars[index -1]);
|
||||
succeed = true;
|
||||
}
|
||||
} else if (sVarName.startsWith("MEM")) {
|
||||
} else if (sVarName.startsWith(F("MEM"))) {
|
||||
int index = sVarName.substring(3).toInt();
|
||||
if (index > 0 && index <= MAX_RULE_MEMS) {
|
||||
value = CharToDouble(Settings.mems[index -1]);
|
||||
succeed = true;
|
||||
}
|
||||
} else if (sVarName.equals("TIME")) {
|
||||
value = GetMinutesPastMidnight();
|
||||
succeed = true;
|
||||
} else if (sVarName.equals("UPTIME")) {
|
||||
value = GetMinutesUptime();
|
||||
succeed = true;
|
||||
} else if (sVarName.equals(F("TIME"))) {
|
||||
value = MinutesPastMidnight();
|
||||
} else if (sVarName.equals(F("UPTIME"))) {
|
||||
value = MinutesUptime();
|
||||
} else if (sVarName.equals(F("UTCTIME"))) {
|
||||
value = UtcTime();
|
||||
} else if (sVarName.equals(F("LOCALTIME"))) {
|
||||
value = LocalTime();
|
||||
#if defined(USE_TIMERS) && defined(USE_SUNRISE)
|
||||
} else if (sVarName.equals("SUNRISE")) {
|
||||
value = GetSunMinutes(0);
|
||||
succeed = true;
|
||||
} else if (sVarName.equals("SUNSET")) {
|
||||
value = GetSunMinutes(1);
|
||||
succeed = true;
|
||||
} else if (sVarName.equals(F("SUNRISE"))) {
|
||||
value = SunMinutes(0);
|
||||
} else if (sVarName.equals(F("SUNSET"))) {
|
||||
value = SunMinutes(1);
|
||||
#endif
|
||||
} else {
|
||||
succeed = false;
|
||||
}
|
||||
|
||||
return succeed;
|
||||
|
|
Loading…
Reference in New Issue