Skip to content

Commit 4a06427

Browse files
committed
Update dependencies
Also tweak logging levels
1 parent d5a13ba commit 4a06427

7 files changed

Lines changed: 70 additions & 36 deletions

File tree

platformio.ini

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@ extra_configs =
1616
lib_deps =
1717
Wire
1818
SPI
19-
https://github.com/mathieucarbou/AsyncTCP.git#v3.2.4
20-
https://github.com/mathieucarbou/ESPAsyncWebServer.git#v3.1.5
21-
https://github.com/GuLinux/AsyncBufferedTcpLogger#v0.0.4
22-
https://github.com/GuLinux/AsyncWebserverUtils#v0.0.5
23-
https://github.com/GuLinux/WiFiManager.git#v0.0.3
19+
https://github.com/GuLinux/AsyncBufferedTcpLogger#v0.0.5
20+
https://github.com/GuLinux/AsyncWebserverUtils#v0.0.6
21+
https://github.com/GuLinux/WiFiManager.git#v0.0.4
2422
https://github.com/GuLinux/ArduinoOTA-Manager.git#v0.0.2
25-
ayushsharma82/ElegantOTA @ 3.1.1
26-
bblanchon/ArduinoJson@^7.2.0
23+
ESP32Async/AsyncTCP@^3.3.8
24+
ESP32Async/ESPAsyncWebServer@^3.7.4
25+
ayushsharma82/ElegantOTA @ 3.1.7
26+
bblanchon/ArduinoJson@^7.3.1
2727
adafruit/Adafruit Unified Sensor@^1.1.14
2828
adafruit/Adafruit BusIO@^1.14.5
2929
adafruit/Adafruit BME280 Library@^2.2.4

src/ambient/ambient-sht30.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ void APB::Ambient::readSensor() {
4141
if(sht.read()) {
4242
_reading = { sht.getTemperature(), sht.getHumidity() };
4343
// Log.traceln("reading values: %d degrees, %d humidity", _reading->temperature, _reading->humidity);
44+
#ifdef DEBUG_AMBIENT_STATUS
45+
Log.infoln(LOG_SCOPE "Ambient reading SHT4x: T=%F, H=%F, D=%F", reading.temperature, reading.humidity, reading.dewpoint());
46+
#endif
4447
} else {
4548
logSHT30Error("reading values");
4649
_reading.reset();

src/ambient/ambient-sht4x.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ bool APB::Ambient::initialiseSensor() {
3434
void APB::Ambient::readSensor() {
3535
Reading reading;
3636
if(!shtCheckForError(sht.measureHighPrecision(reading.temperature, reading.humidity), "Error reading temperature/humidity")) {
37+
#ifdef DEBUG_AMBIENT_STATUS
38+
Log.infoln(LOG_SCOPE "Ambient reading SHT4x: T=%F, H=%F, D=%F", reading.temperature, reading.humidity, reading.dewpoint());
39+
#endif
3740
_reading = reading;
3841
} else {
3942
_reading.reset();

src/heater.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,9 @@ void APB::Heater::Private::loop()
219219
}
220220

221221
if(temperature.has_value() && temperature.value() < -50) {
222+
#ifdef DEBUG_HEATER_STATUS
222223
Log.traceln("%s invalid temperature detected, discarding temperature", log_scope);
224+
#endif
223225
temperature = {};
224226
if(mode == Heater::Mode::dewpoint || mode == Heater::Mode::target_temperature) {
225227
Log.warningln("%s Lost temperature sensor, switching off.", log_scope);
@@ -303,9 +305,10 @@ void APB::Heater::Private::privateSetup() {
303305

304306
void APB::Heater::Private::readTemperature() {
305307
auto rawValue = analogRead(pinout->thermistor);
306-
// Log.infoln("Thermistor %d raw value for pin %d: %d", index, pinout->thermistor, rawValue);
307308
temperature = smoothThermistor->temperature();
308-
// Log.traceln("%s readThemperature from smoothThermistor: %F", log_scope, *temperature);
309+
#ifdef DEBUG_HEATER_STATUS
310+
Log.infoln("%s readThemperature: raw=%F, from smoothThermistor: %F", log_scope, rawValue, *temperature);
311+
#endif
309312
}
310313

311314
float APB::Heater::Private::getDuty() const {
@@ -328,6 +331,13 @@ void APB::Heater::Private::writePinDuty(float pwm) {
328331

329332
void APB::Heaters::toJson(JsonArray heatersStatus) {
330333
std::for_each(Heaters::Instance.begin(), Heaters::Instance.end(), [heatersStatus](Heater &heater) {
331-
heater.toJson(heatersStatus[heater.index()]);
334+
JsonObject heaterObject = heatersStatus[heater.index()].to<JsonObject>();
335+
heater.toJson(heaterObject);
332336
});
333337
}
338+
339+
void APB::Heaters::load() {
340+
}
341+
342+
void APB::Heaters::save() {
343+
}

src/heater.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ namespace Heaters {
1818
using Array = std::array<APB::Heater, APB_HEATERS_SIZE>;
1919
extern Array &Instance;
2020
void toJson(JsonArray heatersStatus);
21+
void load();
22+
void save();
2123
}
2224

2325

src/powermonitor.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ void APB::PowerMonitor::setup(Scheduler &scheduler) {
4040
_status.shuntVoltage = _ina219.getShuntVoltage();
4141
setCharge();
4242
if(_status.power == 0 && _status.current == 0) {
43+
#ifdef DEBUG_POWERMONITOR_STATUS
4344
Log.warningln("Powermonitor: Reporting power as 0. INA status: %d", _ina219.isConnected());
45+
#endif
4446
}
4547
});
4648
scheduler.addTask(_loopTask);

src/webserver.cpp

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,20 @@ void APB::WebServer::setup() {
5757
webserver.on("/api/status", HTTP_GET, std::bind(&WebServer::onGetStatus, this, _1));
5858
webserver.on("/api/ambient", HTTP_GET, std::bind(&WebServer::onGetAmbient, this, _1));
5959
webserver.on("/api/heaters", HTTP_GET, std::bind(&WebServer::onGetHeaters, this, _1));
60+
onJsonRequest("/api/heater", std::bind(&APB::WebServer::onPostSetHeater, this, _1, _2), HTTP_POST);
61+
62+
events.onConnect([](AsyncEventSourceClient *client){
63+
Log.infoln(LOG_SCOPE "[SSE] Client connected: lastId=%d, %s", client->lastId(), client->client()->remoteIP().toString().c_str());
64+
});
65+
events.onDisconnect([](AsyncEventSourceClient *client){
66+
Log.infoln(LOG_SCOPE "[SSE] Client disconnected");
67+
});
68+
webserver.addHandler(&events);
69+
6070
webserver.serveStatic("/", LittleFS, "/web/").setDefaultFile("index.html");
6171
webserver.serveStatic("/static", LittleFS, "/web/static").setDefaultFile("index.html");
62-
webserver.addHandler(&events);
63-
onJsonRequest("/api/heater", std::bind(&APB::WebServer::onPostSetHeater, this, _1, _2), HTTP_POST);
72+
73+
6474

6575
Log.infoln(LOG_SCOPE "Setup finished");
6676
webserver.begin();
@@ -116,13 +126,6 @@ void APB::WebServer::onGetHistory(AsyncWebServerRequest *request) {
116126
request->send(response);
117127
}
118128

119-
void APB::WebServer::onNotFound(AsyncWebServerRequest *request) {
120-
JsonResponse response(request, 404);
121-
response.root()["error"] = "NotFound";
122-
response.root()["url"] = request->url();
123-
}
124-
125-
126129
void APB::WebServer::onPostWriteConfig(AsyncWebServerRequest *request) {
127130
Settings::Instance.save();
128131
onGetConfig(request);
@@ -141,7 +144,9 @@ void APB::WebServer::onGetAmbient(AsyncWebServerRequest *request) {
141144

142145
void APB::WebServer::onGetHeaters(AsyncWebServerRequest *request) {
143146
JsonResponse response(request);
144-
Heaters::toJson(response.root().to<JsonArray>());
147+
Log.infoln(LOG_SCOPE "onGetHeaters: %d", Heaters::Instance.size());
148+
JsonArray responseArray = response.root().to<JsonArray>();
149+
Heaters::toJson(responseArray);
145150
}
146151

147152
void APB::WebServer::onGetPower(AsyncWebServerRequest *request) {
@@ -251,15 +256,38 @@ void APB::WebServer::onPostSetHeater(AsyncWebServerRequest *request, JsonVariant
251256
.range("index", {0}, {Heaters::Instance.size()-1})
252257
.range("max_duty", {0}, {1})
253258
.choice("mode", Heater::validModes()).invalid()) return;
254-
Heater &heater = Heaters::Instance[json["index"]];
259+
255260
Heater::Mode mode = Heater::modeFromString(json["mode"]);
261+
if(mode != Heater::Mode::off) {
262+
if(validation.range("max_duty", {0}, {1}).required<float>("max_duty").invalid()) return;
263+
if(mode == Heater::Mode::dewpoint) {
264+
if(validation
265+
.range("dewpoint_offset", {-30}, {30})
266+
.required<float>("dewpoint_offset")
267+
.range("min_duty", 0, 1)
268+
.range("ramp_offset", 0, 20)
269+
.invalid()
270+
) return;
271+
}
272+
if(mode == Heater::Mode::target_temperature) {
273+
if(validation
274+
.range("target_temperature", {-50}, {50})
275+
.required<float>("target_temperature")
276+
.range("min_duty", 0, 1)
277+
.range("ramp_offset", 0, 20)
278+
.invalid()
279+
) return;
280+
}
281+
}
282+
283+
Heater &heater = Heaters::Instance[json["index"]];
284+
256285
if(mode == Heater::Mode::off) {
257286
heater.setMaxDuty(0);
258287
onGetHeaters(request);
259288
return;
260289
}
261290

262-
if(validation.range("max_duty", {0}, {1}).required<float>("max_duty").invalid()) return;
263291
float duty = json["max_duty"];
264292
static const char *temperatureErrorMessage = "Unable to set target temperature. Heater probably doesn't have a temperature sensor.";
265293
static const char *dewpointTemperatureErrorMessage = "Unable to set target temperature. Either the heater doesn't have a temperature sensor, or you're missing an ambient sensor.";
@@ -268,13 +296,6 @@ void APB::WebServer::onPostSetHeater(AsyncWebServerRequest *request, JsonVariant
268296
heater.setMaxDuty(json["max_duty"]);
269297
}
270298
if(mode == Heater::Mode::dewpoint) {
271-
if(validation
272-
.range("dewpoint_offset", {-30}, {30})
273-
.required<float>("dewpoint_offset")
274-
.range("min_duty", 0, 1)
275-
.range("ramp_offset", 0, 20)
276-
.invalid()
277-
) return;
278299
float dewpointOffset = json["dewpoint_offset"];
279300
float minDuty = json["min_duty"].is<float>() ? json["min_duty"] : 0.f;
280301
float rampOffset = json["ramp_offset"].is<float>() ? json["ramp_offset"] : 0.f;
@@ -284,13 +305,6 @@ void APB::WebServer::onPostSetHeater(AsyncWebServerRequest *request, JsonVariant
284305
}
285306
}
286307
if(mode == Heater::Mode::target_temperature) {
287-
if(validation
288-
.range("target_temperature", {-50}, {50})
289-
.required<float>("target_temperature")
290-
.range("min_duty", 0, 1)
291-
.range("ramp_offset", 0, 20)
292-
.invalid()
293-
) return;
294308
float targetTemperature = json["target_temperature"];
295309
float rampOffset = json["ramp_offset"].is<float>() ? json["ramp_offset"] : 0.f;
296310
float minDuty = json["min_duty"].is<float>() ? json["min_duty"] : 0.f;

0 commit comments

Comments
 (0)