Add event for SMA pairing event to aid troubleshooting

This commit is contained in:
Daniel Öster 2025-06-09 22:00:31 +03:00
parent 74591cd9a2
commit 702149f388
8 changed files with 16 additions and 0 deletions

View file

@ -101,6 +101,7 @@ void init_events(void) {
events.entries[EVENT_SERIAL_RX_FAILURE].level = EVENT_LEVEL_ERROR;
events.entries[EVENT_SERIAL_TX_FAILURE].level = EVENT_LEVEL_ERROR;
events.entries[EVENT_SERIAL_TRANSMITTER_FAILURE].level = EVENT_LEVEL_ERROR;
events.entries[EVENT_SMA_PAIRING].level = EVENT_LEVEL_INFO;
events.entries[EVENT_RESET_UNKNOWN].level = EVENT_LEVEL_INFO;
events.entries[EVENT_RESET_POWERON].level = EVENT_LEVEL_INFO;
events.entries[EVENT_RESET_EXT].level = EVENT_LEVEL_INFO;
@ -305,6 +306,8 @@ const char* get_event_message_string(EVENTS_ENUM_TYPE event) {
return "Error in serial function: No ACK from receiver!";
case EVENT_SERIAL_TRANSMITTER_FAILURE:
return "Error in serial function: Some ERROR level fault in transmitter, received by receiver";
case EVENT_SMA_PAIRING:
return "SMA inverter trying to pair, contactors will close and open according to Enable line";
case EVENT_OTA_UPDATE:
return "OTA update started!";
case EVENT_OTA_UPDATE_TIMEOUT:

View file

@ -74,6 +74,7 @@
XX(EVENT_SERIAL_RX_FAILURE) \
XX(EVENT_SERIAL_TX_FAILURE) \
XX(EVENT_SERIAL_TRANSMITTER_FAILURE) \
XX(EVENT_SMA_PAIRING) \
XX(EVENT_TASK_OVERRUN) \
XX(EVENT_RESET_UNKNOWN) \
XX(EVENT_RESET_POWERON) \

View file

@ -216,6 +216,8 @@ void SmaBydHInverter::map_can_frame_to_variable(CAN_frame rx_frame) {
#ifdef DEBUG_LOG
logging.println("Received 0x5E7: SMA pairing request");
#endif // DEBUG_LOG
pairing_events++;
set_event(EVENT_SMA_PAIRING, pairing_events);
datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE;
transmit_can_init();
break;

View file

@ -24,6 +24,7 @@ class SmaBydHInverter : public CanInverterProtocol {
unsigned long previousMillis100ms = 0;
uint8_t pairing_events = 0;
uint32_t inverter_time = 0;
uint16_t inverter_voltage = 0;
int16_t inverter_current = 0;

View file

@ -206,6 +206,8 @@ void SmaBydHvsInverter::map_can_frame_to_variable(CAN_frame rx_frame) {
#ifdef DEBUG_LOG
logging.println("Received 0x5E7: SMA pairing request");
#endif // DEBUG_LOG
pairing_events++;
set_event(EVENT_SMA_PAIRING, pairing_events);
datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE;
transmit_can_init = true;
break;

View file

@ -28,6 +28,7 @@ class SmaBydHvsInverter : public CanInverterProtocol {
7; //TODO, tweak to as low as possible before performance issues/crashes appear
bool transmit_can_init = false;
uint8_t pairing_events = 0;
uint32_t inverter_time = 0;
uint16_t inverter_voltage = 0;
int16_t inverter_current = 0;

View file

@ -100,6 +100,11 @@ void SmaTripowerInverter::map_can_frame_to_variable(CAN_frame rx_frame) {
//Inverter brand (frame1-3 = 0x53 0x4D 0x41) = SMA
break;
case 0x660: //Message originating from SMA inverter - Pairing request
#ifdef DEBUG_LOG
logging.println("Received 0x660: SMA pairing request");
#endif // DEBUG_LOG
pairing_events++;
set_event(EVENT_SMA_PAIRING, pairing_events);
datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE;
transmit_can_init();
break;

View file

@ -42,6 +42,7 @@ class SmaTripowerInverter : public CanInverterProtocol {
uint32_t inverter_time = 0;
uint16_t inverter_voltage = 0;
int16_t inverter_current = 0;
uint8_t pairing_events = 0;
bool pairing_completed = false;
int16_t temperature_average = 0;
uint16_t ampere_hours_remaining = 0;