EufyLife integration

I have found a pretty easy way to get this to work.

Firstly connect to the EufyLife and and get the MAC

Next open Terminal on your home assistant and write:
(AA:AA:AA:AA:AA:AA = your scales Mac)

bluetoothctl

power on

scan on

pair AA:AA:AA:AA:AA:AA

trust AA:AA:AA:AA:AA:AA

I then got a new device notification for the scales (in my case the C1)

4 Likes

I have a spanking new C1 sitting next to an ESP32 BT Proxy and absolutely no activity in HA or ESPHome logs.
The scale is fine as I was able to pair it with the phone app and so the BTProxy node as it is doing other BT duties rather well.
Am I missing something?
If I try to add the Eufylife life integration manually, it shows “No device on Network” or similar such.

so I am pretty frustrated at this. I have a eufy scale (I think the P1). I tried a couple years ago to add it and it never worked and I moved on. I am back and trying again with my BLE esphome sensor and back to values not updating after adding.

I got the weight successfully once, but standing with my phone and home assistant open (bluetooth off) and clicking ‘add’ when Home assistant discovered it while on the scale and it sent the weight.

Every time since it never updates the value, even tried a home assistant restart. Sometimes the bluetooth icon on the scale blinks for awhile before solid, sometimes it’s quick, but no weight regardless.

I saw this from diagnostics, but not sure if it’s actually for the scale or not.

2025-03-11 19:13:04.379 WARNING (MainThread) [py.warnings] /usr/local/lib/python3.13/site-packages/eufylife_ble_client/client.py:196: FutureWarning: This method will be removed future version, use the services property instead.
  resolved = self._resolve_characteristics(await client.get_services())

2025-03-11 19:13:04.405 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/eufylife_ble_client/client.py", line 140, in connect
    await self._read_battery_level()
  File "/usr/local/lib/python3.13/site-packages/eufylife_ble_client/client.py", line 334, in _read_battery_level
    battery_bytes = await self._client.read_gatt_char(self._battery_char)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/bleak/__init__.py", line 721, in read_gatt_char
    return await self._backend.read_gatt_char(char_specifier, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/bleak_esphome/backend/client.py", line 77, in _async_wrap_bluetooth_operation
    return await func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/bleak_esphome/backend/client.py", line 551, in read_gatt_char
    characteristic = self._resolve_characteristic(char_specifier)
  File "/usr/local/lib/python3.13/site-packages/bleak_esphome/backend/client.py", line 494, in _resolve_characteristic
    characteristic = services.get_characteristic(char_specifier)
  File "/usr/local/lib/python3.13/site-packages/bleak/backends/service.py", line 179, in get_characteristic
    uuid = normalize_uuid_str(str(specifier))
  File "/usr/local/lib/python3.13/site-packages/bleak/uuids.py", line 1240, in normalize_uuid_str
    return str(UUID(uuid))
               ~~~~^^^^^^
  File "/usr/local/lib/python3.13/uuid.py", line 182, in __init__
    int = int_(hex, 16)
ValueError: invalid literal for int() with base 16: '0000None00001000800000805f9b34fb'

Anyone? @bdr9 ?

@GregT1993 That is awesome.
I was just about to return my Smart Scale P2 Pro to Amazon.
But now I’ve got it working!
Thank you.