diff --git a/components/truma_inetbox/TrumaiNetBoxApp.cpp b/components/truma_inetbox/TrumaiNetBoxApp.cpp index 8b1ffe2..d891a6d 100644 --- a/components/truma_inetbox/TrumaiNetBoxApp.cpp +++ b/components/truma_inetbox/TrumaiNetBoxApp.cpp @@ -34,22 +34,19 @@ void TrumaiNetBoxApp::update() { if (this->master_mode_ && !this->master_discovery_started_) { this->master_discovery_started_ = true; - // Start targeted device discovery like CP Plus does - // Query known Truma device identifiers instead of full scan + ESP_LOGI(TAG, "Master mode: Starting discovery with CORRECT CP Plus signature 17 46 10 03"); - // Query identifier 0x23 - typical for Truma heaters - std::vector heater_query = {0xB2, 0x23, 0x17, 0x46, 0x01, 0x03}; - this->master_send_diag_single(0x7F, heater_query); + // Query identifier 0x23 with CORRECT CP Plus signature (17 46 10 03) + std::vector query_23 = {0xB2, 0x23, 0x17, 0x46, 0x10, 0x03}; + this->master_send_diag_single(0x7F, query_23); + this->master_send_diag_single(0x01, query_23); // Also try direct NAD - // Query identifier 0x00 - LIN Product Identification - std::vector prod_id_query = {0xB2, 0x00, 0x17, 0x46, 0x00, 0x1F}; - this->master_send_diag_single(0x7F, prod_id_query); + // Query identifier 0x00 with CORRECT CP Plus signature (17 46 10 03) + std::vector query_00 = {0xB2, 0x00, 0x17, 0x46, 0x10, 0x03}; + this->master_send_diag_single(0x7F, query_00); + this->master_send_diag_single(0x01, query_00); // Also try direct NAD - // Query identifier 0x00 with different device signatures - std::vector heater_prod_query = {0xB2, 0x00, 0x17, 0x46, 0x40, 0x03}; // Heater signature - this->master_send_diag_single(0x7F, heater_prod_query); - - ESP_LOGI(TAG, "Master mode: Started targeted device discovery (CP Plus style)"); + ESP_LOGI(TAG, "Master mode: Discovery sent - expecting heater response on PID 3D"); } // Master TX scheduler (throttle to ~20ms spacing) @@ -480,31 +477,30 @@ void TrumaiNetBoxApp::trigger_discovery() { return; } - ESP_LOGI(TAG, "=== ENHANCED DISCOVERY SEQUENCE STARTED ==="); + ESP_LOGI(TAG, "=== FIXED DISCOVERY SEQUENCE STARTED ==="); + ESP_LOGI(TAG, "Using correct CP Plus signature 17 46 10 03 from UDP traffic analysis"); - // Try multiple NAD addresses - broadcast and specific - std::vector nad_addresses = {0x7F, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05}; + // Target heater NAD (seen responding as NAD 0x01 in traffic) + uint8_t heater_nad = 0x01; + + // Also try broadcast for completeness + std::vector nad_addresses = {0x7F, heater_nad}; for (uint8_t nad : nad_addresses) { - ESP_LOGI(TAG, "Trying NAD 0x%02X:", nad); + ESP_LOGI(TAG, "Sending discovery to NAD 0x%02X:", nad); - // 1. Query identifier 0x23 - from CP Plus log analysis - std::vector heater_23_query = {0xB2, 0x23, 0x17, 0x46, 0x01, 0x03}; - this->master_send_diag_single(nad, heater_23_query); - ESP_LOGD(TAG, " -> Sent B2 23 query to NAD 0x%02X", nad); + // 1. Query identifier 0x23 with CORRECT CP Plus signature (17 46 10 03) + std::vector query_23 = {0xB2, 0x23, 0x17, 0x46, 0x10, 0x03}; + this->master_send_diag_single(nad, query_23); + ESP_LOGI(TAG, " -> B2 23 17 46 10 03 (CP Plus sig)"); - // 2. Query identifier 0x00 with heater signature (17 46 40 03) - std::vector heater_00_query = {0xB2, 0x00, 0x17, 0x46, 0x40, 0x03}; - this->master_send_diag_single(nad, heater_00_query); - ESP_LOGD(TAG, " -> Sent B2 00 heater sig query to NAD 0x%02X", nad); - - // 3. Query identifier 0x00 with CP Plus signature (as reference) - std::vector cpplus_00_query = {0xB2, 0x00, 0x17, 0x46, 0x00, 0x04}; - this->master_send_diag_single(nad, cpplus_00_query); - ESP_LOGD(TAG, " -> Sent B2 00 CP Plus sig query to NAD 0x%02X", nad); + // 2. Query identifier 0x00 with CORRECT CP Plus signature (17 46 10 03) + std::vector query_00 = {0xB2, 0x00, 0x17, 0x46, 0x10, 0x03}; + this->master_send_diag_single(nad, query_00); + ESP_LOGI(TAG, " -> B2 00 17 46 10 03 (CP Plus sig)"); } - ESP_LOGI(TAG, "=== DISCOVERY SEQUENCE COMPLETED - Monitor PID 3D for responses ==="); + ESP_LOGI(TAG, "=== DISCOVERY COMPLETED - HEATER SHOULD RESPOND ON PID 3D ==="); } } }