Work
This commit is contained in:
81
src/main.cpp
81
src/main.cpp
@@ -8,11 +8,11 @@
|
||||
#include <SPIFFS.h>
|
||||
#include <WiFi.h>
|
||||
|
||||
void sendSensorData();
|
||||
void readSensor();
|
||||
void setupSensor();
|
||||
|
||||
const char *ssid = "stoenka";
|
||||
const char *password = "topavem2020";
|
||||
const char *ssid = "Vegova RVP4";
|
||||
const char *password = "Vegova_RVP4";
|
||||
|
||||
DHT *dht;
|
||||
Settings settings;
|
||||
@@ -35,7 +35,7 @@ void setupWifi() {
|
||||
|
||||
void onConnect(AsyncEventSourceClient *client) {
|
||||
Serial.println("New client connected");
|
||||
sendSensorData();
|
||||
readSensor();
|
||||
}
|
||||
|
||||
void setupServer() {
|
||||
@@ -44,11 +44,30 @@ void setupServer() {
|
||||
return;
|
||||
}
|
||||
|
||||
// POST /set - set the output pin
|
||||
AsyncCallbackJsonWebHandler *setHandler = new AsyncCallbackJsonWebHandler(
|
||||
"/set", [](AsyncWebServerRequest *req, JsonVariant &json) {
|
||||
if (json["pin"].isNull() || json["value"].isNull()) {
|
||||
req->send(400);
|
||||
return;
|
||||
}
|
||||
digitalWrite(json["pin"].as<int>(), json["value"].as<bool>());
|
||||
readSensor();
|
||||
req->send(200);
|
||||
});
|
||||
server.addHandler(setHandler);
|
||||
|
||||
// GET /settings - Get the current settings
|
||||
server.on("/settings", HTTP_GET, [](AsyncWebServerRequest *req) {
|
||||
StaticJsonDocument<200> json;
|
||||
json["refreshInterval"] = settings.getRefreshInterval();
|
||||
json["sensorPin"] = settings.getSensorPin();
|
||||
json["onTemp"] = settings.getOnTemp();
|
||||
json["onHum"] = settings.getOnHum();
|
||||
json["tempOffset"] = settings.getTempOffset();
|
||||
json["humOffset"] = settings.getHumOffset();
|
||||
json["heaterOn"] = settings.getHeaterOn();
|
||||
json["dehumOn"] = settings.getDehumOn();
|
||||
|
||||
String buffer;
|
||||
serializeJson(json, buffer);
|
||||
@@ -67,10 +86,30 @@ void setupServer() {
|
||||
settings.setSensorPin(json["sensorPin"].as<unsigned int>());
|
||||
setupSensor();
|
||||
}
|
||||
if (!json["onTemp"].isNull()) {
|
||||
settings.setOnTemp(json["onTemp"].as<float>());
|
||||
}
|
||||
if (!json["onHum"].isNull()) {
|
||||
settings.setOnHum(json["onHum"].as<float>());
|
||||
}
|
||||
if (!json["tempOffset"].isNull()) {
|
||||
settings.setTempOffset(json["tempOffset"].as<float>());
|
||||
}
|
||||
if (!json["humOffset"].isNull()) {
|
||||
settings.setHumOffset(json["humOffset"].as<float>());
|
||||
}
|
||||
req->send(200);
|
||||
});
|
||||
server.addHandler(settingsHandler);
|
||||
|
||||
server.onNotFound([](AsyncWebServerRequest *request) {
|
||||
if (request->method() == HTTP_OPTIONS) {
|
||||
request->send(200);
|
||||
} else {
|
||||
request->send(404);
|
||||
}
|
||||
});
|
||||
|
||||
events.onConnect(onConnect);
|
||||
server.addHandler(&events);
|
||||
server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.html");
|
||||
@@ -84,10 +123,33 @@ void setupSensor() {
|
||||
dht->begin();
|
||||
}
|
||||
|
||||
void sendSensorData() {
|
||||
void readSensor() {
|
||||
float temp = dht->readTemperature();
|
||||
float hum = dht->readHumidity();
|
||||
|
||||
float onTemp = settings.getOnTemp();
|
||||
float offTemp = onTemp + settings.getTempOffset();
|
||||
|
||||
float onHum = settings.getOnHum();
|
||||
float offHum = onHum + settings.getHumOffset();
|
||||
|
||||
if (temp <= onTemp) {
|
||||
digitalWrite(16, HIGH);
|
||||
} else {
|
||||
digitalWrite(16, LOW);
|
||||
}
|
||||
|
||||
if (hum >= onHum) {
|
||||
digitalWrite(17, HIGH);
|
||||
} else {
|
||||
digitalWrite(17, LOW);
|
||||
}
|
||||
|
||||
StaticJsonDocument<200> json;
|
||||
json["temp"] = (int)(dht->readTemperature() * 100 + 0.5) / 100.0;
|
||||
json["hum"] = dht->readHumidity();
|
||||
json["temp"] = (int)(temp * 100 + 0.5) / 100.0;
|
||||
json["hum"] = hum;
|
||||
json["out1"] = (bool)digitalRead(16);
|
||||
json["out2"] = (bool)digitalRead(17);
|
||||
|
||||
String buffer;
|
||||
serializeJson(json, buffer);
|
||||
@@ -98,6 +160,9 @@ void sendSensorData() {
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
|
||||
pinMode(16, OUTPUT);
|
||||
pinMode(17, OUTPUT);
|
||||
|
||||
setupWifi();
|
||||
setupServer();
|
||||
|
||||
@@ -112,6 +177,6 @@ void loop() {
|
||||
unsigned long currMillis = millis();
|
||||
if (currMillis - prevMillis > settings.getRefreshInterval()) {
|
||||
prevMillis = currMillis;
|
||||
sendSensorData();
|
||||
readSensor();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user