Google FindMy / Find Hub Integration

Hi. I don’t know if I did something wrong, but I generated the secret.json file despite the errors. All tags, LinkBuds S headphones, and my phone are showing up, but my watch (OnePlus Watch 2) isn’t showing up. However, I have a different problem. Despite adding the integration on September 29th, I still don’t have device locations. Since then, I’ve changed the location several times, but it’s still unavailable.

I have the same problem. The FCM Connection is always reset by peer error 1004.
Strangely I do not see DNS requests for the FCM Subdomain.
Will check if I find more.

Edit: seems to be this bug: [BUG] Error processing FCM callback · Issue #53 · BSkando/GoogleFindMy-HA · GitHub
Should be fixed with the next version, since the PR is already merged into main.

It seems this was not the fix for my/our problem. Will try to get logs.

Great integration! I’m running into what seems like either a problem or a limitation, and I wanted to check which one it is.

I’ve got the trackers set up in Home Assistant—one is my phone, and the other two are similar to AirTag devices. When I use your integration to play a sound on them, it works fine. But when I try to open the tracker’s page, I get an “access denied” error. Also, if I try to add the trackers to a map in Home Assistant, they don’t show up as selectable items—even though their entities do exist.

Is this a limitation of the Find Hub integration? I saw someone mention that these types of trackers aren’t actually allowed by Google to be displayed on maps.

And as im a new user here are the trackers through the integration

Those that are struggling to get locations, you may need to go back and run main.py again. When you get through the first part, it will ask you if you want to check coordinates for one of your devices. Pick a device and go through the process. It will have you go through a second login process to get shared keys. After you succesfully see location data in the main.py windows, go back to your secrets.json and do the copy/paste into the integration again.

I will be adding this step back to the authentication process, as it appears it is still necessary!

EDIT: Please see updated authentication process:

Authentication Instructions

1 Like

that worked like a treat. Additional question; can the “shared with me” people be added through the specific user? ie. not get that user to also get the secret key but do it through one persons sercret?

Hello,
Very nice projet.
I created an issue because authenficiation ( the second step failed ) :

thnaks

hi, adding the integration was very easy. but i am unable to install the device card.
after adding the repo and restarting home assistant, the repo is gone again.
what is the problem?

I’m looking for a way to track a wear OS LTE watch. Is this the way to do it?

Well wouldn’t ya know it - I had to change my password and the auth was apparently lost at that point (integration quit working.) I tried again this time on two different Windows machines to no avail; getting this error (and I’m using your chrome_driver.py from your repo.) Pip requirements install went smooth, no issues there. (Edit: I originally posted a pic, realized you probably couldn’t read it so here’s what I copied from the terminal.)

(venv) C:\GoogleFindMyTools-main>python 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] Default ChromeDriver creation failed: Message: session not created: cannot connect to chrome at 127.0.0.1:15366
from chrome not reachable; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#sessionnotcreatedexception
Stacktrace:
Symbols not available. Dumping unresolved backtrace:
        0x7c58c3
        0x7c5904
        0x5de5bb
        0x5d1e4c
        0x61a006
        0x61008f
        0x60feb6
        0x658993
        0x65830a
        0x64c766
        0x61dac0
        0x61ede4
        0xa47974
        0xa42bea
        0x7ee5b4
        0x7ddd28
        0x7e4d8d
        0x7cded8
        0x7ce09c
        0x7b7d1a
        0x76185d49
        0x7751d6db
        0x7751d661

[ChromeDriver] Trying alternative paths...
[ChromeDriver] ChromeDriver failed using path C:\Program Files\Google\Chrome\Application\chrome.exe: Message: session not created: cannot connect to chrome at 127.0.0.1:18305
from chrome not reachable; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#sessionnotcreatedexception
Stacktrace:
Symbols not available. Dumping unresolved backtrace:
        0x6658c3
        0x665904
        0x47e5bb
        0x471e4c
        0x4ba006
        0x4b008f
        0x4afeb6
        0x4f8993
        0x4f830a
        0x4ec766
        0x4bdac0
        0x4bede4
        0x8e7974
        0x8e2bea
        0x68e5b4
        0x67dd28
        0x684d8d
        0x66ded8
        0x66e09c
        0x657d1a
        0x76185d49
        0x7751d6db
        0x7751d661

[ChromeDriver] Trying headless mode as last resort...
[ChromeDriver] Headless mode also failed: Message: session not created: cannot connect to chrome at 127.0.0.1:22424
from chrome not reachable; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#sessionnotcreatedexception
Stacktrace:
Symbols not available. Dumping unresolved backtrace:
        0xd758c3
        0xd75904
        0xb8e5bb
        0xb81e4c
        0xbca006
        0xbc008f
        0xbbfeb6
        0xc08993
        0xc0830a
        0xbfc766
        0xbcdac0
        0xbcede4
        0xff7974
        0xff2bea
        0xd9e5b4
        0xd8dd28
        0xd94d8d
        0xd7ded8
        0xd7e09c
        0xd67d1a
        0x76185d49
        0x7751d6db
        0x7751d661

Traceback (most recent call last):
  File "C:\GoogleFindMyTools-main\chrome_driver.py", line 70, in create_driver
    driver = uc.Chrome(options=chrome_options, version_main=None)
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\undetected_chromedriver\__init__.py", line 466, in __init__
    super(Chrome, self).__init__(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        service=service,
        ^^^^^^^^^^^^^^^^
        options=options,
        ^^^^^^^^^^^^^^^^
        keep_alive=keep_alive,
        ^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\selenium\webdriver\chrome\webdriver.py", line 47, in __init__
    super().__init__(
    ~~~~~~~~~~~~~~~~^
        browser_name=DesiredCapabilities.CHROME["browserName"],
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
        keep_alive=keep_alive,
        ^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\selenium\webdriver\chromium\webdriver.py", line 71, in __init__
    super().__init__(command_executor=executor, options=options)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\selenium\webdriver\remote\webdriver.py", line 263, in __init__
    self.start_session(capabilities)
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\undetected_chromedriver\__init__.py", line 724, in start_session
    super(selenium.webdriver.chrome.webdriver.WebDriver, self).start_session(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        capabilities
        ^^^^^^^^^^^^
    )
    ^
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\selenium\webdriver\remote\webdriver.py", line 366, in start_session
    response = self.execute(Command.NEW_SESSION, caps)["value"]
               ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\selenium\webdriver\remote\webdriver.py", line 458, in execute
    self.error_handler.check_response(response)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\selenium\webdriver\remote\errorhandler.py", line 233, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: cannot connect to chrome at 127.0.0.1:15366
from chrome not reachable; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#sessionnotcreatedexception
Stacktrace:
Symbols not available. Dumping unresolved backtrace:
        0x7c58c3
        0x7c5904
        0x5de5bb
        0x5d1e4c
        0x61a006
        0x61008f
        0x60feb6
        0x658993
        0x65830a
        0x64c766
        0x61dac0
        0x61ede4
        0xa47974
        0xa42bea
        0x7ee5b4
        0x7ddd28
        0x7e4d8d
        0x7cded8
        0x7ce09c
        0x7b7d1a
        0x76185d49
        0x7751d6db
        0x7751d661


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\GoogleFindMyTools-main\main.py", line 10, in <module>
    list_devices()
    ~~~~~~~~~~~~^^
  File "C:\GoogleFindMyTools-main\NovaApi\ListDevices\nbe_list_devices.py", line 45, in list_devices
    result_hex = request_device_list()
  File "C:\GoogleFindMyTools-main\NovaApi\ListDevices\nbe_list_devices.py", line 20, in request_device_list
    result = nova_request(NOVA_LIST_DEVICS_API_SCOPE, hex_payload)
  File "C:\GoogleFindMyTools-main\NovaApi\nova_request.py", line 18, in nova_request
    android_device_manager_oauth_token = get_adm_token(get_username())
  File "C:\GoogleFindMyTools-main\Auth\adm_token_retrieval.py", line 10, in get_adm_token
    return request_token(username, "android_device_manager")
  File "C:\GoogleFindMyTools-main\Auth\token_retrieval.py", line 14, in request_token
    aas_token = get_aas_token()
  File "C:\GoogleFindMyTools-main\Auth\aas_token_retrieval.py", line 30, in get_aas_token
    return get_cached_value_or_set('aas_token', _generate_aas_token)
  File "C:\GoogleFindMyTools-main\Auth\token_cache.py", line 18, in get_cached_value_or_set
    value = generator()
  File "C:\GoogleFindMyTools-main\Auth\aas_token_retrieval.py", line 17, in _generate_aas_token
    token = request_oauth_account_token_flow()
  File "C:\GoogleFindMyTools-main\Auth\auth_flow.py", line 22, in request_oauth_account_token_flow
    driver = create_driver()
  File "C:\GoogleFindMyTools-main\chrome_driver.py", line 100, in create_driver
    raise Exception(
    ...<3 lines>...
    )
Exception: [ChromeDriver] Failed to install ChromeDriver. A current version of Chrome was not detected on your system.
If you know that Chrome is installed, update Chrome to the latest version. If the script is still not working, set the path to your Chrome executable manually inside the script.
Exception ignored in: <function Chrome.__del__ at 0x000001C62FD26AC0>
Traceback (most recent call last):
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\undetected_chromedriver\__init__.py", line 843, in __del__
    self.quit()
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\undetected_chromedriver\__init__.py", line 798, in quit
    time.sleep(0.1)
OSError: [WinError 6] The handle is invalid
Exception ignored in: <function Chrome.__del__ at 0x000001C62FD26AC0>
Traceback (most recent call last):
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\undetected_chromedriver\__init__.py", line 843, in __del__
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\undetected_chromedriver\__init__.py", line 798, in quit
OSError: [WinError 6] The handle is invalid
Exception ignored in: <function Chrome.__del__ at 0x000001C62FD26AC0>
Traceback (most recent call last):
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\undetected_chromedriver\__init__.py", line 843, in __del__
  File "C:\Users\****\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\undetected_chromedriver\__init__.py", line 798, in quit
OSError: [WinError 6] The handle is invalid

Any thoughts on what’s wrong or if I’m doing something wrong? Like I said, I used your repo instead of the original one.

My first thought is to make absolutely certain you have the most up to date Chrome installed and that you have all Chrome instances closed out before running the script.

Other in my Discord are having success using an Ubuntu Linux VM to run the script, since it is a containerized environment and easy to control configuration. But, obviously that is an extra layer of complexity.


Everything went well. I also copy-pasted secret.json. But I get this error. How do I get past it?

I’ve been using it correctly for 2-3 weeks (thank you!). However, it recently started failing with a ‘bad authentication’ error. I thought regenerating the secrets file would fix it, but after following all the steps (as I did weeks ago), it now says ‘no devices found.’ Here’s my secrets file. Any clue?

[DELETED]

EDIT: reinstalling the integration and restarting HA fix the problem

Yesterday, I released V1.6.0, which fixed this issue (and many other issues).

One thing to note before updating, you will need to remove your current config after you update, then re-add the integration. This is due to the new multi-account feature. If you do not do this, you will end up with duplicate entities.

Enjoy the new release!

Your authentication will fail again eventually if you do not update to 1.6.0…that was happening due to a bug.

Hi, I successfully integrated Find hub integ., but the location is still not showing up. Lass seen is unknown. But when I select localization via a Python script and choose any tracker, I always get good GPS coordinates. So where is problem?

I have the exactly the same problem.

@supperka and @starmane007 is it your first time ever setting up the integration? You have never had another version of it? Just need to know to help troubleshoot

Also, what is your polling interval set at?

This has been on my list to try forever (still using a different implementation via a script only).

Can I ask if you’re passing the semantic locations to Hone Assistant as an attribute? I find it really handy having those.