react on switch from Mqtt
This commit is contained in:
parent
df39c09c50
commit
2d91f91290
@ -13,6 +13,7 @@
|
|||||||
#define PLANT_CTRL_H
|
#define PLANT_CTRL_H
|
||||||
|
|
||||||
#include "HomieTypes.h"
|
#include "HomieTypes.h"
|
||||||
|
#include <HomieNode.hpp>
|
||||||
#include "ControllerConfiguration.h"
|
#include "ControllerConfiguration.h"
|
||||||
#include "RunningMedian.h"
|
#include "RunningMedian.h"
|
||||||
#include "MathUtils.h"
|
#include "MathUtils.h"
|
||||||
@ -23,6 +24,7 @@ class Plant
|
|||||||
private:
|
private:
|
||||||
RunningMedian moistureRaw = RunningMedian(5);
|
RunningMedian moistureRaw = RunningMedian(5);
|
||||||
HomieNode *mPlant = NULL;
|
HomieNode *mPlant = NULL;
|
||||||
|
HomieInternals::PropertyInterface mPump;
|
||||||
int mPinSensor = 0; /**< Pin of the moist sensor */
|
int mPinSensor = 0; /**< Pin of the moist sensor */
|
||||||
int mPinPump = 0; /**< Pin of the pump */
|
int mPinPump = 0; /**< Pin of the pump */
|
||||||
bool mConnected = false;
|
bool mConnected = false;
|
||||||
@ -100,7 +102,6 @@ public:
|
|||||||
{
|
{
|
||||||
return mPlant->setProperty(property);
|
return mPlant->setProperty(property);
|
||||||
}
|
}
|
||||||
bool switchHandler(const HomieRange &range, const String &value);
|
|
||||||
|
|
||||||
void init(void);
|
void init(void);
|
||||||
|
|
||||||
@ -131,8 +132,11 @@ public:
|
|||||||
return this->mSetting->pPumpOnlyWhenLowLight->get();
|
return this->mSetting->pPumpOnlyWhenLowLight->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void publishState(String state);
|
void publishState(String state);
|
||||||
|
|
||||||
|
bool switchHandler(const HomieRange& range, const String& value);
|
||||||
|
|
||||||
|
void setSwitchHandler(HomieInternals::PropertyInputHandler f);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -133,31 +133,32 @@ void Plant::activatePump(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Plant::switchHandler(const HomieRange& range, const String& value) {
|
||||||
|
if (range.isRange) {
|
||||||
|
return false; // only one switch is present
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((value.equals("ON")) || (value.equals("On")) || (value.equals("on")) || (value.equals("true"))) {
|
||||||
|
this->activatePump();
|
||||||
|
return true;
|
||||||
|
} else if ((value.equals("OFF")) || (value.equals("Off")) || (value.equals("off")) || (value.equals("false")) ) {
|
||||||
|
this->deactivatePump();
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Plant::setSwitchHandler(HomieInternals::PropertyInputHandler f) {
|
||||||
|
this->mPump.settable(f);
|
||||||
|
}
|
||||||
|
|
||||||
void Plant::advertise(void)
|
void Plant::advertise(void)
|
||||||
{
|
{
|
||||||
// Advertise topics
|
// Advertise topics
|
||||||
this->mPlant->advertise("switch").setName("Pump 1").setDatatype("boolean");
|
mPump = this->mPlant->advertise("switch").setName("Pump").setDatatype("boolean");
|
||||||
this->mPlant->advertise("lastPump").setName("lastPump").setDatatype("number").setUnit("unixtime");
|
this->mPlant->advertise("lastPump").setName("lastPump").setDatatype("number").setUnit("unixtime");
|
||||||
//FIXME add .settable(this->switchHandler)
|
|
||||||
this->mPlant->advertise("moist").setName("Percent").setDatatype("number").setUnit("%");
|
this->mPlant->advertise("moist").setName("Percent").setDatatype("number").setUnit("%");
|
||||||
this->mPlant->advertise("moistraw").setName("adc").setDatatype("number").setUnit("3.3/4096V");
|
this->mPlant->advertise("moistraw").setName("adc").setDatatype("number").setUnit("3.3/4096V");
|
||||||
this->mPlant->advertise("state").setName("state").setDatatype("string");
|
this->mPlant->advertise("state").setName("state").setDatatype("string");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME
|
|
||||||
bool Plant::switchHandler(const HomieRange& range, const String& value) {
|
|
||||||
if (range.isRange) return false; // only one switch is present
|
|
||||||
|
|
||||||
|
|
||||||
if ((value.equals("ON")) || (value.equals("On")) || (value.equals("on")) || (value.equals("true"))) {
|
|
||||||
this->activatePump();
|
|
||||||
return true;
|
|
||||||
} else if ((value.equals("OFF")) || (value.equals("Off")) || (value.equals("off")) || (value.equals("false")) ) {
|
|
||||||
this->deactivatePump();
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
@ -510,6 +510,34 @@ void homieLoop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool switch1(const HomieRange& range, const String& value) {
|
||||||
|
return mPlants[0].switchHandler(range, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool switch2(const HomieRange& range, const String& value) {
|
||||||
|
return mPlants[1].switchHandler(range, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool switch3(const HomieRange& range, const String& value) {
|
||||||
|
return mPlants[2].switchHandler(range, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool switch4(const HomieRange& range, const String& value) {
|
||||||
|
return mPlants[3].switchHandler(range, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool switch5(const HomieRange& range, const String& value) {
|
||||||
|
return mPlants[4].switchHandler(range, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool switch6(const HomieRange& range, const String& value) {
|
||||||
|
return mPlants[5].switchHandler(range, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool switch7(const HomieRange& range, const String& value) {
|
||||||
|
return mPlants[6].switchHandler(range, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Startup function
|
* @brief Startup function
|
||||||
* Is called once, the controller is started
|
* Is called once, the controller is started
|
||||||
@ -619,6 +647,14 @@ void setup()
|
|||||||
{
|
{
|
||||||
mPlants[i].advertise();
|
mPlants[i].advertise();
|
||||||
}
|
}
|
||||||
|
mPlants[0].setSwitchHandler(switch1);
|
||||||
|
mPlants[1].setSwitchHandler(switch2);
|
||||||
|
mPlants[2].setSwitchHandler(switch3);
|
||||||
|
mPlants[3].setSwitchHandler(switch4);
|
||||||
|
mPlants[4].setSwitchHandler(switch5);
|
||||||
|
mPlants[5].setSwitchHandler(switch6);
|
||||||
|
mPlants[6].setSwitchHandler(switch7);
|
||||||
|
|
||||||
sensorTemp.advertise(TEMPERATUR_SENSOR_LIPO)
|
sensorTemp.advertise(TEMPERATUR_SENSOR_LIPO)
|
||||||
.setName(TEMPERATURE_NAME)
|
.setName(TEMPERATURE_NAME)
|
||||||
.setDatatype(NUMBER_TYPE)
|
.setDatatype(NUMBER_TYPE)
|
||||||
|
Loading…
Reference in New Issue
Block a user