diff --git a/components/tesla_ble_vehicle/tesla_ble_vehicle.cpp b/components/tesla_ble_vehicle/tesla_ble_vehicle.cpp index 6eada098..a85d510a 100644 --- a/components/tesla_ble_vehicle/tesla_ble_vehicle.cpp +++ b/components/tesla_ble_vehicle/tesla_ble_vehicle.cpp @@ -739,7 +739,22 @@ namespace esphome case UniversalMessage_Domain_DOMAIN_INFOTAINMENT: { CarServer_Response carserver_response = CarServer_Response_init_default; - int return_code = tesla_ble_client_->parsePayloadCarServerResponse(&message.payload.protobuf_message_as_bytes, &carserver_response); + + // Extract signature data and fault information from the message + Signatures_SignatureData* sig_data = nullptr; + pb_size_t sig_data_count = 0; + UniversalMessage_MessageFault_E fault = UniversalMessage_MessageFault_E_MESSAGEFAULT_ERROR_NONE; + + if (message.which_sub_sigData == UniversalMessage_RoutableMessage_signature_data_tag) { + sig_data = &message.sub_sigData.signature_data; + sig_data_count = 1; + } + + if (message.has_signedMessageStatus) { + fault = message.signedMessageStatus.signed_message_fault; + } + + int return_code = tesla_ble_client_->parsePayloadCarServerResponse(&message.payload.protobuf_message_as_bytes, sig_data, sig_data_count, fault, &carserver_response); if (return_code != 0) { ESP_LOGE(TAG, "Failed to parse incoming message"); @@ -1247,18 +1262,28 @@ namespace esphome ESP_LOGI(TAG, "[%s] Building message..", action_str.c_str()); switch (action) { - case SET_CHARGING_SWITCH: - return_code = tesla_ble_client_->buildChargingSwitchMessage( - static_cast(param), message_buffer, &message_length); + case SET_CHARGING_SWITCH: { + bool charging_on = static_cast(param); + return_code = tesla_ble_client_->buildCarServerVehicleActionMessage( + message_buffer, &message_length, + CarServer_VehicleAction_chargingStartStopAction_tag, + &charging_on); break; - case SET_CHARGING_AMPS: - return_code = tesla_ble_client_->buildChargingAmpsMessage( - static_cast(param), message_buffer, &message_length); + } + case SET_CHARGING_AMPS: { + int32_t amps = static_cast(param); + return_code = tesla_ble_client_->buildCarServerVehicleActionMessage( + message_buffer, &message_length, + CarServer_VehicleAction_setChargingAmpsAction_tag, &s); break; - case SET_CHARGING_LIMIT: - return_code = tesla_ble_client_->buildChargingSetLimitMessage( - static_cast(param), message_buffer, &message_length); + } + case SET_CHARGING_LIMIT: { + int32_t limit = static_cast(param); + return_code = tesla_ble_client_->buildCarServerVehicleActionMessage( + message_buffer, &message_length, + CarServer_VehicleAction_chargingSetLimitAction_tag, &limit); break; + } default: ESP_LOGE(TAG, "Invalid action: %d", static_cast(action)); return 1; diff --git a/packages/base.yml b/packages/base.yml index e979646c..9dba8da2 100644 --- a/packages/base.yml +++ b/packages/base.yml @@ -18,7 +18,7 @@ esphome: name: yoziru.esphome-tesla-ble version: "2025.8.13" libraries: - - https://github.com/yoziru/tesla-ble.git#v2.2.2 + - https://github.com/yoziru/tesla-ble.git#v3.0.0 logger: level: INFO