fix turn on/off of fan and switch to humidity mode
This commit is contained in:
		@@ -20,13 +20,13 @@ void Heating::init(Temperature *tempsensor, unsigned mode) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                Serial.println("Turning on heating");
 | 
					                Serial.println("Turning on heating");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                mTurnOffTicker.once((int)((float)refreshperiod * (float)percentOn / 100.0), []() {
 | 
					                mTurnOffTicker.once((int) ((float) refreshperiod * (float) percentOn / 100.0), []() {
 | 
				
			||||||
                    digitalWrite(HeizungPin, LOW);
 | 
					                    digitalWrite(HeizungPin, LOW);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    Serial.println("Turned off heating!");
 | 
					                    Serial.println("Turned off heating!");
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                mLuefterTicker.once((int)(((float)refreshperiod * (float)percentOn / 100.0) + 30.0), []() {
 | 
					                mLuefterTicker.once((int) (((float) refreshperiod * (float) percentOn / 100.0) + 30.0), []() {
 | 
				
			||||||
                    digitalWrite(LuefterPin, LOW);
 | 
					                    digitalWrite(LuefterPin, LOW);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    Serial.println("Turned off fan!");
 | 
					                    Serial.println("Turned off fan!");
 | 
				
			||||||
@@ -38,7 +38,7 @@ void Heating::init(Temperature *tempsensor, unsigned mode) {
 | 
				
			|||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        case HUMIDITY:
 | 
					        case HUMIDITY:
 | 
				
			||||||
            mFanWaiting = false;
 | 
					            mHeatingStatus = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            mHeizungTicker.attach(10, [&tempsensor, this]() {
 | 
					            mHeizungTicker.attach(10, [&tempsensor, this]() {
 | 
				
			||||||
                // shedule this function because tempread is blocking
 | 
					                // shedule this function because tempread is blocking
 | 
				
			||||||
@@ -58,24 +58,21 @@ void Heating::init(Temperature *tempsensor, unsigned mode) {
 | 
				
			|||||||
                        // turn on heating and fan
 | 
					                        // turn on heating and fan
 | 
				
			||||||
                        digitalWrite(LuefterPin, HIGH);
 | 
					                        digitalWrite(LuefterPin, HIGH);
 | 
				
			||||||
                        digitalWrite(HeizungPin, HIGH);
 | 
					                        digitalWrite(HeizungPin, HIGH);
 | 
				
			||||||
 | 
					                        mHeatingStatus = true;
 | 
				
			||||||
                        // if fan waiting detach its ticker
 | 
					 | 
				
			||||||
                        if (mFanWaiting) {
 | 
					 | 
				
			||||||
                            mLuefterTicker.detach();
 | 
					 | 
				
			||||||
                            mFanWaiting = false;
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    } else if (hum < 60.0) {
 | 
					                    } else if (hum < 60.0) {
 | 
				
			||||||
                        // if humidity too low turn off heating and fan after 60secs
 | 
					                        // if humidity too low turn off heating and fan after 60secs
 | 
				
			||||||
                        digitalWrite(HeizungPin, LOW);
 | 
					                        digitalWrite(HeizungPin, LOW);
 | 
				
			||||||
                        Serial.println("heating should NOT run now!");
 | 
					                        Serial.println("heating should NOT run now!");
 | 
				
			||||||
                        if (!mFanWaiting) {
 | 
					
 | 
				
			||||||
                            mFanWaiting = true;
 | 
					                        // if heating status in on set ticker to turn of fan in 60sec
 | 
				
			||||||
 | 
					                        if (mHeatingStatus) {
 | 
				
			||||||
                            mLuefterTicker.once(60, []() {
 | 
					                            mLuefterTicker.once(60, []() {
 | 
				
			||||||
                                // turn off fan
 | 
					                                // turn off fan
 | 
				
			||||||
                                digitalWrite(LuefterPin, LOW);
 | 
					                                digitalWrite(LuefterPin, LOW);
 | 
				
			||||||
                                Serial.println("turning off fan");
 | 
					                                Serial.println("turning off fan");
 | 
				
			||||||
                            });
 | 
					                            });
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					                        mHeatingStatus = false;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,5 +17,5 @@ private:
 | 
				
			|||||||
    Ticker mLuefterTicker;
 | 
					    Ticker mLuefterTicker;
 | 
				
			||||||
    Ticker mTurnOffTicker;
 | 
					    Ticker mTurnOffTicker;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool mFanWaiting;
 | 
					    bool mHeatingStatus;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
#include "Pins.h"
 | 
					#include "Pins.h"
 | 
				
			||||||
#include "Temperature.h"
 | 
					#include "Temperature.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define VERSION "v1.1"
 | 
					#define VERSION "v1.1.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool allow;
 | 
					bool allow;
 | 
				
			||||||
bool error = false;
 | 
					bool error = false;
 | 
				
			||||||
@@ -149,9 +149,6 @@ void setup() {
 | 
				
			|||||||
    digitalWrite(SchuetzPin, LOW); //pumpe anfangs sofort abschalten
 | 
					    digitalWrite(SchuetzPin, LOW); //pumpe anfangs sofort abschalten
 | 
				
			||||||
    digitalWrite(LuefterPin, LOW);
 | 
					    digitalWrite(LuefterPin, LOW);
 | 
				
			||||||
    digitalWrite(HeizungPin, LOW);
 | 
					    digitalWrite(HeizungPin, LOW);
 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//    digitalWrite(HeizungPin, HIGH);
 | 
					 | 
				
			||||||
//    delay(1000000);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // initilize serial connection
 | 
					    // initilize serial connection
 | 
				
			||||||
    Serial.begin(9600);
 | 
					    Serial.begin(9600);
 | 
				
			||||||
@@ -188,8 +185,9 @@ void setup() {
 | 
				
			|||||||
    Serial.println("Initializing wifi");
 | 
					    Serial.println("Initializing wifi");
 | 
				
			||||||
    mang.init(&temp);
 | 
					    mang.init(&temp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // initialize heating control
 | 
				
			||||||
    Serial.println("initializing heating service");
 | 
					    Serial.println("initializing heating service");
 | 
				
			||||||
    mHeat.init(&temp, Heating::TIME);
 | 
					    mHeat.init(&temp, Heating::HUMIDITY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Serial.println("startup sequence complete!\n");
 | 
					    Serial.println("startup sequence complete!\n");
 | 
				
			||||||
    digitalWrite(LED_BUILTIN, HIGH);
 | 
					    digitalWrite(LED_BUILTIN, HIGH);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user