refactor cronjobs
This commit is contained in:
@@ -71,10 +71,10 @@ namespace commands
|
||||
response["values"]["status"] = "valid";
|
||||
return response;
|
||||
}
|
||||
const ArduinoJson::JsonDocument Commands::setCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms)
|
||||
const ArduinoJson::JsonDocument Commands::addCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms)
|
||||
{
|
||||
ArduinoJson::JsonDocument response;
|
||||
response["cmd"] = "setCronJob";
|
||||
response["cmd"] = "addCronJob";
|
||||
|
||||
const auto &eventName = params["name"].as<std::string>();
|
||||
const auto &timeStr = params["cronExpr"].as<std::string>();
|
||||
@@ -84,7 +84,7 @@ namespace commands
|
||||
ArduinoJson::JsonDocument action;
|
||||
if (ArduinoJson::deserializeJson(action, actionStr) != ArduinoJson::DeserializationError::Ok)
|
||||
{
|
||||
LOG_ERROR("setCronJob unable to deserialize cron job [", actionStr.c_str(), "]");
|
||||
LOG_ERROR("addCronJob unable to deserialize cron job [", actionStr.c_str(), "]");
|
||||
response["values"]["status"] = "invalid";
|
||||
return response;
|
||||
}
|
||||
@@ -92,11 +92,31 @@ namespace commands
|
||||
auto &cron = Cron::getInstance(dev);
|
||||
if (!cron.addEvent(eventName, timeStr, action))
|
||||
{
|
||||
LOG_ERROR("setCronJob unable to add job [", actionStr.c_str(), "]");
|
||||
LOG_ERROR("addCronJob unable to add job [", actionStr.c_str(), "]");
|
||||
response["values"]["status"] = "invalid";
|
||||
return response;
|
||||
}
|
||||
LOG_INFO("setCronJob added job [", actionStr.c_str(), "]");
|
||||
LOG_INFO("addCronJob added job [", actionStr.c_str(), "]");
|
||||
response["values"]["status"] = "valid";
|
||||
return response;
|
||||
}
|
||||
const ArduinoJson::JsonDocument Commands::setCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms)
|
||||
{
|
||||
ArduinoJson::JsonDocument response;
|
||||
response["cmd"] = "setCronJob";
|
||||
const auto &eventName = params["name"].as<std::string>();
|
||||
const auto &statusStr = params["status"].as<std::string>();
|
||||
response["values"]["name"] = eventName;
|
||||
|
||||
auto &cron = Cron::getInstance(dev);
|
||||
if (!cron.c_statusStr2Enum.contains(statusStr))
|
||||
{
|
||||
LOG_ERROR("setCronJob invalid status [", statusStr.c_str(), "]");
|
||||
response["values"]["status"] = "invalid";
|
||||
return response;
|
||||
}
|
||||
cron.setEvent(eventName, cron.c_statusStr2Enum.at(statusStr));
|
||||
LOG_INFO("setCronJob set job [", eventName.c_str(), "] to [", statusStr.c_str(), "]");
|
||||
response["values"]["status"] = "valid";
|
||||
return response;
|
||||
}
|
||||
@@ -120,8 +140,7 @@ namespace commands
|
||||
uint8_t eventNum(0);
|
||||
for (const auto &[name, event] : eventMap)
|
||||
{
|
||||
const auto cmd = std::get<0>(event);
|
||||
response["values"][name] = cmd;
|
||||
response["values"][name] = event.cmd;
|
||||
eventNum++;
|
||||
}
|
||||
LOG_INFO("getCronJob got [", eventNum, "] events");
|
||||
@@ -137,16 +156,11 @@ namespace commands
|
||||
return response;
|
||||
}
|
||||
|
||||
auto cmd = std::get<0>(event);
|
||||
auto cronExpr = std::get<1>(event);
|
||||
auto cmdParams = std::get<3>(event);
|
||||
|
||||
ArduinoJson::JsonDocument action;
|
||||
action["cmd"] = cmd;
|
||||
action["params"] = cmdParams;
|
||||
response["values"]["cronExpr"] = cron::to_cronstr(cronExpr);
|
||||
action["cmd"] = event.cmd;
|
||||
action["params"] = event.cmdParams;
|
||||
response["values"]["cronExpr"] = cron::to_cronstr(event.cronExpr);
|
||||
response["values"]["action"] = action;
|
||||
|
||||
LOG_INFO("getCronJob get job [", eventName.c_str(), "]");
|
||||
return response;
|
||||
}
|
||||
@@ -283,7 +297,6 @@ namespace commands
|
||||
const std::string zone(params["zone"].as<std::string>());
|
||||
const uint16_t tOn(params["timeOn"].as<uint16_t>());
|
||||
const uint16_t tPause(params["timePause"].as<uint16_t>());
|
||||
|
||||
response["values"]["zone"] = zone;
|
||||
|
||||
if (zone == "stop")
|
||||
@@ -304,7 +317,7 @@ namespace commands
|
||||
}
|
||||
}
|
||||
LOG_INFO("setIrrigation closing", zoneName.c_str());
|
||||
dev.io.digitalOutWrite(c_irrigationValveMap.at(zoneName), false); // shuto down the valve
|
||||
dev.io.digitalOutWrite(c_irrigationValveMap.at(zoneName), false); // shutdown the valve
|
||||
}
|
||||
if (s_irrigationPumpTimer)
|
||||
{
|
||||
@@ -315,6 +328,13 @@ namespace commands
|
||||
return response;
|
||||
}
|
||||
|
||||
if (!s_rainOverride && !dev.io.digitalInRead(DI::RAIN)) // verify rain sensor and override value (rain sensor input is inverted)
|
||||
{
|
||||
LOG_WARN("setIrrigation skipping zone [", zone.c_str(), "] because its raining");
|
||||
response["values"]["status"] = "rain";
|
||||
return response;
|
||||
}
|
||||
|
||||
response["values"]["timeOn"] = tOn;
|
||||
response["values"]["timePause"] = tPause;
|
||||
if (!c_irrigationValveMap.contains(zone) || tOn <= 0 || tPause <= 0) // verify if zone is a valid map key
|
||||
@@ -360,6 +380,7 @@ namespace commands
|
||||
if (shTimer)
|
||||
{
|
||||
dev.io.digitalOutWrite(zoneIoNumber, true);
|
||||
// controllare riempimento serbatoio con controllo del pressostato, magari in un timer
|
||||
xTimerStart(shTimer, 0);
|
||||
timerHandle = shTimer;
|
||||
response["values"]["status"] = "valid";
|
||||
@@ -367,6 +388,20 @@ namespace commands
|
||||
}
|
||||
return response;
|
||||
}
|
||||
const ArduinoJson::JsonDocument Commands::setRainOverride(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms)
|
||||
{
|
||||
ArduinoJson::JsonDocument response;
|
||||
response["cmd"] = "setRainOverride";
|
||||
if (params.isNull())
|
||||
{
|
||||
LOG_ERROR("setRainOverride incorrect paramaters");
|
||||
return response;
|
||||
}
|
||||
s_rainOverride = params["rainOverride"].as<std::string>() == "True" ? true : false;
|
||||
response["values"]["status"] = "valid";
|
||||
LOG_INFO("setRainOverride [", s_rainOverride ? "True]" : "False]");
|
||||
return response;
|
||||
}
|
||||
const ArduinoJson::JsonDocument Commands::setTimeNTP(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms)
|
||||
{
|
||||
ArduinoJson::JsonDocument response;
|
||||
@@ -477,6 +512,13 @@ namespace commands
|
||||
LOG_WARN("Comand not yet implemented");
|
||||
return response;
|
||||
}
|
||||
const ArduinoJson::JsonDocument Commands::getRainOverride(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms)
|
||||
{
|
||||
ArduinoJson::JsonDocument response;
|
||||
response["cmd"] = "getRainOverride";
|
||||
response["values"]["rainOverride"] = s_rainOverride ? "True" : "False";
|
||||
return response;
|
||||
}
|
||||
const ArduinoJson::JsonDocument Commands::getTimeDrift(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms)
|
||||
{
|
||||
ArduinoJson::JsonDocument response;
|
||||
|
||||
Reference in New Issue
Block a user