112 lines
6.5 KiB
C++
112 lines
6.5 KiB
C++
#pragma once
|
|
|
|
#define DEBUGLOG_DEFAULT_LOG_LEVEL_INFO
|
|
|
|
#include <DebugLog.h>
|
|
#include <Arduino.h>
|
|
#include <ArduinoJson.h>
|
|
|
|
#include <config.h>
|
|
#include <devices.h>
|
|
#include <pinlist.h>
|
|
|
|
namespace commands
|
|
{
|
|
static const std::map<const std::string, uint8_t> c_hpLimitsMap = {{"P1", RO::P1},
|
|
{"P2", RO::P2},
|
|
{"P3", RO::P3},
|
|
{"P4", RO::P4},
|
|
{"UNLIMITED", RO::RO_MAX}};
|
|
|
|
static const std::map<const std::string, uint8_t> c_heatingValveMap = {{"pump", RO::PUMP_HT},
|
|
{"first", RO::FST_FLOOR},
|
|
{"ground", RO::GND_FLOOR}};
|
|
|
|
static const std::map<const std::string, uint8_t> c_irrigationValveMap = {{"ricircolo", RO::RETURN},
|
|
{"zone1", RO::ZONE1},
|
|
{"zone2", RO::ZONE2},
|
|
{"zone3", RO::ZONE3},
|
|
{"rubinetti", RO::DRIP}};
|
|
|
|
static std::map<const std::string, std::pair<const char *, TimerHandle_t>> c_irrigationTimerMap = {{"ricircolo", {"ricircolo", NULL}},
|
|
{"zone1", {"zone1", NULL}},
|
|
{"zone2", {"zone2", NULL}},
|
|
{"zone3", {"zone3", NULL}},
|
|
{"rubinetti", {"rubinetti", NULL}}};
|
|
|
|
static TimerHandle_t s_irrigationPumpTimer = NULL;
|
|
static bool s_rainOverride = false;
|
|
|
|
// define command callback type
|
|
using Command = std::function<const ArduinoJson::JsonDocument(const devices_t &, const ArduinoJson::JsonDocument &)>;
|
|
|
|
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 addCronJob(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 setRainOverride(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 getRainOverride(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<const std::string, Command> s_commandMap = {
|
|
// TEST
|
|
{"setBuzz", Commands::setBuzz},
|
|
// CONFIG
|
|
{"setConfig", Commands::setConfig},
|
|
{"getConfig", Commands::getConfig},
|
|
// CRONJOBS
|
|
{"loadCronJob", Commands::loadCronJob},
|
|
{"addCronJob", Commands::addCronJob},
|
|
{"setCronJob", Commands::setCronJob},
|
|
{"getCronJob", Commands::getCronJob},
|
|
{"delCronJob", Commands::delCronJob},
|
|
{"storeCronJob", Commands::storeCronJob},
|
|
// SETTERS
|
|
{"setHPlimit", Commands::setHPlimit},
|
|
{"setHeating", Commands::setHeating},
|
|
{"setIrrigation", Commands::setIrrigation},
|
|
{"setRainOverride", Commands::setRainOverride},
|
|
// GETTERS
|
|
{"getHPpower", Commands::getHPpower},
|
|
{"getRainInfo", Commands::getRainInfo},
|
|
{"getInputStatus", Commands::getInputStatus},
|
|
{"getOutputStatus", Commands::getOutputStatus},
|
|
{"getRainOverride", Commands::getRainOverride},
|
|
// NTP and Time
|
|
{"getTimeDrift", Commands::getTimeDrift},
|
|
{"setTimeNTP", Commands::setTimeNTP},
|
|
};
|
|
|
|
} |