mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-03 09:49:32 +02:00
Add event for large temperature difference in battery
This commit is contained in:
parent
566039be5d
commit
d678ea1981
4 changed files with 14 additions and 0 deletions
|
@ -139,6 +139,8 @@
|
||||||
#define BATTERY_MAXTEMPERATURE 500
|
#define BATTERY_MAXTEMPERATURE 500
|
||||||
// -250 = -25.0 °C , Min temperature (Will produce a battery frozen event if below)
|
// -250 = -25.0 °C , Min temperature (Will produce a battery frozen event if below)
|
||||||
#define BATTERY_MINTEMPERATURE -250
|
#define BATTERY_MINTEMPERATURE -250
|
||||||
|
// 150 = 15.0 °C , Max difference between min and max temperature (Will produce a battery temperature deviation event if greater)
|
||||||
|
#define BATTERY_MAX_TEMPERATURE_DEVIATION 150
|
||||||
// 300 = 30.0A , Max charge in Amp (Some inverters needs to be limited)
|
// 300 = 30.0A , Max charge in Amp (Some inverters needs to be limited)
|
||||||
#define BATTERY_MAX_CHARGE_AMP 300
|
#define BATTERY_MAX_CHARGE_AMP 300
|
||||||
// 300 = 30.0A , Max discharge in Amp (Some inverters needs to be limited)
|
// 300 = 30.0A , Max discharge in Amp (Some inverters needs to be limited)
|
||||||
|
|
|
@ -41,6 +41,13 @@ void update_machineryprotection() {
|
||||||
clear_event(EVENT_BATTERY_FROZEN);
|
clear_event(EVENT_BATTERY_FROZEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (datalayer.battery.status.temperature_max_dC - datalayer.battery.status.temperature_min_dC > BATTERY_MAX_TEMPERATURE_DEVIATION){
|
||||||
|
set_event_latched(EVENT_BATTERY_TEMP_DEVIATION_HIGH,
|
||||||
|
datalayer.battery.status.temperature_max_dC - datalayer.battery.status.temperature_min_dC);
|
||||||
|
} else {
|
||||||
|
clear_event(EVENT_BATTERY_TEMP_DEVIATION_HIGH);
|
||||||
|
}
|
||||||
|
|
||||||
// Battery voltage is over designed max voltage!
|
// Battery voltage is over designed max voltage!
|
||||||
if (datalayer.battery.status.voltage_dV > datalayer.battery.info.max_design_voltage_dV) {
|
if (datalayer.battery.status.voltage_dV > datalayer.battery.info.max_design_voltage_dV) {
|
||||||
set_event(EVENT_BATTERY_OVERVOLTAGE, datalayer.battery.status.voltage_dV);
|
set_event(EVENT_BATTERY_OVERVOLTAGE, datalayer.battery.status.voltage_dV);
|
||||||
|
|
|
@ -218,6 +218,7 @@ void init_events(void) {
|
||||||
events.entries[EVENT_MQTT_DISCONNECT].level = EVENT_LEVEL_INFO;
|
events.entries[EVENT_MQTT_DISCONNECT].level = EVENT_LEVEL_INFO;
|
||||||
events.entries[EVENT_EQUIPMENT_STOP].level = EVENT_LEVEL_ERROR;
|
events.entries[EVENT_EQUIPMENT_STOP].level = EVENT_LEVEL_ERROR;
|
||||||
events.entries[EVENT_SD_INIT_FAILED].level = EVENT_LEVEL_WARNING;
|
events.entries[EVENT_SD_INIT_FAILED].level = EVENT_LEVEL_WARNING;
|
||||||
|
events.entries[EVENT_BATTERY_TEMP_DEVIATION_HIGH].level = EVENT_LEVEL_ERROR;
|
||||||
|
|
||||||
events.entries[EVENT_EEPROM_WRITE].log = false; // Don't log the logger...
|
events.entries[EVENT_EEPROM_WRITE].log = false; // Don't log the logger...
|
||||||
|
|
||||||
|
@ -254,6 +255,9 @@ void reset_all_events() {
|
||||||
}
|
}
|
||||||
events.level = EVENT_LEVEL_INFO;
|
events.level = EVENT_LEVEL_INFO;
|
||||||
update_bms_status();
|
update_bms_status();
|
||||||
|
#ifdef DEBUG_LOG
|
||||||
|
logging.println("All events have been cleared.");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_event_MQTTpublished(EVENTS_ENUM_TYPE event) {
|
void set_event_MQTTpublished(EVENTS_ENUM_TYPE event) {
|
||||||
|
|
|
@ -116,6 +116,7 @@
|
||||||
XX(EVENT_EQUIPMENT_STOP) \
|
XX(EVENT_EQUIPMENT_STOP) \
|
||||||
XX(EVENT_AUTOMATIC_PRECHARGE_FAILURE) \
|
XX(EVENT_AUTOMATIC_PRECHARGE_FAILURE) \
|
||||||
XX(EVENT_SD_INIT_FAILED) \
|
XX(EVENT_SD_INIT_FAILED) \
|
||||||
|
XX(EVENT_BATTERY_TEMP_DEVIATION_HIGH) \
|
||||||
XX(EVENT_NOF_EVENTS)
|
XX(EVENT_NOF_EVENTS)
|
||||||
|
|
||||||
typedef enum { EVENTS_ENUM_TYPE(GENERATE_ENUM) } EVENTS_ENUM_TYPE;
|
typedef enum { EVENTS_ENUM_TYPE(GENERATE_ENUM) } EVENTS_ENUM_TYPE;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue