#include #include #include #include #include #include "mqtt.h" #include "wifi.h" char consoleBuffer[64] = ""; char *consoleBufferW = consoleBuffer; void consoleLoop() { uint8_t i = 0; while (Serial.available() > 0 && i++ < 100) { const char symbol = static_cast(Serial.read()); if (symbol == '\n' || symbol == '\r') { if (*consoleBuffer != 0) { Serial.print('\n'); info("CONSOLE", "> %s", consoleBuffer); consoleHandle(consoleBuffer); consoleBufferW = consoleBuffer; *consoleBufferW = 0; } } else if (symbol == '\b') { if (consoleBufferW > consoleBuffer) { consoleBufferW--; *consoleBufferW = 0; Serial.print("\b \b"); } } else { if (consoleBufferW < consoleBuffer + sizeof consoleBuffer - 1) { *consoleBufferW = symbol; consoleBufferW++; *consoleBufferW = 0; Serial.print("\r"); Serial.print(consoleBuffer); } else { Serial.print("\nCONSOLE BUFFER OVERFLOW\n"); Serial.print(consoleBuffer); } } } } void consoleHandle(const char *cmd) { if (strcmp(cmd, "help") == 0) { info("CONSOLE", "help : print this help"); info("CONSOLE", "net : print network info"); info("CONSOLE", "reboot : reboot system"); info("CONSOLE", "wifi : reconnect wifi"); info("CONSOLE", "mqtt : reconnect mqtt"); info("CONSOLE", "debug : toggle debug log"); } else if (strcmp(cmd, "net") == 0) { info("CONSOLE", "MAC: %17s", WiFi.macAddress().c_str()); info("CONSOLE", "IP: %17s", WiFi.localIP().toString().c_str()); info("CONSOLE", "Gateway: %17s", WiFi.gatewayIP().toString().c_str()); info("CONSOLE", "SSID: %17s", WiFi.SSID().c_str()); info("CONSOLE", "BSSID: %17s", WiFi.BSSIDstr().c_str()); info("CONSOLE", "RSSI: %17d", WiFi.RSSI()); } else if (strcmp(cmd, "reboot") == 0) { info("CONSOLE", "Rebooting..."); delay(500); yield(); ESP.restart(); } else if (strcmp(cmd, "wifi") == 0) { info("CONSOLE", "Reconnecting WiFi..."); wifiConnect(); } else if (strcmp(cmd, "mqtt") == 0) { info("CONSOLE", "Reconnecting MQTT..."); mqttDisconnect(); } else if (strcmp(cmd, "debug") == 0) { setDebugEnabled(!isDebugEnabled()); info("CONSOLE", "DEBUG: %s", isDebugEnabled() ? "ON" : "OFF"); } else { info("CONSOLE", "Unknown command: %s", cmd); } }