logLoop for console + USB/OTA envs
This commit is contained in:
parent
5b9e0d3f63
commit
ff14910c89
@ -1,19 +1,43 @@
|
|||||||
[env:Sporttafel]
|
[common]
|
||||||
platform = espressif32
|
platform = espressif32
|
||||||
board = esp32dev
|
board = esp32dev
|
||||||
framework = arduino
|
framework = arduino
|
||||||
build_type = debug
|
build_type = debug
|
||||||
board_build.filesystem = littlefs
|
board_build.filesystem = littlefs
|
||||||
lib_deps = bblanchon/ArduinoJson
|
lib_deps = bblanchon/ArduinoJson
|
||||||
; https://github.com/adafruit/Adafruit_NeoPixel
|
; https://github.com/adafruit/Adafruit_NeoPixel
|
||||||
https://github.com/me-no-dev/ESPAsyncWebServer.git
|
https://github.com/me-no-dev/ESPAsyncWebServer.git
|
||||||
build_flags = -DWIFI_SSID=\"HappyNet\"
|
build_flags = -DWIFI_SSID=\"HappyNet\"
|
||||||
-DWIFI_PKEY=\"1Grausame!Sackratte7\"
|
-DWIFI_PKEY=\"1Grausame!Sackratte7\"
|
||||||
-DWIFI_HOST=\"Sporttafel\"
|
-DWIFI_HOST=\"Sporttafel\"
|
||||||
upload_port = 10.0.0.119
|
|
||||||
upload_protocol = espota
|
|
||||||
;upload_port = /dev/ttyUSB0
|
|
||||||
;upload_speed = 921600
|
|
||||||
monitor_port = /dev/ttyUSB0
|
monitor_port = /dev/ttyUSB0
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
monitor_filters = esp32_exception_decoder
|
monitor_filters = esp32_exception_decoder
|
||||||
|
|
||||||
|
[env:Sporttafel_USB]
|
||||||
|
platform = ${common.platform}
|
||||||
|
board = ${common.board}
|
||||||
|
framework = ${common.framework}
|
||||||
|
build_type = ${common.build_type}
|
||||||
|
board_build.filesystem = ${common.board_build.filesystem}
|
||||||
|
lib_deps = ${common.lib_deps}
|
||||||
|
build_flags = ${common.build_flags}
|
||||||
|
monitor_port = ${common.monitor_port}
|
||||||
|
monitor_speed = ${common.monitor_speed}
|
||||||
|
monitor_filters = ${common.monitor_filters}
|
||||||
|
upload_port = /dev/ttyUSB0
|
||||||
|
upload_speed = 921600
|
||||||
|
|
||||||
|
[env:Sporttafel_OTA]
|
||||||
|
platform = ${common.platform}
|
||||||
|
board = ${common.board}
|
||||||
|
framework = ${common.framework}
|
||||||
|
build_type = ${common.build_type}
|
||||||
|
board_build.filesystem = ${common.board_build.filesystem}
|
||||||
|
lib_deps = ${common.lib_deps}
|
||||||
|
build_flags = ${common.build_flags}
|
||||||
|
monitor_port = ${common.monitor_port}
|
||||||
|
monitor_speed = ${common.monitor_speed}
|
||||||
|
monitor_filters = ${common.monitor_filters}
|
||||||
|
upload_port = /dev/ttyUSB0
|
||||||
|
upload_speed = 921600
|
||||||
|
|||||||
@ -31,7 +31,7 @@ void clockLoop() {
|
|||||||
clockOffset = now;
|
clockOffset = now;
|
||||||
} else {
|
} else {
|
||||||
startupTime = now - clockOffset;
|
startupTime = now - clockOffset;
|
||||||
info("clock set after %ld seconds! So startup was at %s", clockOffset, getClockStr());
|
info("clock set after %ld seconds! So startup was at %s", clockOffset, getStartupStr());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,16 +39,44 @@ bool isClockSet() {
|
|||||||
return startupTime != 0;
|
return startupTime != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char buffer[20];
|
|
||||||
|
|
||||||
char *getClockStr() {
|
char *getClockStr(const time_t epoch) {
|
||||||
const auto now = time(nullptr);
|
auto now = epoch;
|
||||||
tm t{0};
|
if (now == 0) {
|
||||||
|
now = time(nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
tm t{};
|
||||||
localtime_r(&now, &t);
|
localtime_r(&now, &t);
|
||||||
|
|
||||||
|
static char buffer[20];
|
||||||
snprintf(buffer, sizeof buffer, "%04d-%02d-%02d %02d:%02d:%02d", t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec);
|
snprintf(buffer, sizeof buffer, "%04d-%02d-%02d %02d:%02d:%02d", t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec);
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *getStartupStr() {
|
||||||
|
return getClockStr(startupTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
time_t getUptimeSeconds() {
|
||||||
|
return time(nullptr) - startupTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *getUptimeStr() {
|
||||||
|
const auto totalSeconds = getUptimeSeconds();
|
||||||
|
const auto totalMinutes = totalSeconds / 60;
|
||||||
|
const auto totalHours = totalMinutes / 60;
|
||||||
|
|
||||||
|
const auto partSeconds = totalSeconds % 60;
|
||||||
|
const auto partMinutes = totalMinutes % 60;
|
||||||
|
const auto partHours = totalHours % 24;
|
||||||
|
const auto partDays = totalHours / 24;
|
||||||
|
|
||||||
|
static char buffer[20];
|
||||||
|
snprintf(buffer, sizeof buffer, "%dd %2dh %2dm %2ds", partDays, partHours, partMinutes, partSeconds);
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
bool isCorrectTime(const time_t now) {
|
bool isCorrectTime(const time_t now) {
|
||||||
return now < CLOCK_EPOCH_SECONDS_MIN;
|
return now < CLOCK_EPOCH_SECONDS_MIN;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,7 +7,13 @@ void clockLoop();
|
|||||||
|
|
||||||
bool isClockSet();
|
bool isClockSet();
|
||||||
|
|
||||||
char * getClockStr();
|
char *getClockStr(time_t epoch = 0);
|
||||||
|
|
||||||
|
char *getStartupStr();
|
||||||
|
|
||||||
|
time_t getUptimeSeconds();
|
||||||
|
|
||||||
|
char *getUptimeStr();
|
||||||
|
|
||||||
bool isCorrectTime(time_t now);
|
bool isCorrectTime(time_t now);
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <cstdarg>
|
#include <cstdarg>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
#include <WiFi.h>
|
||||||
|
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
|
|
||||||
@ -15,6 +16,68 @@ void logSetup() {
|
|||||||
info("Startup");
|
info("Startup");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void execute(const char *cmd) {
|
||||||
|
if (strcmp(cmd, "help") == 0) {
|
||||||
|
info("HELP");
|
||||||
|
info(" network");
|
||||||
|
info(" reboot");
|
||||||
|
info(" reconnect");
|
||||||
|
info(" time");
|
||||||
|
} else if (strcmp(cmd, "network") == 0) {
|
||||||
|
info("NETWORK");
|
||||||
|
info(" %-10s %s", "mac:", WiFi.macAddress().c_str());
|
||||||
|
info(" %-10s %s", "state:", WiFi.localIP() != 0 ? "connected" : "disconnected");
|
||||||
|
info(" %-10s %s", "ssid:", WiFi.SSID().c_str());
|
||||||
|
info(" %-10s %s", "bssid:", WiFi.BSSIDstr().c_str());
|
||||||
|
info(" %-10s %s", "ip:", WiFi.localIP().toString().c_str());
|
||||||
|
info(" %-10s %s", "mask:", WiFi.subnetMask().toString().c_str());
|
||||||
|
info(" %-10s %s", "gateway:", WiFi.gatewayIP().toString().c_str());
|
||||||
|
info(" %-10s %s", "dns:", WiFi.dnsIP().toString().c_str());
|
||||||
|
} else if (strcmp(cmd, "reboot") == 0) {
|
||||||
|
info("REBOOT");
|
||||||
|
delay(1000);
|
||||||
|
yield();
|
||||||
|
ESP.restart();
|
||||||
|
} else if (strcmp(cmd, "reconnect") == 0) {
|
||||||
|
info("RECONNECT");
|
||||||
|
WiFi.disconnect();
|
||||||
|
} else if (strcmp(cmd, "time") == 0) {
|
||||||
|
info("TIME");
|
||||||
|
info(" %-10s %s", "epoch:", time(nullptr));
|
||||||
|
info(" %-10s %s", "real:", getClockStr());
|
||||||
|
info(" %-10s %s", "startup:", getStartupStr());
|
||||||
|
info(" %-10s %s", "uptime:", getUptimeStr());
|
||||||
|
} else {
|
||||||
|
info("UNKNOWN COMMAND: %s", cmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void logLoop() {
|
||||||
|
static char cmd[64];
|
||||||
|
static auto write = cmd;
|
||||||
|
if (Serial.available() > 0) {
|
||||||
|
const auto c = static_cast<char>(Serial.read());
|
||||||
|
switch (c) {
|
||||||
|
case 13:
|
||||||
|
execute(cmd);
|
||||||
|
write = cmd;
|
||||||
|
*write = 0;
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
Serial.print(c);
|
||||||
|
if (write > cmd) {
|
||||||
|
*write-- = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Serial.print(c);
|
||||||
|
*write = c;
|
||||||
|
write++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void log(const LogLevel level, const char *format, ...) {
|
void log(const LogLevel level, const char *format, ...) {
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
|
|||||||
@ -10,6 +10,8 @@ enum LogLevel {
|
|||||||
|
|
||||||
void logSetup();
|
void logSetup();
|
||||||
|
|
||||||
|
void logLoop();
|
||||||
|
|
||||||
void error(const char *format, ...);
|
void error(const char *format, ...);
|
||||||
|
|
||||||
void warn(const char *format, ...);
|
void warn(const char *format, ...);
|
||||||
|
|||||||
@ -15,6 +15,7 @@ void setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
logLoop();
|
||||||
wifiLoop();
|
wifiLoop();
|
||||||
appLoop();
|
appLoop();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user