mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-07-28 04:07:47 +00:00
Merge pull request #4046 from tonhuisman/feature/sysvars-add-systm_0-and-systm_sp
[Sysvars] Add %systm_hm_0%, %systm_hm_sp%, %systm_hm_am_0%, %systm_hm_am_sp%, %systime_am_0% and %systime_am_sp%
This commit is contained in:
@@ -46,17 +46,41 @@ More uses of these system variables can be seen in the rules section and formula
|
||||
- Current time if NTP is enabled (hh:mm:ss, hh:mm prior to v2.0).
|
||||
-
|
||||
* - ``%systm_hm%``
|
||||
- 01:23
|
||||
- 1:23
|
||||
- Current time if NTP is enabled (hh:mm "old behavior").
|
||||
-
|
||||
* - ``%systm_hm_0%``
|
||||
- 01:23
|
||||
- Current time if NTP is enabled (0-prefixed if hour < 10).
|
||||
-
|
||||
* - ``%systm_hm_sp%``
|
||||
- ` 1:23`
|
||||
- Current time if NTP is enabled (space-prefixed if hour < 10).
|
||||
-
|
||||
* - ``%systime_am%``
|
||||
- 1:23:54 AM
|
||||
- Current AM/PM time if NTP is enabled (hh:mm:ss xM).
|
||||
-
|
||||
* - ``%systime_am_0%``
|
||||
- 01:23:54 AM
|
||||
- Current AM/PM time if NTP is enabled (0-prefixed if hour < 10).
|
||||
-
|
||||
* - ``%systime_am_sp%``
|
||||
- ` 1:23:54 AM`
|
||||
- Current AM/PM time if NTP is enabled (space-prefixed if hour < 10).
|
||||
-
|
||||
* - ``%systm_hm_am%``
|
||||
- 1:23 AM
|
||||
- Current AM/PM time if NTP is enabled (hh:mm:ss xM).
|
||||
-
|
||||
* - ``%systm_hm_am_0%``
|
||||
- 01:23 AM
|
||||
- Current AM/PM time if NTP is enabled (0-prefixed if hour < 10).
|
||||
-
|
||||
* - ``%systm_hm_am_sp%``
|
||||
- ` 1:23 AM`
|
||||
- Current AM/PM time if NTP is enabled (space-prefixed if hour < 10).
|
||||
-
|
||||
* - ``%lcltime%``
|
||||
- 2020-03-16 01:23:54
|
||||
- Current date/time if NTP is enabled (YYYY-MM-DD hh:mm:ss).
|
||||
|
||||
@@ -493,42 +493,45 @@ String ESPEasy_time::getDateString(const struct tm& ts, char delimiter) {
|
||||
return DateString;
|
||||
}
|
||||
|
||||
String ESPEasy_time::getTimeString(char delimiter, bool show_seconds /*=true*/) const
|
||||
String ESPEasy_time::getTimeString(char delimiter, bool show_seconds /*=true*/, char hour_prefix /*='\0'*/) const
|
||||
{
|
||||
return getTimeString(tm, delimiter, false, show_seconds);
|
||||
return getTimeString(tm, delimiter, false, show_seconds, hour_prefix);
|
||||
}
|
||||
|
||||
String ESPEasy_time::getTimeString_ampm(char delimiter, bool show_seconds /*=true*/) const
|
||||
String ESPEasy_time::getTimeString_ampm(char delimiter, bool show_seconds /*=true*/, char hour_prefix /*='\0'*/) const
|
||||
{
|
||||
return getTimeString(tm, delimiter, true, show_seconds);
|
||||
return getTimeString(tm, delimiter, true, show_seconds, hour_prefix);
|
||||
}
|
||||
|
||||
// returns the current Time separated by the given delimiter
|
||||
// time format example with ':' delimiter: 23:59:59 (HH:MM:SS)
|
||||
String ESPEasy_time::getTimeString(const struct tm& ts, char delimiter, bool am_pm, bool show_seconds)
|
||||
String ESPEasy_time::getTimeString(const struct tm& ts, char delimiter, bool am_pm, bool show_seconds, char hour_prefix /*='\0'*/)
|
||||
{
|
||||
char TimeString[20]; // 19 digits plus the null char
|
||||
char hour_prefix_s[2] = { 0 };
|
||||
|
||||
if (am_pm) {
|
||||
uint8_t hour(ts.tm_hour % 12);
|
||||
|
||||
if (hour == 0) { hour = 12; }
|
||||
const char a_or_p = ts.tm_hour < 12 ? 'A' : 'P';
|
||||
if (hour < 10) { hour_prefix_s[0] = hour_prefix; }
|
||||
|
||||
if (show_seconds) {
|
||||
sprintf_P(TimeString, PSTR("%d%c%02d%c%02d %cM"),
|
||||
hour, delimiter, ts.tm_min, delimiter, ts.tm_sec, a_or_p);
|
||||
sprintf_P(TimeString, PSTR("%s%d%c%02d%c%02d %cM"),
|
||||
hour_prefix_s, hour, delimiter, ts.tm_min, delimiter, ts.tm_sec, a_or_p);
|
||||
} else {
|
||||
sprintf_P(TimeString, PSTR("%d%c%02d %cM"),
|
||||
hour, delimiter, ts.tm_min, a_or_p);
|
||||
sprintf_P(TimeString, PSTR("%s%d%c%02d %cM"),
|
||||
hour_prefix_s, hour, delimiter, ts.tm_min, a_or_p);
|
||||
}
|
||||
} else {
|
||||
if (show_seconds) {
|
||||
sprintf_P(TimeString, PSTR("%02d%c%02d%c%02d"),
|
||||
ts.tm_hour, delimiter, ts.tm_min, delimiter, ts.tm_sec);
|
||||
} else {
|
||||
sprintf_P(TimeString, PSTR("%d%c%02d"),
|
||||
ts.tm_hour, delimiter, ts.tm_min);
|
||||
if (ts.tm_hour < 10) { hour_prefix_s[0] = hour_prefix; }
|
||||
sprintf_P(TimeString, PSTR("%s%d%c%02d"),
|
||||
hour_prefix_s, ts.tm_hour, delimiter, ts.tm_min);
|
||||
}
|
||||
}
|
||||
return TimeString;
|
||||
|
||||
@@ -67,13 +67,13 @@ static String getDateString(const struct tm& ts, char delimiter);
|
||||
|
||||
// Formats the current Time
|
||||
// Default time format example: 235959 (HHMMSS)
|
||||
String getTimeString(char delimiter = '\0', bool show_seconds=true) const;
|
||||
String getTimeString(char delimiter = '\0', bool show_seconds = true, char hour_prefix = '\0') const;
|
||||
|
||||
String getTimeString_ampm(char delimiter = '\0', bool show_seconds=true) const;
|
||||
String getTimeString_ampm(char delimiter = '\0', bool show_seconds = true, char hour_prefix = '\0') const;
|
||||
|
||||
// returns the current Time separated by the given delimiter
|
||||
// time format example with ':' delimiter: 23:59:59 (HH:MM:SS)
|
||||
static String getTimeString(const struct tm& ts, char delimiter, bool am_pm, bool show_seconds);
|
||||
static String getTimeString(const struct tm& ts, char delimiter, bool am_pm, bool show_seconds, char hour_prefix = '\0');
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -169,8 +169,14 @@ String SystemVariables::getSystemVariable(SystemVariables::Enum enumval) {
|
||||
case SYSSEC_D: return String(((node_time.hour() * 60) + node_time.minute()) * 60 + node_time.second());
|
||||
case SYSTIME: return node_time.getTimeString(':');
|
||||
case SYSTIME_AM: return node_time.getTimeString_ampm(':');
|
||||
case SYSTIME_AM_0: return node_time.getTimeString_ampm(':', true, '0');
|
||||
case SYSTIME_AM_SP: return node_time.getTimeString_ampm(':', true, ' ');
|
||||
case SYSTM_HM: return node_time.getTimeString(':', false);
|
||||
case SYSTM_HM_0: return node_time.getTimeString(':', false, '0');
|
||||
case SYSTM_HM_SP: return node_time.getTimeString(':', false, ' ');
|
||||
case SYSTM_HM_AM: return node_time.getTimeString_ampm(':', false);
|
||||
case SYSTM_HM_AM_0: return node_time.getTimeString_ampm(':', false, '0');
|
||||
case SYSTM_HM_AM_SP: return node_time.getTimeString_ampm(':', false, ' ');
|
||||
case SYSWEEKDAY: return String(node_time.weekday());
|
||||
case SYSWEEKDAY_S: return node_time.weekday_str();
|
||||
case SYSYEAR_0:
|
||||
@@ -355,8 +361,14 @@ const __FlashStringHelper * SystemVariables::toString(SystemVariables::Enum enum
|
||||
case Enum::SYSSTACK: return F("%sysstack%");
|
||||
case Enum::SYSTIME: return F("%systime%");
|
||||
case Enum::SYSTIME_AM: return F("%systime_am%");
|
||||
case Enum::SYSTIME_AM_0: return F("%systime_am_0%");
|
||||
case Enum::SYSTIME_AM_SP: return F("%systime_am_sp%");
|
||||
case Enum::SYSTM_HM: return F("%systm_hm%");
|
||||
case Enum::SYSTM_HM_0: return F("%systm_hm_0%");
|
||||
case Enum::SYSTM_HM_SP: return F("%systm_hm_sp%");
|
||||
case Enum::SYSTM_HM_AM: return F("%systm_hm_am%");
|
||||
case Enum::SYSTM_HM_AM_0: return F("%systm_hm_am_0%");
|
||||
case Enum::SYSTM_HM_AM_SP: return F("%systm_hm_am_sp%");
|
||||
case Enum::SYSWEEKDAY: return F("%sysweekday%");
|
||||
case Enum::SYSWEEKDAY_S: return F("%sysweekday_s%");
|
||||
case Enum::SYSYEAR: return F("%sysyear%");
|
||||
|
||||
@@ -69,8 +69,14 @@ public:
|
||||
SYSSTACK,
|
||||
SYSTIME,
|
||||
SYSTIME_AM,
|
||||
SYSTIME_AM_0,
|
||||
SYSTIME_AM_SP,
|
||||
SYSTM_HM,
|
||||
SYSTM_HM_0,
|
||||
SYSTM_HM_SP,
|
||||
SYSTM_HM_AM,
|
||||
SYSTM_HM_AM_0,
|
||||
SYSTM_HM_AM_SP,
|
||||
SYSWEEKDAY,
|
||||
SYSWEEKDAY_S,
|
||||
SYSYEAR,
|
||||
|
||||
@@ -100,9 +100,15 @@ void handle_sysvars() {
|
||||
addSysVar_enum_html(SystemVariables::LCLTIME);
|
||||
addSysVar_enum_html(SystemVariables::LCLTIME_AM);
|
||||
addSysVar_enum_html(SystemVariables::SYSTM_HM);
|
||||
addSysVar_enum_html(SystemVariables::SYSTM_HM_0);
|
||||
addSysVar_enum_html(SystemVariables::SYSTM_HM_SP);
|
||||
addSysVar_enum_html(SystemVariables::SYSTM_HM_AM);
|
||||
addSysVar_enum_html(SystemVariables::SYSTM_HM_AM_0);
|
||||
addSysVar_enum_html(SystemVariables::SYSTM_HM_AM_SP);
|
||||
addSysVar_enum_html(SystemVariables::SYSTIME);
|
||||
addSysVar_enum_html(SystemVariables::SYSTIME_AM);
|
||||
addSysVar_enum_html(SystemVariables::SYSTIME_AM_0);
|
||||
addSysVar_enum_html(SystemVariables::SYSTIME_AM_SP);
|
||||
addSysVar_enum_html(SystemVariables::SYSBUILD_DATE);
|
||||
addSysVar_enum_html(SystemVariables::SYSBUILD_TIME);
|
||||
addSysVar_enum_html(SystemVariables::SYSBUILD_FILENAME);
|
||||
|
||||
Reference in New Issue
Block a user