This commit is contained in:
Gašper Dobrovoljc
2023-03-27 14:50:35 +02:00
parent 59252e81b0
commit 8e64445c25
17 changed files with 902 additions and 150 deletions

View File

@@ -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();
}
}