Found last unkown status frame is also aircon.

This commit is contained in:
Your Name 2023-03-14 15:49:11 +01:00
parent 565f96ef33
commit 223b59a228
2 changed files with 125 additions and 93 deletions

View File

@ -403,14 +403,21 @@ const u_int8_t *TrumaiNetBoxApp::lin_multiframe_recieved(const u_int8_t *message
ESP_LOGI(TAG, "StatusFrameAirconInit"); ESP_LOGI(TAG, "StatusFrameAirconInit");
// Example: // Example:
// SID<---------PREAMBLE---------->|<---MSG_HEAD---->| // SID<---------PREAMBLE---------->|<---MSG_HEAD---->|
// BB.00.1F.00.1E.00.00.22.FF.FF.FF.54.01.16.3F.00.E2.00.00.71.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00 // BB.00.1F.00.1E.00.00.22.FF.FF.FF.54.01.16.3F.00.E2.00.00.71.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00
return response; return response;
} else if (header->message_type == STATUS_FRAME_AIRCON2 && header->message_length == sizeof(StatusFrameAircon2)) { } else if (header->message_type == STATUS_FRAME_AIRCON_2 && header->message_length == sizeof(StatusFrameAircon2)) {
ESP_LOGI(TAG, "StatusFrameAircon2"); ESP_LOGI(TAG, "StatusFrameAircon2");
// Example: // Example:
// SID<---------PREAMBLE---------->|<---MSG_HEAD---->| // SID<---------PREAMBLE---------->|<---MSG_HEAD---->|
// BB.00.1F.00.1E.00.00.22.FF.FF.FF.54.01.12.37.00.BF.01.00.01.00.00.00.00.00.00.00.00.00.00.00.49.0B.40.0B // BB.00.1F.00.1E.00.00.22.FF.FF.FF.54.01.12.37.00.BF.01.00.01.00.00.00.00.00.00.00.00.00.00.00.49.0B.40.0B
return response; return response;
} else if (header->message_type == STATUS_FRAME_AIRCON_INIT_2 &&
header->message_length == sizeof(StatusFrameAirconInit2)) {
ESP_LOGI(TAG, "StatusFrameAirconInit2");
// Example:
// SID<---------PREAMBLE---------->|<---MSG_HEAD---->|
// BB.00.1F.00.1E.00.00.22.FF.FF.FF.54.01.14.41.00.53.01.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00
return response;
} else if (header->message_type == STATUS_FRAME_TIMER && header->message_length == sizeof(StatusFrameTimer)) { } else if (header->message_type == STATUS_FRAME_TIMER && header->message_length == sizeof(StatusFrameTimer)) {
ESP_LOGI(TAG, "StatusFrameTimer"); ESP_LOGI(TAG, "StatusFrameTimer");
// EXAMPLE: // EXAMPLE:

View File

@ -34,14 +34,14 @@ namespace truma_inetbox {
#define STATUS_FRAME_HEATER 0x33 #define STATUS_FRAME_HEATER 0x33
#define STATUS_FRAME_AIRCON_RESPONSE (STATUS_FRAME_AIRCON - 1) #define STATUS_FRAME_AIRCON_RESPONSE (STATUS_FRAME_AIRCON - 1)
#define STATUS_FRAME_AIRCON 0x35 #define STATUS_FRAME_AIRCON 0x35
#define STATUS_FRAME_AIRCON2_RESPONSE (STATUS_FRAME_AIRCON2 - 1) #define STATUS_FRAME_AIRCON_2_RESPONSE (STATUS_FRAME_AIRCON_2 - 1)
#define STATUS_FRAME_AIRCON2 0x37 #define STATUS_FRAME_AIRCON_2 0x37
#define STATUS_FRAME_TIMER_RESPONSE (STATUS_FRAME_TIMER - 1) #define STATUS_FRAME_TIMER_RESPONSE (STATUS_FRAME_TIMER - 1)
#define STATUS_FRAME_TIMER 0x3D #define STATUS_FRAME_TIMER 0x3D
#define STATUS_FRAME_AIRCON_INIT_RESPONSE (STATUS_FRAME_AIRCON_INIT - 1) #define STATUS_FRAME_AIRCON_INIT_RESPONSE (STATUS_FRAME_AIRCON_INIT - 1)
#define STATUS_FRAME_AIRCON_INIT 0x3F #define STATUS_FRAME_AIRCON_INIT 0x3F
// Error response - unknown function #define STATUS_FRAME_AIRCON_INIT_2_RESPONSE (STATUS_FRAME_AIRCON_INIT_2 - 1)
#define STATUS_FRAME_UNKNOWN_40 0x40 #define STATUS_FRAME_AIRCON_INIT_2 0x41
enum class HeatingMode : u_int16_t { enum class HeatingMode : u_int16_t {
HEATING_MODE_OFF = 0x0, HEATING_MODE_OFF = 0x0,
@ -226,71 +226,6 @@ struct StatusFrameHeaterResponse { // NOLINT(altera-struct-pack-align)
EnergyMix energy_mix_b; EnergyMix energy_mix_b;
} __attribute__((packed)); } __attribute__((packed));
// Length 18 (0x12)
// TODO
struct StatusFrameAircon { // NOLINT(altera-struct-pack-align)
// Mode? 00 - OFF, 04 - AC Ventilation, 05 - AC Cooling
u_int8_t unknown_01;
// 0x00
u_int8_t unknown_02;
// 0x71
u_int8_t unknown_03;
// 0x01
u_int8_t unknown_04;
TargetTemp target_temp_room;
// 0x00
u_int8_t unknown_07;
// 0x00
u_int8_t unknown_08;
// No idea why two current_temp
TargetTemp current_temp_aircon;
// 0x00
u_int8_t unknown_11;
// 0x00
u_int8_t unknown_12;
// 0x00
u_int8_t unknown_13;
// 0x00
u_int8_t unknown_14;
// 0x00
u_int8_t unknown_15;
// 0x00
u_int8_t unknown_16;
TargetTemp current_temp_room;
} __attribute__((packed));
// TODO
struct StatusFrameAirconResponse { // NOLINT(altera-struct-pack-align)
// Mode? 00 - OFF, 04 - AC Ventilation, 05 - AC Cooling
u_int8_t unknown_01;
// 0x00
u_int8_t unknown_02;
// 0x71
u_int8_t unknown_03;
// 0x01
u_int8_t unknown_04;
TargetTemp target_temp_room;
// 0x00
u_int8_t unknown_07;
// 0x00
u_int8_t unknown_08;
// No idea why two current_temp
TargetTemp current_temp_aircon;
// 0x00
u_int8_t unknown_11;
// 0x00
u_int8_t unknown_12;
// 0x00
u_int8_t unknown_13;
// 0x00
u_int8_t unknown_14;
// 0x00
u_int8_t unknown_15;
// 0x00
u_int8_t unknown_16;
TargetTemp current_temp_room;
} __attribute__((packed));
// Length 24 (0x18) // Length 24 (0x18)
struct StatusFrameTimer { // NOLINT(altera-struct-pack-align) struct StatusFrameTimer { // NOLINT(altera-struct-pack-align)
TargetTemp timer_target_temp_room; TargetTemp timer_target_temp_room;
@ -406,15 +341,99 @@ struct StatusFrameDevice { // NOLINT(altera-struct-pack-align)
u_int8_t unknown_3; u_int8_t unknown_3;
} __attribute__((packed)); } __attribute__((packed));
// Length 18 (0x12)
// TODO
struct StatusFrameAircon { // NOLINT(altera-struct-pack-align)
// Mode? 00 - OFF, 04 - AC Ventilation, 05 - AC Cooling
u_int8_t unknown_01;
// 0x00
u_int8_t unknown_02;
// 0x71
u_int8_t unknown_03;
// 0x01
u_int8_t unknown_04;
TargetTemp target_temp_room;
// 0x00
u_int8_t unknown_07;
// 0x00
u_int8_t unknown_08;
// No idea why two current_temp
TargetTemp current_temp_aircon;
// 0x00
u_int8_t unknown_11;
// 0x00
u_int8_t unknown_12;
// 0x00
u_int8_t unknown_13;
// 0x00
u_int8_t unknown_14;
// 0x00
u_int8_t unknown_15;
// 0x00
u_int8_t unknown_16;
TargetTemp current_temp_room;
} __attribute__((packed));
// TODO
struct StatusFrameAirconResponse { // NOLINT(altera-struct-pack-align)
// Mode? 00 - OFF, 04 - AC Ventilation, 05 - AC Cooling
u_int8_t unknown_01;
// 0x00
u_int8_t unknown_02;
// 0x71
u_int8_t unknown_03;
// 0x01
u_int8_t unknown_04;
TargetTemp target_temp_room;
// 0x00
u_int8_t unknown_07;
// 0x00
u_int8_t unknown_08;
// No idea why two current_temp
TargetTemp current_temp_aircon;
// 0x00
u_int8_t unknown_11;
// 0x00
u_int8_t unknown_12;
// 0x00
u_int8_t unknown_13;
// 0x00
u_int8_t unknown_14;
// 0x00
u_int8_t unknown_15;
// 0x00
u_int8_t unknown_16;
TargetTemp current_temp_room;
} __attribute__((packed));
// Length 18 (0x12)
// TODO
struct StatusFrameAircon2 { // NOLINT(altera-struct-pack-align)
u_int8_t unknown_01; // 0x01
u_int8_t unknown_02; // 0x00
u_int8_t unknown_03; // 0x01
u_int8_t unknown_04; // 0x00
u_int8_t unknown_05; // 0x00
u_int8_t unknown_06; // 0x00
u_int8_t unknown_07; // 0x00
u_int8_t unknown_08; // 0x00
u_int8_t unknown_09; // 0x00
u_int8_t unknown_10; // 0x00
u_int8_t unknown_11; // 0x00
u_int8_t unknown_12; // 0x00
u_int8_t unknown_13; // 0x00
u_int8_t unknown_14; // 0x00
TargetTemp current_temp;
TargetTemp target_temp;
} __attribute__((packed));
// Length 22 (0x16) // Length 22 (0x16)
// TODO // TODO
struct StatusFrameAirconInit { // NOLINT(altera-struct-pack-align) struct StatusFrameAirconInit { // NOLINT(altera-struct-pack-align)
u_int8_t unknown_01; // 0x00 u_int8_t unknown_01; // 0x00
u_int8_t unknown_02; // 0x00 u_int8_t unknown_02; // 0x00
// 0x71 u_int8_t unknown_03; // 0x71
u_int8_t unknown_03; u_int8_t unknown_04; // 0x01
// 0x01
u_int8_t unknown_04;
u_int8_t unknown_05; // 0x00 u_int8_t unknown_05; // 0x00
u_int8_t unknown_06; // 0x00 u_int8_t unknown_06; // 0x00
u_int8_t unknown_07; // 0x00 u_int8_t unknown_07; // 0x00
@ -435,8 +454,9 @@ struct StatusFrameAirconInit { // NOLINT(altera-struct-pack-align)
u_int8_t unknown_22; // 0x00 u_int8_t unknown_22; // 0x00
} __attribute__((packed)); } __attribute__((packed));
// Length 18 (0x12) // Length 20 (0x14)
struct StatusFrameAircon2 { // NOLINT(altera-struct-pack-align) // TODO
struct StatusFrameAirconInit2 { // NOLINT(altera-struct-pack-align)
u_int8_t unknown_01; // 0x01 u_int8_t unknown_01; // 0x01
u_int8_t unknown_02; // 0x00 u_int8_t unknown_02; // 0x00
u_int8_t unknown_03; // 0x01 u_int8_t unknown_03; // 0x01
@ -451,8 +471,12 @@ struct StatusFrameAircon2 { // NOLINT(altera-struct-pack-align)
u_int8_t unknown_12; // 0x00 u_int8_t unknown_12; // 0x00
u_int8_t unknown_13; // 0x00 u_int8_t unknown_13; // 0x00
u_int8_t unknown_14; // 0x00 u_int8_t unknown_14; // 0x00
TargetTemp current_temp; u_int8_t unknown_15; // 0x00
TargetTemp target_temp; u_int8_t unknown_16; // 0x00
u_int8_t unknown_17; // 0x00
u_int8_t unknown_18; // 0x00
u_int8_t unknown_19; // 0x00
u_int8_t unknown_20; // 0x00
} __attribute__((packed)); } __attribute__((packed));
union StatusFrame { // NOLINT(altera-struct-pack-align) union StatusFrame { // NOLINT(altera-struct-pack-align)
@ -472,6 +496,7 @@ union StatusFrame { // NOLINT(altera-struct-pack-align)
StatusFrameAirconResponse airconResponse; StatusFrameAirconResponse airconResponse;
StatusFrameAirconInit airconInit; StatusFrameAirconInit airconInit;
StatusFrameAircon2 aircon2; StatusFrameAircon2 aircon2;
StatusFrameAirconInit2 airconInit2;
} __attribute__((packed)); } __attribute__((packed));
} inner; } inner;
} __attribute__((packed)); } __attribute__((packed));