new params

This commit is contained in:
2021-01-12 18:31:19 +01:00
parent 2cfd2afaee
commit 1598d4934a
5 changed files with 130 additions and 29 deletions

View File

@@ -1,16 +1,20 @@
#ifndef FanStateService_h
#define FanStateService_h
#include <FSPersistence.h>
#include <HttpEndpoint.h>
#define FAN_PIN 13
#define PRINT_DELAY 5000
#define DEFAULT_FAN_STATE false
#define OFF_STATE "OFF"
#define ON_STATE "ON"
#define DEFAULT_FAN_STATE false
#define DEFAULT_FAN_GPIO 13
#define DEFAULT_THRES_LOW 25
#define DEFAULT_THRES_HIGH 70
#define DEFAULT_FAN_MAX_SPEED 1024
#define OFF_STATE "OFF"
#define ON_STATE "ON"
// Note that the built-in LED is on when the pin is low on most NodeMCU boards.
// This is because the anode is tied to VCC and the cathode to the GPIO 4 (Arduino pin 2).
@@ -22,37 +26,54 @@
#define FAN_OFF 0x1
#endif
#define FAN_SETTINGS_FILE "/config/fanSettings.json"
#define FAN_SETTINGS_ENDPOINT_PATH "/rest/fanState"
class FanState {
class FanSettings {
public:
bool fanStatus;
int fanSpeed;
int fanGpio;
int fanMaxSpeed;
int thresLow;
int thresHigh;
static void read(FanState& settings, JsonObject& root) {
root["fan_status"] = settings.fanStatus;
static void read(FanSettings& settings, JsonObject& root) {
root["fan_status"] = settings.fanStatus;
root["fan_gpio"] = settings.fanGpio;
root["fan_max_speed"] = settings.fanMaxSpeed;
root["temperature_thres_low"] = settings.thresLow;
root["temperature_thres_high"] = settings.thresHigh;
String s = root["fan_status"];
Serial.print(" ** Fan read [" + s + "]\n");
}
static StateUpdateResult update(JsonObject& root, FanState& fanState) {
boolean newState = root["fan_status"] | DEFAULT_FAN_STATE;
Serial.print(" ** Fan update [" + (String)newState + "]\n");
if (fanState.fanStatus != newState) {
fanState.fanStatus = newState;
static StateUpdateResult update(JsonObject& root, FanSettings& fanState) {
boolean newFanState = root["fan_status"] | DEFAULT_FAN_STATE;
int newFanGpio = root["fan_gpio"] | DEFAULT_FAN_GPIO;
int newMaxSpeed = root["fan_max_speed"] | DEFAULT_FAN_MAX_SPEED;
int newThresLow = root["temperature_thres_low"] | DEFAULT_THRES_LOW;
int newThresHigh = root["temperature_thres_high"] | DEFAULT_THRES_HIGH;
Serial.print(" ** Fan update [" + (String)newFanState + "]\n");
if (fanState.fanStatus != newFanState || fanState.fanGpio != newFanGpio ) {
fanState.fanStatus = newFanState;
fanState.fanGpio = newFanGpio;
fanState.fanMaxSpeed = newMaxSpeed;
fanState.thresLow = newThresLow;
fanState.thresHigh = newThresHigh;
return StateUpdateResult::CHANGED;
}
return StateUpdateResult::UNCHANGED;
}
static void haRead(FanState& settings, JsonObject& root) {
static void haRead(FanSettings& settings, JsonObject& root) {
root["state"] = settings.fanStatus ? ON_STATE : OFF_STATE;
String s = root["state"];
Serial.print(" ** Fan haRead [" + s + "] \n");
}
static StateUpdateResult haUpdate(JsonObject& root, FanState& fanState) {
static StateUpdateResult haUpdate(JsonObject& root, FanSettings& fanState) {
String state = root["state"];
String s = root["state"];
Serial.print(" ** Fan haUpdate [" + s + "] \n");
@@ -72,13 +93,15 @@ class FanState {
}
};
class FanStateService : public StatefulService<FanState> {
class FanStateService : public StatefulService<FanSettings> {
public:
FanStateService(AsyncWebServer* server, SecurityManager* securityManager);
FanStateService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager);
void begin();
void save();
private:
HttpEndpoint<FanState> _httpEndpoint;
HttpEndpoint<FanSettings> _httpEndpoint;
FSPersistence<FanSettings> _fsPersistence;
void registerConfig();
void onConfigUpdated();