Adding "Google find my device" integration

You probably don’t want to run this script as it probably exists on your Home Assistant instance, but instead run it on another machine on your network and point it at an MQTT broker that Home Assistant is reading from.

If this reads like greek to you, it might be best to wait for a proper integration to show up at some point, which is probably what I’m going to do.

This may be more of a Google question but do any of you know why a lot of my devices often only send a semantic location and not coordinates? My pixel watch 3 and pixel 9 pro phone always send coordinates but my pixel buds 2 pro and Chipolo trackers more often only send ‘semantic location: home’ which foes not publish to mqtt.

They do sometimes send coordinates but i cannot figure out under what circumstances they choose one over the other.

Same problem here for Two days no problem, Always received coordinates.
From today evening only semantic location “home” for my tracker android find my

I’m having a problem with the device tracker, it appears fine on a map, but the state of the device tracker stays always as unknown. Even if the device tracker is inside of a zone. Is this normal?

Edit: I also realized that I keep getting “semantic location: home” and that home assistant displays it as “unknown” in the GPS coords.

Edit 2: Apparently it’s to do if you have a Google Home with an address connected to it. Unable to Retrieve Location from Tag · Issue #8 · leonboe1/GoogleFindMyTools · GitHub

I’m having a problem where the process is failing part way through and once it fails the only way to get it going again is to reboot the host machine.

Anyone else seeing this?

Hi, has anyone have a tutorial how to make this happening? Adding "Google find my device" integration - #16 by endeavour

I have a MQTT running for the PS5, but i have no idea what to do, or where to place, those scripts in python to make it working in HA.

If anyone could point me to the right direction it would be extremely helpful :pray: thanks!

1 Like

You can find instructions on how to install the script here: GitHub - leonboe1/GoogleFindMyTools: Framework for tracking and building your own Google Find My Device / Find Hub trackers 🧭

The only difference between the two scripts is that endeavour includes MQTT, and at the end of the instructions you start publish_mqtt.py instead of main.py

1 Like

I have written a summary how to configure it

it is in german but deepl should help

2 Likes

Hi xHecktor,

Thks for this “how to”, could you please help on how to get Chrome loading and allow me to authenticate please ?

I’m under Linux (Ubuntu 25.04) and nothing happened here :

(venv) lolomin@hydra:~/GoogleFindMyTools$ python3 main.py 
Loading...
[AuthFlow] This script will now open Google Chrome on your device to login to your Google account.
> Please make sure that Chrome is installed on your system.
> For macOS users only: Make that you allow Python (or PyCharm) to control Chrome if prompted. 
    
[AuthFlow] Press Enter to continue...
[AuthFlow] Installing ChromeDriver...
[ChromeDriver] ChromeDriver gestartet.
[AuthFlow] Waiting for 'oauth_token' cookie to be set...

Got this and it seems Chrome never starts/open a new tab so I’m stuck ?

All python requirements are filled, I have also tried without a venv but same thing happened :confused:

Any help would be greatly appreciated.
Thks !

lolomin

Hey lolomin,

first of all, I’m afraid I have to tell you that I have also familiarized myself with ChatGPT and therefore only know my way around to a limited extent. I just wrote down the steps of what I did in the hope of helping others.
However, I had a similar problem under windows. I could help myself by starting Chrome in debug mode and slightly modifying the C:\WINDOWS\system32\GoogleFindMyTools\chrome_driver.py. Have a look at my instructions for Windows.
Two things are changed there:

  1. The chrome driver was missing in Windows. Here I have adjusted the path manually
  2. Start Chome in debug.

If you are using my version, I have completely changed the chrome_driver.py here, as I had previously obtained the access data (secrets.json) with Windows (GitHub - leonboe1/GoogleFindMyTools: Framework for tracking and building your own Google Find My Device / Find Hub trackers 🧭 with this version) and then had to copy it to the Raspberry. The reason was that I could not log in to the Raspberry UI with a google profile. This should also work for you in any case

I hope I could help you

Thanks for a great tutorial. I will admit to being a complete beginner in HA, and I’m failing at the HA config bit.

I can’t seem to work out what goes where as the “New Script” button opens a dialog that doesn’t seem to fit with the instructions.

Everything else seemed to go OK.

Nice, wouldn’t have thought that a newcomer would venture straight into something like that. I’ve expanded the last part a bit for you :slight_smile:

1 Like

I found this version GitHub - txitxo0/googlefindmytools-homeassistant: Fork of Google Find My Device trackers that can publish the locations to an MQTT topic discoverable by home assistant which has a docker container, which could be handier to run.
I could get the non-docker version to run, and I could see it retrieved a position, but it was a semantic value (Kitchen Display) which corresponds to my Nest Hub 2nd gen, ie Location data received: {'semantic_location': 'Kitchen display', .

@xHecktor seems like you are hardcoding the gps location for “home” and passing it through in that case? That seems overly complex.
As far as I am aware you can just pass a state home and that should still work in Home Assistant? the GPS coordinates are not actually required.

1 Like

No unfortunately not. The koordinates are in the attributes. For every message to home assistant it need a state. But Google delivers the semantic value “home” for example only if you are home. Otherwise it would be unknown as state in every message. You can do that. But than home Assistant would take unknown in state and one secound later it would realize that your koordinates in the attributes are the home koordinates. So it would set home as status again. So in one sentence it switches between unknown and home every single update trigger. If that is what you mean.
The other thing is if I don’t send koordinates in the attributes, home assistant would override the status from home to unknown.

But what you see for example “kitchen” is what I added extra. So if it is in kitchens als semantic value. The status is set as kitchen with home koordinates. That means HA change it from kitchen to home and in the attributes you can see the semantic value kitchen all the time. I thought it could be useful for logging. Because status is logged in history but not the attributes.

Hope I could answer it

1 Like

I’m only a newcomer to HA, been coding for Arduino for several years.

All right. Could you get it working now?

Getting there, not helped by my user on the Pi doing mqtt calls not being called admin. :slightly_smiling_face:

Currently doing battle with

Jul 22 22:05:22 raspberrypi python[7998]: ============================================================
Jul 22 22:05:22 raspberrypi python[7998]: Processing device: Galaxy Tab A (2016)
Jul 22 22:05:22 raspberrypi python[7998]: ============================================================
Jul 22 22:05:22 raspberrypi python[7998]: [Discovery] MQTT nicht verbunden – Discovery für Galaxy Tab A (2016) übersprungen.
Jul 22 22:05:22 raspberrypi python[7998]: [LocationRequest] Requesting location data for Galaxy Tab A (2016)...
Jul 22 22:05:22 raspberrypi python[7998]: [LocationRequest] Location request successful. Decrypting locations...
Jul 22 22:05:22 raspberrypi python[7998]: ----------------------------------------
Jul 22 22:05:22 raspberrypi python[7998]: [DecryptLocations] Decrypted Locations:
Jul 22 22:05:22 raspberrypi python[7998]: Latitude: xxxx
Jul 22 22:05:22 raspberrypi python[7998]: Longitude: yyyy
Jul 22 22:05:22 raspberrypi python[7998]: Altitude: 76
Jul 22 22:05:22 raspberrypi python[7998]: Google Maps Link: https://www.google.com/maps/search/?api=1&query=xxxx,yyyy
Jul 22 22:05:22 raspberrypi python[7998]: Time: 2025-07-22 21:45:30
Jul 22 22:05:22 raspberrypi python[7998]: Status: 1
Jul 22 22:05:22 raspberrypi python[7998]: Is Own Report: True
Jul 22 22:05:22 raspberrypi python[7998]: ----------------------------------------
Jul 22 22:05:22 raspberrypi python[7998]: [Error] Fehler beim Verarbeiten von Galaxy Tab A (2016): MQTT client is not connected during state publish
Jul 22 22:05:22 raspberrypi python[7998]: [Fallback] MQTT nicht verbunden – konnte 'unknown' für Galaxy Tab A (2016) nicht setzen.
Jul 22 22:05:22 raspberrypi python[7998]: ------------------------------------------------------------

which I suspect is a mis configured user account somewhere.

I’ll update as I get there.

I was able to get the Docker version running. It works quite well. I looked at docker-compose.prod.yml to get an idea. I set mine up in Unraid.

Although every time it updates, it logs as unknown just before its current status.

1 Like

Yes, the way the script is currently working, it publishes “unknown” as the state, plus the GPS coordinates, and Home Assistant then updates the state based on the GPS coordinates.

I managed to workaround the “Semantic Location” issue and I will open a PR on that repo today (i like the docker and overall neat approach).

Just discovered I can’t copy/paste from one window to another. :slightly_smiling_face:

Now to get the visuals working.

Wonderful addon and perfect instructions.