mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Include the bluetooth mac address in the device info when proxy is enabled (#8203)
This commit is contained in:
		| @@ -227,6 +227,9 @@ message DeviceInfoResponse { | ||||
|   uint32 voice_assistant_feature_flags = 17; | ||||
|  | ||||
|   string suggested_area = 16; | ||||
|  | ||||
|   // The Bluetooth mac address of the device. For example "AC:BC:32:89:0E:AA" | ||||
|   string bluetooth_mac_address = 18; | ||||
| } | ||||
|  | ||||
| message ListEntitiesRequest { | ||||
|   | ||||
| @@ -1843,6 +1843,7 @@ DeviceInfoResponse APIConnection::device_info(const DeviceInfoRequest &msg) { | ||||
| #ifdef USE_BLUETOOTH_PROXY | ||||
|   resp.legacy_bluetooth_proxy_version = bluetooth_proxy::global_bluetooth_proxy->get_legacy_version(); | ||||
|   resp.bluetooth_proxy_feature_flags = bluetooth_proxy::global_bluetooth_proxy->get_feature_flags(); | ||||
|   resp.bluetooth_mac_address = bluetooth_proxy::global_bluetooth_proxy->get_bluetooth_mac_address_pretty(); | ||||
| #endif | ||||
| #ifdef USE_VOICE_ASSISTANT | ||||
|   resp.legacy_voice_assistant_version = voice_assistant::global_voice_assistant->get_legacy_version(); | ||||
|   | ||||
| @@ -838,6 +838,10 @@ bool DeviceInfoResponse::decode_length(uint32_t field_id, ProtoLengthDelimited v | ||||
|       this->suggested_area = value.as_string(); | ||||
|       return true; | ||||
|     } | ||||
|     case 18: { | ||||
|       this->bluetooth_mac_address = value.as_string(); | ||||
|       return true; | ||||
|     } | ||||
|     default: | ||||
|       return false; | ||||
|   } | ||||
| @@ -860,6 +864,7 @@ void DeviceInfoResponse::encode(ProtoWriteBuffer buffer) const { | ||||
|   buffer.encode_uint32(14, this->legacy_voice_assistant_version); | ||||
|   buffer.encode_uint32(17, this->voice_assistant_feature_flags); | ||||
|   buffer.encode_string(16, this->suggested_area); | ||||
|   buffer.encode_string(18, this->bluetooth_mac_address); | ||||
| } | ||||
| #ifdef HAS_PROTO_MESSAGE_DUMP | ||||
| void DeviceInfoResponse::dump_to(std::string &out) const { | ||||
| @@ -937,6 +942,10 @@ void DeviceInfoResponse::dump_to(std::string &out) const { | ||||
|   out.append("  suggested_area: "); | ||||
|   out.append("'").append(this->suggested_area).append("'"); | ||||
|   out.append("\n"); | ||||
|  | ||||
|   out.append("  bluetooth_mac_address: "); | ||||
|   out.append("'").append(this->bluetooth_mac_address).append("'"); | ||||
|   out.append("\n"); | ||||
|   out.append("}"); | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -354,6 +354,7 @@ class DeviceInfoResponse : public ProtoMessage { | ||||
|   uint32_t legacy_voice_assistant_version{0}; | ||||
|   uint32_t voice_assistant_feature_flags{0}; | ||||
|   std::string suggested_area{}; | ||||
|   std::string bluetooth_mac_address{}; | ||||
|   void encode(ProtoWriteBuffer buffer) const override; | ||||
| #ifdef HAS_PROTO_MESSAGE_DUMP | ||||
|   void dump_to(std::string &out) const override; | ||||
|   | ||||
| @@ -15,6 +15,9 @@ | ||||
|  | ||||
| #include "bluetooth_connection.h" | ||||
|  | ||||
| #include <esp_bt.h> | ||||
| #include <esp_bt_device.h> | ||||
|  | ||||
| namespace esphome { | ||||
| namespace bluetooth_proxy { | ||||
|  | ||||
| @@ -114,6 +117,11 @@ class BluetoothProxy : public esp32_ble_tracker::ESPBTDeviceListener, public Com | ||||
|     return flags; | ||||
|   } | ||||
|  | ||||
|   std::string get_bluetooth_mac_address_pretty() { | ||||
|     const uint8_t *mac = esp_bt_dev_get_address(); | ||||
|     return str_snprintf("%02X:%02X:%02X:%02X:%02X:%02X", 17, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); | ||||
|   } | ||||
|  | ||||
|  protected: | ||||
|   void send_api_packet_(const esp32_ble_tracker::ESPBTDevice &device); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user