diff --git a/src/modules/sensors/RTC/RTC.cpp b/src/modules/sensors/RTC/RTC.cpp index b9994c5c..ea1dee8b 100644 --- a/src/modules/sensors/RTC/RTC.cpp +++ b/src/modules/sensors/RTC/RTC.cpp @@ -63,6 +63,42 @@ class RTC : public IoTItem { valTmp.valS = _watch->gettime(param[0].valS + " "); return valTmp; } + } else if (command == "setUnixTime") { + if (param.size() == 1) { + long ut = strtoul(param[0].valS.c_str(), nullptr, 10); + _watch->settimeUnix(ut); + return {}; + } + } else if (command == "setTime") { + if (param.size() == 6) { + _watch->settime(param[0].valD, param[1].valD, param[2].valD, param[3].valD, param[4].valD, param[5].valD); //сек, мин, час, день, мес, год + return {}; + } + } else if (command == "getTimeFloat") { + if (param.size() == 1) { + IoTValue valTmp; + _watch->gettime(); + valTmp.isDecimal = true; + String type = param[0].valS; + if (type == "H") { + valTmp.valD = static_cast(_watch->Hours); + } else if (type == "i") { + valTmp.valD = static_cast(_watch->minutes); + } else if (type == "s") { + valTmp.valD = static_cast(_watch->seconds); + } else if (type == "w") { + valTmp.valD = static_cast(_watch->weekday); + } else if (type == "d") { + valTmp.valD = static_cast(_watch->day); + } else if (type == "m") { + valTmp.valD = static_cast(_watch->month); + } else if (type == "Y") { + valTmp.valD = static_cast(_watch->year); + } else { + return {}; // Если переданный тип не поддерживается + } + return valTmp; + } } return {}; diff --git a/src/modules/sensors/RTC/modinfo.json b/src/modules/sensors/RTC/modinfo.json index 9e053b2d..f22250a1 100644 --- a/src/modules/sensors/RTC/modinfo.json +++ b/src/modules/sensors/RTC/modinfo.json @@ -54,6 +54,27 @@ "params": [ "Формат как у функции date() в PHP" ] + }, + { + "name": "setTime", + "descr": "Установить время через сценарии в формате сек, мин, час, день, мес, год.", + "params": [ + "сек", "мин", "час", "день", "мес", "год" + ] + }, + { + "name": "setUnixTime", + "descr": "Установить время через сценарий в формате юникстайм", + "params": [ + "rtc.setUnixTime('46489234') - параметр в виде строки" + ] + }, + { + "name": "getTimeFloat", + "descr": "Получить числовое значение времени по указанному формату", + "params": [ + "s - Вернуть секунды, i - Вернуть минуты, H - Вернуть часы в 24-часовом формате, d - Вернуть день месяца, w - Вернуть день недели, m - Вернуть месяц, Y - Вернуть год(4 знака)" + ] } ] },