iBeacon reports ESPHome BLE tracker MAC address as source not its name

Since updating to HA 2023.1 my NRF52810 iBeacon reports the source as a MAC address not the source name. It was working in previous versions. Is this a known problem? Not sure where to report it.

1 Like

I just noticed this as well and did a bit of digging and found a couple of github issues related to it.

Same here, I put Ibecons on my keys and used the source to find the room they were in. Now its giving me the MAC address which makes it harder for me to know which proxy its close to.

Yeah - messed up my room presence tracking - the MAC Addresses mean nothing to me visually at all
Will I be forced to create template sensors and create and retain mappings to accommodate this ‘feature’?

Hi…anyone have a solution for this? I tried to adapt my template sensors and replaced the esp-hostnames to match the mac adresses, but i can´t get this template sensor to work:

        friendly_name: "Bluetooth Location Pixel 6"
        value_template: >-
          {% if is_state_attr('device_tracker.bt_pixel_6', 'Source', '78:21:84:9d:d0:78') %}
          {% elif is_state_attr('device_tracker.bt_pixel_6', 'Source', '78:21:84:9d:e2:18') %}
          {% elif is_state_attr('device_tracker.bt_pixel_6', 'Source', 'ec:62:60:9c:af:cc') %}
          {% elif is_state_attr('device_tracker.bt_pixel_6', 'Source', '00:1A:7D:DA:71:10') %}
          {% else %}
          {% endif %}

No matter where the ibeacon is connected to, I always get “N/A”, even though i see the right MAC Adress in the ibeacons attribute:


Hi - here’s the solution that worked for me

##### Convert tracker MAC address to name tracker 1
- platform: template
      unique_id: 954cae86-32e0-4152-bb5c-f0af3b8dd50c
      friendly_name: "Tracker1 source name"
      value_template: >-
        {% set sourcemac = state_attr('device_tracker.holy_iot_c00a','source') %}
        {% if sourcemac == "30:c6:f7:2a:2f:04" |lower %}
        {% elif sourcemac == "30:C6:F7:2A:59:9C" |lower %}
        {% elif sourcemac == "C8:C9:A3:C9:D7:F4" |lower %}
        {% elif sourcemac == "30:C6:F7:28:F1:5C" |lower %}
        {% else %}
          Unknown location
        {% endif %}

The “LOWER” statement forces the MAC address to lowercase as the ESP32 is inconsistent in how it reports the address. The one thing I want to add is a condition for distance to ensure that the iBeacon really is in the room reported by the template.


Thank you Mark, this works perfectly

i just don´t get it…it works for 3 of 4 BT Proxies. I don´t know where my mistake is.
See the attribute of my smartphone:


And now see the template output:

Why the heck is he showing “N/A” while the correct MAC is one line above?

This seems like such a silly thing…is there no better way?

So every time you decide to add an additional tracker (or replace one if it dies)…you have to go manually edit ALL the templates for every item you want to track?