1717#include " statusled.h"
1818#include < ArduinoOTA.h>
1919#include < AsyncTCP.h>
20+ #include " asyncbufferedtcplogger.h"
2021
22+ #include " time.h"
23+ #include " esp_sntp.h"
2124Scheduler scheduler;
2225AsyncServer loggerServer{9911 };
2326
24- class BufferedLogger : public Print {
25- public:
26- BufferedLogger () {
27- loggerServer.onClient ([this ](void *,AsyncClient *c){
28- this ->client = c;
29- }, nullptr );
30- }
31-
32- virtual size_t write (uint8_t c) {
33- if (!client) {
34- return 0 ;
35- }
36- buffer[currentPosition++] = c;
37- if (c == ' \n ' ) {
38- client->write (buffer.data (), currentPosition);
39- reset ();
40- }
41- return 1 ;
42- }
43-
44- private:
45- AsyncClient *client = nullptr ;
46- void reset () {
47- std::fill (std::begin (buffer), std::end (buffer), 0 );
48- currentPosition = 0 ;
49- }
50- std::array<char , 1024 > buffer = {0 };
51- uint16_t currentPosition = 0 ;
52- };
53-
54- BufferedLogger bufferedLogger;
27+
28+ APB::AsyncBufferedTCPLogger bufferedLogger{loggerServer};
5529
5630#ifdef ONEBUTTON_USER_BUTTON_1
5731OneButton userButton;
@@ -66,7 +40,6 @@ APB::WebServer webServer(scheduler);
6640using namespace std ::placeholders;
6741
6842void setupArduinoOTA ();
69- void addHistoryEntry ();
7043
7144void setup () {
7245 Serial.begin (115200 );
@@ -97,6 +70,7 @@ void setup() {
9770
9871 webServer.setup ();
9972 setupArduinoOTA ();
73+ APB::History::Instance.setup (scheduler);
10074
10175#ifdef ONEBUTTON_USER_BUTTON_1
10276 userButton.attachDoubleClick ([]() {
@@ -105,10 +79,8 @@ void setup() {
10579 });
10680 userButton.setup (ONEBUTTON_USER_BUTTON_1, INPUT, false );
10781#endif
108- new Task (APB_HISTORY_TASK_SECONDS, TASK_FOREVER, addHistoryEntry, &scheduler, true );
10982}
11083
111- uint64_t el = 0 ;
11284void loop () {
11385 APB::WiFiManager::Instance.loop ();
11486 scheduler.execute ();
@@ -120,24 +92,6 @@ void loop() {
12092 ArduinoOTA.handle ();
12193}
12294
123- void addHistoryEntry () {
124- APB::History::Entry entry {
125- esp_timer_get_time () / 1000'000
126- };
127-
128- #ifndef APB_AMBIENT_TEMPERATURE_SENSOR_NONE
129- entry.setAmbient (APB::Ambient::Instance.reading ());
130- #endif
131-
132- #if APB_HEATERS_SIZE > 0
133- for (uint8_t i=0 ; i<APB_HEATERS_TEMP_SENSORS; i++) {
134- entry.heaters [i].set (APB::Heaters::Instance[i]);
135- }
136- #endif
137- entry.setPower (APB::PowerMonitor::Instance.status ());
138- APB::History::Instance.add (entry);
139- }
140-
14195void setupArduinoOTA () {
14296 ArduinoOTA
14397 .onStart ([]() {
0 commit comments