This commit is contained in:
2021-01-13 17:14:26 +01:00
parent 1598d4934a
commit c5d94bd1da
5 changed files with 43 additions and 12 deletions

View File

@@ -7,6 +7,7 @@
[factory_settings] [factory_settings]
build_flags = build_flags =
; WiFi settings ; WiFi settings
-D FACTORY_WIFI_SSID=\"\" -D FACTORY_WIFI_SSID=\"\"
-D FACTORY_WIFI_PASSWORD=\"\" -D FACTORY_WIFI_PASSWORD=\"\"
-D FACTORY_WIFI_HOSTNAME=\"#{platform}-#{unique_id}\" ; supports placeholders -D FACTORY_WIFI_HOSTNAME=\"#{platform}-#{unique_id}\" ; supports placeholders
@@ -30,7 +31,7 @@ build_flags =
; NTP settings ; NTP settings
-D FACTORY_NTP_ENABLED=true -D FACTORY_NTP_ENABLED=true
-D FACTORY_NTP_TIME_ZONE_LABEL=\"Europe/London\" -D FACTORY_NTP_TIME_ZONE_LABEL=\"Europe/Brussels\"
-D FACTORY_NTP_TIME_ZONE_FORMAT=\"GMT0BST,M3.5.0/1,M10.5.0\" -D FACTORY_NTP_TIME_ZONE_FORMAT=\"GMT0BST,M3.5.0/1,M10.5.0\"
-D FACTORY_NTP_SERVER=\"time.google.com\" -D FACTORY_NTP_SERVER=\"time.google.com\"

View File

@@ -101,7 +101,7 @@ function FanStatusRestControllerForm(props: FanStatusRestControllerFormProps) {
margin="normal" margin="normal"
/> />
<TextValidator <TextValidator
validators={['required', 'isNumber', 'minNumber:0', 'maxNumber:100']} validators={['required', 'isNumber', 'minNumber:0', 'maxNumber:1024']}
errorMessages={['Fan MAX is required', "Must be a number", "Must be 0 or higher", "Max value is 1024"]} errorMessages={['Fan MAX is required', "Must be a number", "Must be 0 or higher", "Max value is 1024"]}
name="fan_max_speed" name="fan_max_speed"
label="Fan Max Speed" label="Fan Max Speed"

View File

@@ -21,18 +21,18 @@ FanStateService::FanStateService(AsyncWebServer* server, FS* fs, SecurityManager
void FanStateService::begin() { void FanStateService::begin() {
_state.fanStatus = DEFAULT_FAN_STATE; _state.fanStatus = DEFAULT_FAN_STATE;
Serial.print("Starting The Fan Service"); Serial.println("Starting The Fan Service + read from FS");
_fsPersistence.readFromFS(); _fsPersistence.readFromFS();
onConfigUpdated(); onConfigUpdated();
} }
void FanStateService::onConfigUpdated() { void FanStateService::onConfigUpdated() {
Serial.print(" ** Fan UPDATE "); Serial.println(" ** Fan UPDATE to " + _state.fanMaxSpeed);
//digitalWrite(FAN_PIN, _state.fanStatus ? FAN_ON : FAN_OFF); //digitalWrite(FAN_PIN, _state.fanStatus ? FAN_ON : FAN_OFF);
analogWrite(FAN_PIN, _state.fanMaxSpeed); analogWrite(FAN_PIN, _state.fanMaxSpeed);
} }
void FanStateService::save() { void FanStateService::save() {
Serial.print(" ** Fan Write FS "); Serial.println(" ** Fan Write to FS ");
_fsPersistence.writeToFS(); _fsPersistence.writeToFS();
} }

View File

@@ -12,7 +12,7 @@
#define DEFAULT_FAN_GPIO 13 #define DEFAULT_FAN_GPIO 13
#define DEFAULT_THRES_LOW 25 #define DEFAULT_THRES_LOW 25
#define DEFAULT_THRES_HIGH 70 #define DEFAULT_THRES_HIGH 70
#define DEFAULT_FAN_MAX_SPEED 1024 #define DEFAULT_FAN_MAX_SPEED 1021
#define OFF_STATE "OFF" #define OFF_STATE "OFF"
#define ON_STATE "ON" #define ON_STATE "ON"
@@ -45,8 +45,12 @@ class FanSettings {
root["fan_max_speed"] = settings.fanMaxSpeed; root["fan_max_speed"] = settings.fanMaxSpeed;
root["temperature_thres_low"] = settings.thresLow; root["temperature_thres_low"] = settings.thresLow;
root["temperature_thres_high"] = settings.thresHigh; root["temperature_thres_high"] = settings.thresHigh;
String s = root["fan_status"]; // String s = (String)root["fan_status"] + "|" + (String)root["fan_gpio"] + "|" + (String)root["fan_max_speed"] + "|" + (String)root["temperature_thres_low"] + "|" + (String)root["temperature_thres_high"];
Serial.print(" ** Fan read [" + s + "]\n"); String s = root["fan_status"]; Serial.println(" ** Fan read [fan_status : " + s + "]");
String t = root["fan_gpio"]; Serial.println(" ** Fan read [fan_gpio : " + t + "]");
String u = root["fan_max_speed"]; Serial.println(" ** Fan read [fan_max_speed : " + u + "]");
String v = root["temperature_thres_low"]; Serial.println(" ** Fan read [temperature_thres_low : " + v + "]");
String w = root["temperature_thres_high"]; Serial.println(" ** Fan read [temperature_thres_high : " + w + "]");
} }
static StateUpdateResult update(JsonObject& root, FanSettings& fanState) { static StateUpdateResult update(JsonObject& root, FanSettings& fanState) {
@@ -55,28 +59,34 @@ class FanSettings {
int newMaxSpeed = root["fan_max_speed"] | DEFAULT_FAN_MAX_SPEED; int newMaxSpeed = root["fan_max_speed"] | DEFAULT_FAN_MAX_SPEED;
int newThresLow = root["temperature_thres_low"] | DEFAULT_THRES_LOW; int newThresLow = root["temperature_thres_low"] | DEFAULT_THRES_LOW;
int newThresHigh = root["temperature_thres_high"] | DEFAULT_THRES_HIGH; int newThresHigh = root["temperature_thres_high"] | DEFAULT_THRES_HIGH;
Serial.print(" ** Fan update [" + (String)newFanState + "]\n"); Serial.println(" ** Fan update [status:" + (String)newFanState + "|gpio:" + (String)newFanGpio + "|mxspd:" + (String)newMaxSpeed + "|low:" + (String)newThresLow + "|high:" + (String)newThresHigh + "]");
if (fanState.fanStatus != newFanState || fanState.fanGpio != newFanGpio ) { if ( fanState.fanStatus != newFanState
|| fanState.fanGpio != newFanGpio
|| fanState.fanMaxSpeed != newMaxSpeed
|| fanState.thresLow != newThresLow
|| fanState.thresHigh != newThresHigh ) {
fanState.fanStatus = newFanState; fanState.fanStatus = newFanState;
fanState.fanGpio = newFanGpio; fanState.fanGpio = newFanGpio;
fanState.fanMaxSpeed = newMaxSpeed; fanState.fanMaxSpeed = newMaxSpeed;
fanState.thresLow = newThresLow; fanState.thresLow = newThresLow;
fanState.thresHigh = newThresHigh; fanState.thresHigh = newThresHigh;
Serial.println(" ** Fan CONFIG : CHANGED");
return StateUpdateResult::CHANGED; return StateUpdateResult::CHANGED;
} }
Serial.println(" ** Fan CONFIG : UNCHANGED");
return StateUpdateResult::UNCHANGED; return StateUpdateResult::UNCHANGED;
} }
static void haRead(FanSettings& settings, JsonObject& root) { static void haRead(FanSettings& settings, JsonObject& root) {
root["state"] = settings.fanStatus ? ON_STATE : OFF_STATE; root["state"] = settings.fanStatus ? ON_STATE : OFF_STATE;
String s = root["state"]; String s = root["state"];
Serial.print(" ** Fan haRead [" + s + "] \n"); Serial.println(" ** Fan haRead [" + s + "]");
} }
static StateUpdateResult haUpdate(JsonObject& root, FanSettings& fanState) { static StateUpdateResult haUpdate(JsonObject& root, FanSettings& fanState) {
String state = root["state"]; String state = root["state"];
String s = root["state"]; String s = root["state"];
Serial.print(" ** Fan haUpdate [" + s + "] \n"); Serial.println(" ** Fan haUpdate [" + s + "]");
// parse new led state // parse new led state
boolean newState = false; boolean newState = false;
if (state.equals(ON_STATE)) { if (state.equals(ON_STATE)) {

View File

@@ -35,6 +35,19 @@ ESP8266React esp8266React(&server);
FanStateService fanStateService = FanStateService(&server,esp8266React.getFS(),esp8266React.getSecurityManager()); FanStateService fanStateService = FanStateService(&server,esp8266React.getFS(),esp8266React.getSecurityManager());
struct fanMonitor {
unsigned int rpmcount;
unsigned int last_time;
};
void ICACHE_RAM_ATTR handleInterrupt() {
rpmCount++;
if( rpmCount > 100 ) {
rpmCount=0;
Serial.println("100 RPM");
}
}
void setup() { void setup() {
// start serial and filesystem // start serial and filesystem
Serial.begin(SERIAL_BAUD_RATE); Serial.begin(SERIAL_BAUD_RATE);
@@ -52,8 +65,15 @@ void setup() {
// start the server // start the server
server.begin(); server.begin();
pinMode(14,INPUT); // 14 = D5
// attachInterrupt(digitalPinToInterrupt(14), handleInterrupt, RISING);
attachInterrupt(14,handleInterrupt,RISING);
} }
void loop() { void loop() {
// run the framework's loop function // run the framework's loop function
esp8266React.loop(); esp8266React.loop();