add sensor

This commit is contained in:
2021-02-01 14:58:12 +01:00
parent a7175989ad
commit f95a15dc95
4 changed files with 148 additions and 75 deletions

View File

@@ -8,13 +8,17 @@
#define FAN_PIN 13
#define PRINT_DELAY 5000
#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 1021
#define OFF_STATE "OFF"
#define ON_STATE "ON"
#define DEFAULT_FAN_STATE false
#define DEFAULT_FAN_PWM_GPIO 13
#define DEFAULT_FAN_TACH_GPIO 13
#define DEFAULT_ONEWIRE_GPIO 16
#define DEFAULT_THRES_LOW 25
#define DEFAULT_THRES_HIGH 70
#define DEFAULT_FAN_MAX_SPEED 1021
#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).
@@ -34,14 +38,24 @@ class FanSettings {
public:
bool fanStatus;
int fanSpeed;
int fanGpio;
int fanPwmGPIO;
int fanTachGPIO;
int fanMaxSpeed;
int thresLow;
int thresHigh;
int OneWireGPIO;
float sensorInTemp;
float sensorOutTemp;
static void read(FanSettings& settings, JsonObject& root) {
root["oneWire_gpio"] = settings.OneWireGPIO;
root["sensor_in_temp"] = settings.sensorInTemp;
root["sensor_out_temp"] = settings.sensorOutTemp;
root["fan_status"] = settings.fanStatus;
root["fan_gpio"] = settings.fanGpio;
root["fan_pwm_gpio"] = settings.fanPwmGPIO;
root["fan_tach_gpio"] = settings.fanTachGPIO;
root["fan_max_speed"] = settings.fanMaxSpeed;
root["temperature_thres_low"] = settings.thresLow;
root["temperature_thres_high"] = settings.thresHigh;
@@ -54,22 +68,28 @@ class FanSettings {
}
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.println(" ** Fan update [status:" + (String)newFanState + "|gpio:" + (String)newFanGpio + "|mxspd:" + (String)newMaxSpeed + "|low:" + (String)newThresLow + "|high:" + (String)newThresHigh + "]");
boolean newFanState = root["fan_status"] | DEFAULT_FAN_STATE;
int newFanPwmGPIO = root["fan_pwm_gpio"] | DEFAULT_FAN_PWM_GPIO;
int newFanTachGPIO = root["fan_tach_gpio"] | DEFAULT_FAN_TACH_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;
int newOneWireGPIO = root["sensor_onewire_gpio"] | DEFAULT_ONEWIRE_GPIO;
Serial.println(" ** Fan update [status:" + (String)newFanState + "|gpio:" + (String)newFanPwmGPIO + "|mxspd:" + (String)newMaxSpeed + "|low:" + (String)newThresLow + "|high:" + (String)newThresHigh + "]");
if ( fanState.fanStatus != newFanState
|| fanState.fanGpio != newFanGpio
|| fanState.fanPwmGPIO != newFanPwmGPIO
|| fanState.fanTachGPIO != newFanTachGPIO
|| fanState.fanMaxSpeed != newMaxSpeed
|| fanState.thresLow != newThresLow
|| fanState.thresHigh != newThresHigh ) {
|| fanState.thresHigh != newThresHigh
|| fanState.OneWireGPIO != newOneWireGPIO ) {
fanState.fanStatus = newFanState;
fanState.fanGpio = newFanGpio;
fanState.fanPwmGPIO = newFanPwmGPIO;
fanState.fanTachGPIO = newFanTachGPIO;
fanState.fanMaxSpeed = newMaxSpeed;
fanState.thresLow = newThresLow;
fanState.thresHigh = newThresHigh;
fanState.OneWireGPIO = newOneWireGPIO;
Serial.println(" ** Fan CONFIG : CHANGED");
return StateUpdateResult::CHANGED;
}