ESPHome and Android Beacon Simulator - the perfect presence detection (almost there!)

I just wanted to share that they added BLE low power transmit right into the HA Android app, it gives you an UUID you can use with this esphome script. You can remove Beacon Simulator and just use the HA Android app now!

5 Likes

Hmmm, it does not yet out of the box with ESPHome - see https://github.com/esphome/esphome/pull/1627

2 Likes

Any updates? I am having issues with ESPHome not reading UUID that HA client sends. But I can read this part

strcmp(ibeacon.get_uuid().to_string().c_str()

What kind of ID is this anyway? I cannot find it under any other BLE scanners nor can I find reference to it in ESPHome, but it clearly works =)

did some testing today. Kind of having low hope for ESPHome solution. Inconsistent scan, cannot see HA app iBeacon UUID, low signal strength…
Decided to go back to Arduino IDE - back to basics =)
Just loaded their simple BLE_BEACON_SCANNER example and ran without modifications.

  • can see UUID no problem
  • instant acquisition of the new client as soon as I walk into a room

I have not tested with wifi on - maybe it will get interference from it. But so far looks promising. Was hoping for ESPHome to work like that “out of the box”

PS: Just tested with WIFI enabled as well. Had to use different BLE library as IDE complaining that it does not have enough space on ESP32. But both BLE and WIFI work pretty reliably

Has anyone got this to work without the lambdas?
From the companion app I get this as my UUID: ‘c2038e6f-0d86-4151-8678-8e39eca8614d’

In esphome I see this:
#[06:58:32][VV][esp32_ble_tracker:402]: Parse Result:
#[06:58:32][VV][esp32_ble_tracker:419]: Address: 6A:37:90:53:BC:2B (RANDOM)
#[06:58:32][VV][esp32_ble_tracker:421]: RSSI: -72
#[06:58:32][VV][esp32_ble_tracker:422]: Name: ‘’
#[06:58:32][VV][esp32_ble_tracker:436]: Manufacturer data: 02.15.C2.03.8E.6F.0D.86.41.51.86.78.8E.39.EC.A8.61.4D.00.64.00.01.A2 (23)
#[06:58:32][VV][esp32_ble_tracker:439]: iBeacon data:
#[06:58:32][VV][esp32_ble_tracker:440]: UUID: 4D61A8EC-398E-7886-5141-860D6F8E03C2
#[06:58:32][VV][esp32_ble_tracker:441]: Major: 100
#[06:58:32][VV][esp32_ble_tracker:442]: Minor: 1
#[06:58:32][VV][esp32_ble_tracker:443]: TXPower: -94
#[06:58:32][VV][esp32_ble_tracker:452]: Adv data: 1A.FF.4C.00.02.15.C2.03.8E.6F.0D.86.41.51.86.78.8E.39.EC.A8.61.4D.00.64.00.01.A2 (27)
#[0;37m[V][component:208]: Components should block for at most 20-30ms.[0m

The UUID is being displayed as reverse
This is where my code stands at the moment, still not working. Should it?

esp32_ble_tracker:
binary_sensor:
  - platform: ble_presence
    ibeacon_uuid: 'c2038e6f-0d86-4151-8678-8e39eca8614d'
    name: "LR"

sensor:
  - platform: ble_rssi
    service_uuid: '4D61A8EC-398E-7886-5141-860D6F8E03C2'
    name: "LR RSSI"

I’m also at the same point and it doesn’t look like the generated UUID in iBeacon simulator uses the same format as the IDs reported in ESPHome. Anyone able to help us out?