Merge pull request #1531 from dalathegreat/bugfix/reduce-flash

Improvement: Reduce flash usage
This commit is contained in:
Daniel Öster 2025-09-22 14:53:54 +03:00 committed by GitHub
commit 20b6ea5e85
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 52 additions and 85 deletions

View file

@ -86,9 +86,7 @@ void connectivity_loop(void*) {
// Init wifi
init_WiFi();
if (webserver_enabled) {
init_webserver();
}
if (mdns_enabled) {
init_mDNS();
@ -98,9 +96,7 @@ void connectivity_loop(void*) {
START_TIME_MEASUREMENT(wifi);
wifi_monitor();
if (webserver_enabled) {
ota_monitor();
}
END_TIME_MEASUREMENT_MAX(wifi, datalayer.system.status.wifi_task_10s_max_us);
@ -388,11 +384,9 @@ void core_loop(void*) {
END_TIME_MEASUREMENT_MAX(comm, datalayer.system.status.time_comm_us);
if (webserver_enabled) {
START_TIME_MEASUREMENT(ota);
ElegantOTA.loop();
END_TIME_MEASUREMENT_MAX(ota, datalayer.system.status.time_ota_us);
}
// Process
currentMillis = millis();

View file

@ -201,15 +201,21 @@ void KiaHyundaiHybridBattery::transmit_can(unsigned long currentMillis) {
}
poll_data_pid++;
if (poll_data_pid == 1) {
transmit_can_frame(&KIA_7E4_id1);
KIA_7E4.data.u8[2] = 0x01;
KIA_7E4.data.u8[3] = 0x00;
transmit_can_frame(&KIA_7E4);
} else if (poll_data_pid == 2) {
transmit_can_frame(&KIA_7E4_id2);
KIA_7E4.data.u8[2] = 0x02;
transmit_can_frame(&KIA_7E4);
} else if (poll_data_pid == 3) {
transmit_can_frame(&KIA_7E4_id3);
KIA_7E4.data.u8[2] = 0x03;
transmit_can_frame(&KIA_7E4);
} else if (poll_data_pid == 4) {
//Group 4 not polled
} else if (poll_data_pid == 5) {
transmit_can_frame(&KIA_7E4_id5);
KIA_7E4.data.u8[2] = 0x05;
KIA_7E4.data.u8[3] = 0x04;
transmit_can_frame(&KIA_7E4);
}
}
}

View file

@ -34,26 +34,11 @@ class KiaHyundaiHybridBattery : public CanBattery {
uint16_t min_cell_voltage_mv = 3700;
uint16_t max_cell_voltage_mv = 3700;
CAN_frame KIA_7E4_id1 = {.FD = false,
CAN_frame KIA_7E4 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x7E4,
.data = {0x02, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}};
CAN_frame KIA_7E4_id2 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x7E4,
.data = {0x02, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}};
CAN_frame KIA_7E4_id3 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x7E4,
.data = {0x02, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}};
CAN_frame KIA_7E4_id5 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x7E4,
.data = {0x02, 0x21, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00}};
CAN_frame KIA_7E4_ack = {.FD = false,
.ext_ID = false,
.DLC = 8,

View file

@ -23,9 +23,6 @@
extern std::string http_username;
extern std::string http_password;
bool webserver_enabled =
true; // Global flag to enable or disable the webserver //Old method to disable was with #ifdef WEBSERVER
bool webserver_auth = false;
// Create AsyncWebServer object on port 80

View file

@ -7,8 +7,6 @@
#include "../../lib/ayushsharma82-ElegantOTA/src/ElegantOTA.h"
#include "../../lib/mathieucarbou-AsyncTCPSock/src/AsyncTCP.h"
extern bool webserver_enabled;
extern const char* version_number; // The current software version, shown on webserver
// Common charger parameters

View file

@ -139,11 +139,10 @@ void AforeCanInverter::map_can_frame_to_variable(CAN_frame rx_frame) {
switch (rx_frame.ID) {
case 0x305: // Every 1s from inverter
datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE;
char0 = rx_frame.data.u8[0]; // A
char1 = rx_frame.data.u8[0]; // F
char2 = rx_frame.data.u8[0]; // O
char3 = rx_frame.data.u8[0]; // R
char4 = rx_frame.data.u8[0]; // E
for (uint8_t i = 0; i < 5; i++) {
datalayer.system.info.inverter_brand[i] = rx_frame.data.u8[i];
}
datalayer.system.info.inverter_brand[7] = '\0';
inverter_status = rx_frame.data.u8[7];
time_to_send_info = true;
break;

View file

@ -16,11 +16,6 @@ class AforeCanInverter : public CanInverterProtocol {
uint8_t inverter_status =
0; //0 = init, 1 = standby, 2 = starting, 3 = grid connected, 4 off-grid, 5 diesel generator, 6 grid connected, but disconnected, 7off grid and disconnected, 8 = power failure processing, 9 = power off, 10 = Failure
bool time_to_send_info = false;
uint8_t char0 = 0;
uint8_t char1 = 0;
uint8_t char2 = 0;
uint8_t char3 = 0;
uint8_t char4 = 0;
//Actual content messages
CAN_frame AFORE_350 = {.FD = false, // Operation information
.ext_ID = false,

View file

@ -69,6 +69,10 @@ void BydCanInverter::
BYD_150.data.u8[6] = (fully_charged_capacity_ah >> 8);
BYD_150.data.u8[7] = (fully_charged_capacity_ah & 0x00FF);
//Alarms
//TODO: BYD Alarms are not implemented yet. Investigation needed on the bits in this message
//BYD_190.data.u8[0] =
//Voltage (ex 370.0)
BYD_1D0.data.u8[0] = (datalayer.battery.status.voltage_dV >> 8);
BYD_1D0.data.u8[1] = (datalayer.battery.status.voltage_dV & 0x00FF);
@ -144,21 +148,21 @@ void BydCanInverter::transmit_can(unsigned long currentMillis) {
if (currentMillis - previousMillis2s >= INTERVAL_2_S) {
previousMillis2s = currentMillis;
transmit_can_frame(&BYD_110);
transmit_can_frame(&BYD_110); //Send Limits
}
// Send 10s CAN Message
if (currentMillis - previousMillis10s >= INTERVAL_10_S) {
previousMillis10s = currentMillis;
transmit_can_frame(&BYD_150);
transmit_can_frame(&BYD_1D0);
transmit_can_frame(&BYD_210);
transmit_can_frame(&BYD_150); //Send States
transmit_can_frame(&BYD_1D0); //Send Battery Info
transmit_can_frame(&BYD_210); //Send Cell Info
}
//Send 60s message
if (currentMillis - previousMillis60s >= INTERVAL_60_S) {
previousMillis60s = currentMillis;
transmit_can_frame(&BYD_190);
transmit_can_frame(&BYD_190); //Send Alarm
}
}
@ -166,8 +170,12 @@ void BydCanInverter::send_initial_data() {
transmit_can_frame(&BYD_250);
transmit_can_frame(&BYD_290);
transmit_can_frame(&BYD_2D0);
transmit_can_frame(&BYD_3D0_0);
transmit_can_frame(&BYD_3D0_1);
transmit_can_frame(&BYD_3D0_2);
transmit_can_frame(&BYD_3D0_3);
BYD_3D0.data = {0x00, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79}; //Battery
transmit_can_frame(&BYD_3D0);
BYD_3D0.data = {0x01, 0x2D, 0x42, 0x6F, 0x78, 0x20, 0x50, 0x72}; //-Box Pr
transmit_can_frame(&BYD_3D0);
BYD_3D0.data = {0x02, 0x65, 0x6D, 0x69, 0x75, 0x6D, 0x20, 0x48}; //emium H
transmit_can_frame(&BYD_3D0);
BYD_3D0.data = {0x03, 0x56, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00}; //VS
transmit_can_frame(&BYD_3D0);
}

View file

@ -40,48 +40,33 @@ class BydCanInverter : public CanInverterProtocol {
.DLC = 8,
.ID = 0x2D0,
.data = {0x00, 0x42, 0x59, 0x44, 0x00, 0x00, 0x00, 0x00}}; //BYD
CAN_frame BYD_3D0_0 = {.FD = false,
CAN_frame BYD_3D0 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x3D0,
.data = {0x00, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79}}; //Battery
CAN_frame BYD_3D0_1 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x3D0,
.data = {0x01, 0x2D, 0x42, 0x6F, 0x78, 0x20, 0x50, 0x72}}; //-Box Pr
CAN_frame BYD_3D0_2 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x3D0,
.data = {0x02, 0x65, 0x6D, 0x69, 0x75, 0x6D, 0x20, 0x48}}; //emium H
CAN_frame BYD_3D0_3 = {.FD = false,
.ext_ID = false,
.DLC = 8,
.ID = 0x3D0,
.data = {0x03, 0x56, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00}}; //VS
//Actual content messages
CAN_frame BYD_110 = {.FD = false,
CAN_frame BYD_110 = {.FD = false, //Limits
.ext_ID = false,
.DLC = 8,
.ID = 0x110,
.data = {0x01, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
CAN_frame BYD_150 = {.FD = false,
CAN_frame BYD_150 = {.FD = false, //States
.ext_ID = false,
.DLC = 8,
.ID = 0x150,
.data = {0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00}};
CAN_frame BYD_190 = {.FD = false,
CAN_frame BYD_190 = {.FD = false, //Alarm
.ext_ID = false,
.DLC = 8,
.ID = 0x190,
.data = {0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}};
CAN_frame BYD_1D0 = {.FD = false,
CAN_frame BYD_1D0 = {.FD = false, //Battery Info
.ext_ID = false,
.DLC = 8,
.ID = 0x1D0,
.data = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08}};
CAN_frame BYD_210 = {.FD = false,
CAN_frame BYD_210 = {.FD = false, //Cell info
.ext_ID = false,
.DLC = 8,
.ID = 0x210,