diff --git a/esp32/include/PlantCtrl.h b/esp32/include/PlantCtrl.h index c737e7a..ea02ddf 100644 --- a/esp32/include/PlantCtrl.h +++ b/esp32/include/PlantCtrl.h @@ -23,10 +23,10 @@ private: int mValue = 0; /**< Value of the moist sensor */ int mAnalogValue=0; /**< moist sensor values, used for a calculation */ - HomieNode *mPlant = NULL; - PlantSettings_t mSetting; + HomieNode* mPlant = NULL; public: + PlantSettings_t* mSetting; /** * @brief Construct a new Plant object @@ -77,12 +77,14 @@ public: * @return false */ bool isPumpRequired() { - return (this->mSetting.pSensorWet != NULL) && (this->mValue < this->mSetting.pSensorWet->get()); + return (this->mSetting->pSensorWet != NULL) && (this->mValue < this->mSetting->pSensorWet->get()); } HomieInternals::SendingPromise& setProperty(const String& property) const { return mPlant->setProperty(property); } + + void init(void); }; #endif diff --git a/esp32/src/PlantCtrl.cpp b/esp32/src/PlantCtrl.cpp index 5e77a9f..e8199fa 100644 --- a/esp32/src/PlantCtrl.cpp +++ b/esp32/src/PlantCtrl.cpp @@ -12,34 +12,36 @@ #include "PlantCtrl.h" -Plant::Plant(int pinSensor, int pinPump,int plantId, HomieNode *plant, PlantSettings_t* setting) { +Plant::Plant(int pinSensor, int pinPump,int plantId, HomieNode* plant, PlantSettings_t* setting) { this->mPinSensor = pinSensor; this->mPinPump = pinPump; this->mPlant = plant; - /* - this->mSetting = mSetting; - this->mSetting.pSensorDry->setDefaultValue(4095); - this->mSetting.pSensorDry->setValidator([] (long candidate) { + this->mSetting = setting; +} + +void Plant::init(void) { + this->mSetting->pSensorDry->setDefaultValue(4095); + this->mSetting->pSensorDry->setValidator([] (long candidate) { return ((candidate >= 0) && (candidate <= 4095) ); }); - this->mSetting.pSensorWet->setDefaultValue(0); - this->mSetting.pSensorWet->setValidator([] (long candidate) { + this->mSetting->pSensorWet->setDefaultValue(0); + this->mSetting->pSensorWet->setValidator([] (long candidate) { return ((candidate >= 0) && (candidate <= 4095) ); }); - this->mSetting.pPumpAllowedHourRangeStart->setDefaultValue(8); - this->mSetting.pPumpAllowedHourRangeStart->setValidator([] (long candidate) { + this->mSetting->pPumpAllowedHourRangeStart->setDefaultValue(8); + this->mSetting->pPumpAllowedHourRangeStart->setValidator([] (long candidate) { return ((candidate >= 0) && (candidate <= 23) ); }); - this->mSetting.pPumpAllowedHourRangeEnd->setDefaultValue(20); - this->mSetting.pPumpAllowedHourRangeEnd->setValidator([] (long candidate) { + this->mSetting->pPumpAllowedHourRangeEnd->setDefaultValue(20); + this->mSetting->pPumpAllowedHourRangeEnd->setValidator([] (long candidate) { return ((candidate >= 0) && (candidate <= 23) ); }); - this->mSetting.pPumpOnlyWhenLowLight->setDefaultValue(true); - this->mSetting.pPumpCooldownInHours->setDefaultValue(20); - this->mSetting.pPumpCooldownInHours->setValidator([] (long candidate) { + this->mSetting->pPumpOnlyWhenLowLight->setDefaultValue(true); + this->mSetting->pPumpCooldownInHours->setDefaultValue(20); + this->mSetting->pPumpCooldownInHours->setValidator([] (long candidate) { return ((candidate >= 0) && (candidate <= 1024) ); }); - */ + } void Plant::addSenseValue(int analog) { diff --git a/esp32/src/main.cpp b/esp32/src/main.cpp index 499a618..212ad93 100644 --- a/esp32/src/main.cpp +++ b/esp32/src/main.cpp @@ -309,6 +309,11 @@ void readSensors() { * Is called once, the controller is started */ void setup() { + /* Intialize Plant */ + for(int i=0; i < MAX_PLANTS; i++) { + mPlants[i].init(); + } + /* Required to read the temperature once */ float temp[2] = {0, 0}; float* pFloat = temp; @@ -337,9 +342,9 @@ void setup() { Homie.setLoopFunction(loopHandler); mConfigured = Homie.isConfigured(); - // Load the settings - deepSleepTime.setDefaultValue(0); - deepSleepNightTime.setDefaultValue(0); + // Load the settings + deepSleepTime.setDefaultValue(0); + deepSleepNightTime.setDefaultValue(0); if (mConfigured) { // Advertise topics