PlantCtrl/esp32/include/PlantCtrl.h

89 lines
2.0 KiB
C
Raw Normal View History

2020-09-07 18:18:46 +02:00
/**
* @file PlantCtrl.h
* @author your name (you@domain.com)
* @brief Abstraction to handle the Sensors
* @version 0.1
* @date 2020-05-27
*
* @copyright Copyright (c) 2020
*
*/
#ifndef PLANT_CTRL_H
#define PLANT_CTRL_H
2020-10-16 16:22:48 +02:00
#include "HomieTypes.h"
2020-09-07 18:18:46 +02:00
class Plant {
private:
int mPinSensor=0; /**< Pin of the moist sensor */
int mPinPump=0; /**< Pin of the pump */
int mValue = 0; /**< Value of the moist sensor */
int mAnalogValue=0; /**< moist sensor values, used for a calculation */
HomieNode *mPlant = NULL;
2020-10-16 16:22:48 +02:00
PlantSettings_t mSetting;
2020-09-07 18:18:46 +02:00
public:
/**
* @brief Construct a new Plant object
*
* @param pinSensor Pin of the Sensor to use to measure moist
* @param pinPump Pin of the Pump to use
*/
Plant(int pinSensor, int pinPump,
2020-10-16 16:22:48 +02:00
int plantId,
HomieNode* plant,
PlantSettings_t* setting);
2020-09-07 18:18:46 +02:00
/**
* @brief Add a value, to be measured
*
* @param analogValue
*/
void addSenseValue(int analogValue);
/**
* @brief Calculate the value based on the information
* @see amountMeasurePoints
* Internal memory, used by addSenseValue will be resetted
* @return int analog value
*/
void calculateSensorValue(int amountMeasurePoints);
/**
* @brief Get the Sensor Pin of the analog measuring
*
* @return int
*/
int getSensorPin() { return mPinSensor; }
/**
* @brief Get the Pump Pin object
*
* @return int
*/
int getPumpPin() { return mPinPump; }
int getSensorValue() { return mValue; }
/**
* @brief Check if a plant is too dry and needs some water.
*
* @return true
* @return false
*/
bool isPumpRequired() {
2020-10-16 16:22:48 +02:00
return (this->mSetting.pSensorWet != NULL) && (this->mValue < this->mSetting.pSensorWet->get());
}
HomieInternals::SendingPromise& setProperty(const String& property) const {
return mPlant->setProperty(property);
}
2020-09-07 18:18:46 +02:00
};
#endif