About

FindMySync is a simple Mac app, which synchronizes Apple Find My data (devices, items, … location & battery info) into a custom HTTP endpoint. You could use it to sync your devices location with Home Assistant device tracker.

Installation

FindMySync is opensource, you can find the full sourcecode at https://github.com/MartinPham/FindMySync

You can find the latest prebuilt application at https://github.com/MartinPham/FindMySync/releases/tag/latest

Extract the prerelease.tar.gz, you will have a build folder, with FindMySync.app inside

Open the FindMySync.app.dmg, there will be FindMySync.app inside, you can copy it into Applications folder.

To get it work, you will have to grant Full Disk Access and Accessibility permissions:

Thanks to u/RealRhialto, I’ve changed the way it requests FindMy data, you don’t have to grant Full Disk Access anymore!

Open System Settings

Navigate to Privacy & Security

Navigate to Accessibility

Click “+” button and browse to the FindMySync.app

Navigate to Full Disk Access

Click “+” button and browse to the FindMySync.app

Usage

Find My app must be opened to keep update the devices data files.

Press Ctrl + Right click into the FindMySync.app icon, and choose Open.

Click Open button on the next dialog

When the app asks for FindMy data permission, click Grant permissions

On Folder dialog, press ⌘ + Shift +G, and write ~/Library/Caches/com.apple.findmy.fmipcore into the address bar

Click Open

Integration with Home Assistant

Adding your devices into known_devices.yaml file

findmy_<Device ID, without "-" character>:
  name: <Device name>
  mac: FINDMY_<Device ID>
  icon:
  picture:
  track: true

Example

findmy_195463465CECEFA04C34357:
  name: My Airtag 1
  mac: FINDMY_195463465-CECE-FA04C-34357
  icon:
  picture:
  track: true

Navigate to Endpoint

Specify your Home Assistant address on URL, with suffix /api/services/device_tracker/see

Example: http://homeassistant.local:8123/api/services/device_tracker/see

Specify Long-Live token on Authorization, with prefix Bearer

Example: Bearer eyJKkmn….

Check Status to see if devices data are sent successfully