working 1

This commit is contained in:
2021-02-02 09:21:12 +01:00
parent f95a15dc95
commit 0287da7ff5
2 changed files with 54 additions and 32 deletions

View File

@@ -1,5 +1,9 @@
#include <FanStateService.h> #include <FanStateService.h>
FanStateService::FanStateService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager) : FanStateService::FanStateService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager) :
_httpEndpoint(FanSettings::read, _httpEndpoint(FanSettings::read,
FanSettings::update, FanSettings::update,
@@ -24,7 +28,24 @@ void FanStateService::begin() {
_state.fanStatus = DEFAULT_FAN_STATE; _state.fanStatus = DEFAULT_FAN_STATE;
Serial.println("Starting The Fan Service + read from FS"); Serial.println("Starting The Fan Service + read from FS");
_fsPersistence.readFromFS(); _fsPersistence.readFromFS();
this->oneWire1.begin(_state.OneWireGPIO);
this->sensor_intake.setOneWire(&this->oneWire1);
this->sensor_intake.begin();
// attachInterrupt(_state.fanTachGPIO,handleInterrupt,RISING);
onConfigUpdated(); onConfigUpdated();
lastpoll = millis();
}
void FanStateService::SetLastPoll(unsigned long l) {
this->lastpoll = l;
}
int FanStateService::getTachGPIO() {
return _state.fanTachGPIO;
} }
void FanStateService::onConfigUpdated() { void FanStateService::onConfigUpdated() {
@@ -36,4 +57,14 @@ void FanStateService::onConfigUpdated() {
void FanStateService::save() { void FanStateService::save() {
Serial.println(" ** Fan Write to FS "); Serial.println(" ** Fan Write to FS ");
_fsPersistence.writeToFS(); _fsPersistence.writeToFS();
}
void FanStateService::compute() {
unsigned long period = millis() - this->lastpoll;
this->sensor_intake.requestTemperatures();
this->Tin = this->sensor_intake.getTempCByIndex(0);
this->Tout = this->sensor_intake.getTempCByIndex(1);
float curRpm = 60000/period*this->RPM/2; // Hall sensor = 2 tick per rotation
Serial.print("Intake: " + (String) this->Tin + " - " + (String) this->Tout + " ["+ (String) curRpm + " RPM ]\n");
this->RPM=0;
} }

View File

@@ -5,36 +5,25 @@
*/ */
#include <FanStateService.h> #include <FanStateService.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 14 #define ONE_WIRE_BUS 14
#define SERIAL_BAUD_RATE 115200 #define SERIAL_BAUD_RATE 115200
#define PWM_PROBE_MS 5000 #define PWM_PROBE_MS 5000
OneWire oneWire1(ONE_WIRE_BUS);
DallasTemperature sensor_intake(&oneWire1);
AsyncWebServer server(80); AsyncWebServer server(80);
ESP8266React esp8266React(&server); ESP8266React esp8266React(&server);
FanStateService fanStateService = FanStateService(&server,esp8266React.getFS(),esp8266React.getSecurityManager()); FanStateService fanStateService = FanStateService(&server,esp8266React.getFS(),esp8266React.getSecurityManager());
struct fanMonitor { void ICACHE_RAM_ATTR handleInterrupt() {
unsigned long last_poll; fanStateService.RPM++;
unsigned int rpmcount;
unsigned int last_time;
};
void ICACHE_RAM_ATTR handleInterrupt( struct fanMonitor &fm ) {
fm.rpmcount++;
if( fm.rpmcount > 100 ) {
fm.rpmcount=0;
Serial.println("100 RPM");
}
} }
fanMonitor fm;
void setup() { void setup() {
// start serial and filesystem // start serial and filesystem
@@ -45,7 +34,6 @@ void setup() {
// load the initial light settings // load the initial light settings
fanStateService.begin(); fanStateService.begin();
sensor_intake.begin();
// Serial.println(" FAN GPIO = " + fanStateService.fan); // Serial.println(" FAN GPIO = " + fanStateService.fan);
@@ -54,15 +42,23 @@ void setup() {
lightMqttSettingsService.begin(); lightMqttSettingsService.begin();
*/ */
// pinMode(14,INPUT); // 14 = D5
// attachInterrupt(digitalPinToInterrupt(14), handleInterrupt, RISING);
Serial.println("================= SETUP ================== ");
Serial.println("Configure pin " + (String)fanStateService.getTachGPIO());
pinMode(fanStateService.getTachGPIO(),INPUT);
attachInterrupt(fanStateService.getTachGPIO(),handleInterrupt,RISING);
Serial.println("================= END ================== ");
// start the server // start the server
server.begin(); server.begin();
fm.last_poll=millis();
pinMode(14,INPUT); // 14 = D5
// attachInterrupt(digitalPinToInterrupt(14), handleInterrupt, RISING);
// attachInterrupt(14,handleInterrupt,RISING);
} }
@@ -70,14 +66,9 @@ void setup() {
void loop() { void loop() {
// run the framework's loop function // run the framework's loop function
if( ( millis() - fm.last_poll ) > PWM_PROBE_MS ) { if( ( millis() - fanStateService.lastpoll ) > PWM_PROBE_MS ) {
fm.last_poll = millis(); fanStateService.compute();
Serial.print((String) fm.last_poll + " - Compute"); fanStateService.SetLastPoll(millis());
sensor_intake.requestTemperatures();
float T1 = sensor_intake.getTempCByIndex(0);
float T2 = sensor_intake.getTempCByIndex(1);
Serial.print("Intake: " + (String) T1 + " - " + (String) T2 + "\n");
} }
esp8266React.loop(); esp8266React.loop();