From 14802abf0f63cff70756c657dfdd0d28b33be16d Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 14 Mar 2023 11:26:16 +0100 Subject: [PATCH] Found 3rd Aircon msg type. --- components/truma_inetbox/TrumaiNetBoxApp.cpp | 7 ++++++ components/truma_inetbox/TrumaiNetBoxApp.h | 25 ++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/components/truma_inetbox/TrumaiNetBoxApp.cpp b/components/truma_inetbox/TrumaiNetBoxApp.cpp index 73235b7..585ca8e 100644 --- a/components/truma_inetbox/TrumaiNetBoxApp.cpp +++ b/components/truma_inetbox/TrumaiNetBoxApp.cpp @@ -358,6 +358,13 @@ const u_int8_t *TrumaiNetBoxApp::lin_multiframe_recieved(const u_int8_t *message // 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 return response; + } else if (header->message_type == STATUS_FRAME_AIRCON2 && + header->message_length == sizeof(StatusFrameAircon2)) { + ESP_LOGI(TAG, "StatusFrameAircon2"); + // Example: + // 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 + return response; } else if (header->message_type == STATUS_FRAME_TIMER && header->message_length == sizeof(StatusFrameTimer)) { ESP_LOGI(TAG, "StatusFrameTimer"); // EXAMPLE: diff --git a/components/truma_inetbox/TrumaiNetBoxApp.h b/components/truma_inetbox/TrumaiNetBoxApp.h index 602006d..530bc36 100644 --- a/components/truma_inetbox/TrumaiNetBoxApp.h +++ b/components/truma_inetbox/TrumaiNetBoxApp.h @@ -34,8 +34,8 @@ namespace truma_inetbox { #define STATUS_FRAME_HEATER 0x33 #define STATUS_FRAME_AIRCON_RESPONSE (STATUS_FRAME_AIRCON - 1) #define STATUS_FRAME_AIRCON 0x35 -// Error response - unknown function -#define STATUS_FRAME_UNKNOWN_36 0x36 +#define STATUS_FRAME_AIRCON2_RESPONSE (STATUS_FRAME_AIRCON2 - 1) +#define STATUS_FRAME_AIRCON2 0x37 #define STATUS_FRAME_TIMER_RESPONSE (STATUS_FRAME_TIMER - 1) #define STATUS_FRAME_TIMER 0x3D #define STATUS_FRAME_AIRCON_INIT_RESPONSE (STATUS_FRAME_AIRCON_INIT - 1) @@ -408,6 +408,26 @@ struct StatusFrameAirconInit { // NOLINT(altera-struct-pack-align) u_int8_t unknown_22; // 0x00 } __attribute__((packed)); +// Length 18 (0x12) +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 + u_int16_t current_temp; + u_int16_t target_temp; +} __attribute__((packed)); + union StatusFrame { // NOLINT(altera-struct-pack-align) u_int8_t raw[41]; struct inner { // NOLINT(altera-struct-pack-align) @@ -423,6 +443,7 @@ union StatusFrame { // NOLINT(altera-struct-pack-align) StatusFrameConfig config; StatusFrameDevice device; StatusFrameAirconInit airconInit; + StatusFrameAircon2 aircon2; } __attribute__((packed)); } inner; } __attribute__((packed));