#ifndef WEBSERVER_H #define WEBSERVER_H #include #include #include "../../../USER_SETTINGS.h" // Needed for WiFi ssid and password #include "../../lib/ayushsharma82-ElegantOTA/src/ElegantOTA.h" #ifdef MQTT #include "../../lib/knolleary-pubsubclient/PubSubClient.h" #endif #include "../../lib/me-no-dev-AsyncTCP/src/AsyncTCP.h" #include "../../lib/me-no-dev-ESPAsyncWebServer/src/ESPAsyncWebServer.h" #include "../../lib/miwagner-ESP32-Arduino-CAN/ESP32CAN.h" #include "../config.h" // Needed for LED defines #ifdef MQTT #include "../mqtt/mqtt.h" #endif extern uint16_t SOC; //SOC%, 0-100.00 (0-10000) extern uint16_t StateOfHealth; //SOH%, 0-100.00 (0-10000) extern uint16_t battery_voltage; //V+1, 0-500.0 (0-5000) extern uint16_t battery_current; //A+1, Goes thru convert2unsignedint16 function (5.0A = 50, -5.0A = 65485) extern uint16_t capacity_Wh; //Wh, 0-60000 extern uint16_t remaining_capacity_Wh; //Wh, 0-60000 extern uint16_t max_target_discharge_power; //W, 0-60000 extern uint16_t max_target_charge_power; //W, 0-60000 extern uint8_t bms_status; //Enum, 0-5 extern uint8_t bms_char_dis_status; //Enum, 0-2 extern uint16_t stat_batt_power; //W, Goes thru convert2unsignedint16 function (5W = 5, -5W = 65530) extern uint16_t temperature_min; //C+1, Goes thru convert2unsignedint16 function (15.0C = 150, -15.0C = 65385) extern uint16_t temperature_max; //C+1, Goes thru convert2unsignedint16 function (15.0C = 150, -15.0C = 65385) extern uint16_t cell_max_voltage; //mV, 0-4350 extern uint16_t cell_min_voltage; //mV, 0-4350 extern uint16_t cellvoltages[120]; //mV 0-4350 per cell extern uint8_t LEDcolor; //Enum, 0-10 extern bool batteryAllowsContactorClosing; //Bool, 1=true, 0=false extern bool inverterAllowsContactorClosing; //Bool, 1=true, 0=false extern const char* ssid; extern const char* password; extern const char* ssidAP; extern const char* passwordAP; extern const char* versionNumber; // Common charger parameters extern float charger_stat_HVcur; extern float charger_stat_HVvol; extern float charger_stat_ACcur; extern float charger_stat_ACvol; extern float charger_stat_LVcur; extern float charger_stat_LVvol; //LEAF charger extern uint16_t OBC_Charge_Power; /** * @brief Initialization function for the webserver. * * @param[in] void * * @return void */ void init_webserver(); /** * @brief Initialization function that creates a WiFi Access Point. * * @param[in] void * * @return void */ void init_WiFi_AP(); /** * @brief Initialization function that connects to an existing network. * * @param[in] ssid WiFi network name * @param[in] password WiFi network password * * @return void */ void init_WiFi_STA(const char* ssid, const char* password); /** * @brief Monitoring loop for WiFi. Will attempt to reconnect to access point if the connection goes down. * * @param[in] void * * @return void */ void WiFi_monitor_loop(); // /** // * @brief Function to handle WiFi reconnection. // * // * @param[in] void // * // * @return void // */ // void handle_WiFi_reconnection(unsigned long currentMillis); /** * @brief Initialization function for ElegantOTA. * * @param[in] void * * @return void */ void init_ElegantOTA(); /** * @brief Replaces placeholder with content section in web page * * @param[in] var * * @return String */ String processor(const String& var); /** * @brief Replaces placeholder with content section in web page * * @param[in] var * * @return String */ String settings_processor(const String& var); /** * @brief Replaces placeholder with content section in web page * * @param[in] var * * @return String */ String cellmonitor_processor(const String& var); /** * @brief Executes on OTA start * * @param[in] void * * @return void */ void onOTAStart(); /** * @brief Executes on OTA progress * * @param[in] current Current bytes * @param[in] final Final bytes * * @return void */ void onOTAProgress(size_t current, size_t final); /** * @brief Executes on OTA end * * @param[in] void * * @return bool success: success = true, failed = false */ void onOTAEnd(bool success); /** * @brief Formats power values * * @param[in] float or uint16_t * * @return string: values */ template String formatPowerValue(String label, T value, String unit, int precision); extern void storeSettings(); #endif