#pragma once #define DEBUGLOG_DEFAULT_LOG_LEVEL_INFO #include #include #include #include #include namespace commands { enum RO // relay output channels { P1, P2, P3, P4, NC_1, FST_FLOOR, GND_FLOOR, PUMP_HT, IRR_PUMP, Z1, Z2, Z3, AUX, RETURN, NC_3, NC_4, RO_MAX // unused to detect invalid values }; static const std::map c_hpLimitsMap = {{"P1", RO::P1}, {"P2", RO::P2}, {"P3", RO::P3}, {"P4", RO::P4}, {"UNLIMITED", RO::P1}}; static const std::map c_heatingValveMap = {{"pump", RO::PUMP_HT}, {"first", RO::FST_FLOOR}, {"ground", RO::GND_FLOOR}}; static const std::map c_irrigationValveMap = {{"ricircolo", RO::RETURN}, {"zone1", RO::Z1}, {"zone2", RO::Z2}, {"zone3", RO::Z3}, {"rubinetti", RO::AUX}}; static std::map> c_irrigationTimerMap = {{"ricircolo", {"ricircolo", NULL}}, {"zone1", {"zone1", NULL}}, {"zone2", {"zone2", NULL}}, {"zone3", {"zone3", NULL}}, {"rubinetti", {"rubinetti", NULL}}}; static TimerHandle_t s_irrigationPumpTimer = NULL; // define command callback type using Command = std::function; class Commands { Commands() = delete; public: // TEST // static const ArduinoJson::JsonDocument setBuzz(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); // CONFIG // static const ArduinoJson::JsonDocument setConfig(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getConfig(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); // CRONJOBS // static const ArduinoJson::JsonDocument loadCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument setCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument delCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument storeCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); // SETTERS // static const ArduinoJson::JsonDocument setHPlimit(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument setHeating(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument setIrrigation(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument setTimeNTP(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); // GETTERS // static const ArduinoJson::JsonDocument getHPpower(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getInputStatus(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getOutputStatus(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getTemperatures(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getWaterInfo(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getTankInfo(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getRainInfo(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getIrrigation(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getTimeDrift(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); }; static const std::map s_commandMap = { {"setBuzz", Commands::setBuzz}, {"setConfig", Commands::setConfig}, {"getConfig", Commands::getConfig}, {"loadCronJob", Commands::loadCronJob}, {"setCronJob", Commands::setCronJob}, {"getCronJob", Commands::getCronJob}, {"delCronJob", Commands::delCronJob}, {"storeCronJob", Commands::storeCronJob}, {"setHPlimit", Commands::setHPlimit}, {"setHeating", Commands::setHeating}, {"setIrrigation", Commands::setIrrigation}, {"getHPpower", Commands::getHPpower}, {"setHeating", Commands::setHeating}, {"getTimeDrift", Commands::getTimeDrift}, {"setTimeNTP", Commands::setTimeNTP}, }; }