turn of fan when pump cycle starts to prevent too much current draw

This commit is contained in:
lukas 2021-03-31 17:28:54 +02:00
parent a9671773f3
commit 39a8ecde85
3 changed files with 30 additions and 5 deletions

View File

@ -12,6 +12,7 @@ Heating::Heating() : mHeizungTicker(),
msettings(nullptr), msettings(nullptr),
mheatingservice(nullptr), mheatingservice(nullptr),
mHeatingStatus(false), mHeatingStatus(false),
mPumpCycleActive(false),
lasttemp(0), lasttemp(0),
lasthum(0), lasthum(0),
sensor() {} sensor() {}
@ -32,8 +33,8 @@ void Heating::init(unsigned mode, const SettingState *settings, HeatingInfoServi
sensor.onData([this](float hum, float temp) { sensor.onData([this](float hum, float temp) {
schedule_function([hum, temp, this]() { schedule_function([hum, temp, this]() {
Serial.printf("Temp: %gdegC\n", temp); // Serial.printf("Temp: %gdegC\n", temp);
Serial.printf("Humid: %g%%\n", hum); // Serial.printf("Humid: %g%%\n", hum);
mheatingservice->setSensorData(hum, temp); mheatingservice->setSensorData(hum, temp);
@ -76,9 +77,12 @@ void Heating::handleHeatingEvents() {
if (mHeatingStatus == false) { if (mHeatingStatus == false) {
// turn off active turnoff timers // turn off active turnoff timers
mLuefterTicker.detach(); mLuefterTicker.detach();
////Serial.println("heating should run now!"); //Serial.println("heating should run now!");
// turn on heating and fan // turn on heating and fan
if (!mPumpCycleActive) {
digitalWrite(LuefterPin, HIGH); digitalWrite(LuefterPin, HIGH);
}
digitalWrite(HeizungPin, HIGH); digitalWrite(HeizungPin, HIGH);
mHeatingStatus = true; mHeatingStatus = true;
@ -139,3 +143,16 @@ void Heating::handleTimeHeater() {
func(); func();
mHeizungTicker.attach(refreshperiod, func); mHeizungTicker.attach(refreshperiod, func);
} }
void Heating::setPumCycleActive(bool active) {
mPumpCycleActive = active;
// turn off fan if pumpcycleactive
if (active) {
digitalWrite(LuefterPin, LOW);
} else {
if (mHeatingStatus) {
digitalWrite(LuefterPin, HIGH);
}
}
}

View File

@ -21,6 +21,8 @@ public:
*/ */
void init(unsigned mode, const SettingState* settings, HeatingInfoService *heatingservice); void init(unsigned mode, const SettingState* settings, HeatingInfoService *heatingservice);
void setPumCycleActive(bool active);
enum MODES {TIME, HUMIDITY}; enum MODES {TIME, HUMIDITY};
private: private:
Ticker mHeizungTicker; Ticker mHeizungTicker;
@ -30,7 +32,7 @@ private:
const SettingState* msettings; const SettingState* msettings;
HeatingInfoService *mheatingservice; HeatingInfoService *mheatingservice;
bool mHeatingStatus; bool mHeatingStatus, mPumpCycleActive;
float lasttemp; float lasttemp;
float lasthum; float lasthum;

View File

@ -45,6 +45,9 @@ void pumpeSchalten(bool on) {
pumpcycles++; pumpcycles++;
generalinfo.setPumpCycles(pumpcycles); generalinfo.setPumpCycles(pumpcycles);
// pump cycle started
mHeat.setPumCycleActive(true);
pumpendauer.once((float) settingsservice.getSettings()->maxpumpduration + 1, []() { pumpendauer.once((float) settingsservice.getSettings()->maxpumpduration + 1, []() {
//erlaube keine einschaltung von mehr als 60 sek //erlaube keine einschaltung von mehr als 60 sek
if (Timer::getSystemSeconds() - turnontime >= if (Timer::getSystemSeconds() - turnontime >=
@ -57,6 +60,9 @@ void pumpeSchalten(bool on) {
}); });
} else { } else {
generalinfo.setPumpDuration(Timer::getSystemSeconds() - turnontime); generalinfo.setPumpDuration(Timer::getSystemSeconds() - turnontime);
// pump cycle stopped...
mHeat.setPumCycleActive(false);
} }
// save pump start time // save pump start time