truma_inetbox: refine master mode discovery with correct CP Plus signatures
This commit is contained in:
parent
4c097a576d
commit
8591e7433d
@ -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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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 ===");
|
||||
}
|
||||
|
||||
} }
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user