new class for managing heating
This commit is contained in:
parent
e0a27bf155
commit
de792719ee
50
src/Heating.cpp
Normal file
50
src/Heating.cpp
Normal file
@ -0,0 +1,50 @@
|
||||
//
|
||||
// Created by lukas on 10.11.20.
|
||||
//
|
||||
|
||||
#include "Heating.h"
|
||||
#include "Pins.h"
|
||||
|
||||
void Heating::init(Temperature *tempsensor) {
|
||||
mFanWaiting = false;
|
||||
|
||||
mHeizungTicker.attach(10, [&tempsensor, this]() {
|
||||
// shedule this function because tempread is blocking
|
||||
schedule_function([this, &tempsensor](){
|
||||
// check temperature
|
||||
Serial.println("checking humidity");
|
||||
const float hum = tempsensor->getHum();
|
||||
if (hum == -1) return;
|
||||
|
||||
Serial.print("humidity read: ");
|
||||
Serial.println(hum);
|
||||
|
||||
if (hum > 65) {
|
||||
// turn off active turnoff timers
|
||||
mLuefterTicker.detach();
|
||||
|
||||
// turn on heating and fan
|
||||
digitalWrite(LuefterPin, HIGH);
|
||||
digitalWrite(HeizungPin, HIGH);
|
||||
|
||||
// if fan waiting detach its ticker
|
||||
if (mFanWaiting) {
|
||||
mLuefterTicker.detach();
|
||||
mFanWaiting = false;
|
||||
}
|
||||
} else if (hum < 60) {
|
||||
// if humidity too low turn off heating and fan after 60secs
|
||||
digitalWrite(HeizungPin, LOW);
|
||||
|
||||
if (!mFanWaiting) {
|
||||
mFanWaiting = true;
|
||||
mLuefterTicker.once(60, []() {
|
||||
// turn off fan
|
||||
digitalWrite(LuefterPin, LOW);
|
||||
Serial.println("turning off fan");
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
18
src/Heating.h
Normal file
18
src/Heating.h
Normal file
@ -0,0 +1,18 @@
|
||||
//
|
||||
// Created by lukas on 10.11.20.
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Ticker.h>
|
||||
#include "Temperature.h"
|
||||
|
||||
class Heating {
|
||||
public:
|
||||
void init(Temperature* tempsensor);
|
||||
private:
|
||||
Ticker mHeizungTicker;
|
||||
Ticker mLuefterTicker;
|
||||
|
||||
bool mFanWaiting;
|
||||
};
|
18
src/Pins.h
Normal file
18
src/Pins.h
Normal file
@ -0,0 +1,18 @@
|
||||
//
|
||||
// Created by lukas on 10.11.20.
|
||||
//
|
||||
|
||||
#ifndef PUMPENSTEUERUNG_PINS_H
|
||||
#define PUMPENSTEUERUNG_PINS_H
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
/** pin config */
|
||||
#define WasserSensorPin D5 // GPIO 14
|
||||
#define DruckSensorPin D6 // GPIO 12
|
||||
#define SchuetzPin D2 // GPIO 4
|
||||
#define LuefterPin D3 // GPIO 0
|
||||
#define HeizungPin D1
|
||||
#define TempSensorPin D4
|
||||
|
||||
#endif //PUMPENSTEUERUNG_PINS_H
|
@ -6,10 +6,11 @@
|
||||
|
||||
#include <Adafruit_Sensor.h>
|
||||
#include <DHT.h>
|
||||
#include "Pins.h"
|
||||
|
||||
class Temperature {
|
||||
public:
|
||||
Temperature() : dht(2, DHT22){};
|
||||
Temperature() : dht(TempSensorPin, DHT22){};
|
||||
|
||||
/**
|
||||
* initialize the temperature sensor
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include <EEPROM.h>
|
||||
#include "WifiManager.h"
|
||||
|
||||
void WifiManager::init() {
|
||||
void WifiManager::init(Temperature* tempsensor) {
|
||||
Serial.print("Setting up Access Point");
|
||||
// start softap
|
||||
const bool result = WiFi.softAP("PumpenSteuerung-Heiligenbrunner", "1qayxsw2");
|
||||
@ -32,7 +32,7 @@ void WifiManager::init() {
|
||||
}
|
||||
|
||||
// init temperature sensor
|
||||
temp.init();
|
||||
temp = *tempsensor;
|
||||
}
|
||||
|
||||
WifiManager::WifiManager() : server(80), lastPumpTime(0), lastWaterOutage(0), lastPumpDuration(0) {}
|
||||
@ -170,3 +170,7 @@ void WifiManager::setlastWaterOutage(unsigned long lastWaterOutage) {
|
||||
void WifiManager::setPumpDuration(unsigned long lastPumpDuration) {
|
||||
this->lastPumpDuration = lastPumpDuration;
|
||||
}
|
||||
|
||||
Temperature *WifiManager::getTemperatureSensor() {
|
||||
return &temp;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ public:
|
||||
/**
|
||||
* initialize the webserver
|
||||
*/
|
||||
void init();
|
||||
void init(Temperature* tempsensor);
|
||||
|
||||
/**
|
||||
* handles new web requests and holds the webserver alive
|
||||
@ -48,6 +48,8 @@ public:
|
||||
*/
|
||||
void setPumpDuration(unsigned long lastPumpDuration);
|
||||
|
||||
Temperature* getTemperatureSensor();
|
||||
|
||||
private:
|
||||
// todo more dynamic
|
||||
static const uint8_t WasserSensorPin = 14;
|
||||
|
22
src/main.cpp
22
src/main.cpp
@ -3,18 +3,17 @@
|
||||
#include <EEPROM.h>
|
||||
|
||||
#include "WifiManager.h"
|
||||
#include "Heating.h"
|
||||
|
||||
#include "Pins.h"
|
||||
#include "Temperature.h"
|
||||
|
||||
#define VERSION "v1.1"
|
||||
|
||||
bool allow;
|
||||
bool error = false;
|
||||
|
||||
/** pin config */
|
||||
static const uint8_t WasserSensorPin = D5; // GPIO 14
|
||||
static const uint8_t DruckSensorPin = D6; // GPIO 12
|
||||
static const uint8_t SchuetzPin = D2; // GPIO 4
|
||||
static const uint8_t LuefterPin = D3; // GPIO 0
|
||||
static const uint8_t HeizungPin = D1;
|
||||
|
||||
|
||||
/** time config */
|
||||
static const int maxpumpdauer = 600; //sek
|
||||
@ -25,10 +24,9 @@ Ticker status;
|
||||
//pumpendauer maximum ticker
|
||||
Ticker pumpendauer;
|
||||
|
||||
Ticker heizung;
|
||||
Ticker luefter;
|
||||
|
||||
WifiManager mang;
|
||||
Heating mHeat;
|
||||
Temperature temp;
|
||||
|
||||
long turnontime = -1;
|
||||
|
||||
@ -179,7 +177,11 @@ void setup() {
|
||||
|
||||
|
||||
// initialize wifi
|
||||
mang.init();
|
||||
temp.init();
|
||||
|
||||
mang.init(&temp);
|
||||
|
||||
mHeat.init(&temp);
|
||||
|
||||
Serial.println("startup sequence complete!\n");
|
||||
digitalWrite(LED_BUILTIN, HIGH);
|
||||
|
Loading…
Reference in New Issue
Block a user