Conversation
Stopping only ended the re-triggering, so a DULT accessory kept sounding until its own timeout. AirTags have no stop command and stop by themselves; unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xeHfDLMuUeusX9PEgNEmY
…-key .keys import
Adds Google Find Hub as a second location network next to Apple's, through a self-hosted
service built on GoogleFindMyTools (the "googlefind" service).
- Google trackers of the account can be added as devices (menu: "Add from Google Find Hub"),
or linked to any existing device. A tag that advertises on both networks is then one
device in the app, with the reports of both merged into its location and history. Reports
carry provenance "google"; the map card says which network a position came from. Fresh
locations are requested from Google only on a manual refresh; a tracker with no reports
yet is located once.
- OpenHaystack keys can be imported from a .keys file ("Add OpenHaystack key"), including
files holding several keys for tags that rotate through them; they are ordinary
custom_rolling_key_accessory devices fetched through the Apple account.
- Ringing Google trackers: owner ring over the FMDN Beacon Actions characteristic, with the
ring key and current EIDs from the googlefind service. Google trackers also show as
"Nearby", recognised by EID (their battery flags are encrypted, so signal only).
- Ring failures on the map card are shown instead of being retried silently.
- Settings > Extra location sources: service URL, API token, optional HTTP Basic Auth.
- No Room schema change; strings in all locales.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016xeHfDLMuUeusX9PEgNEmY
CustomAccessoryParser never set ownedBeaconAccessoryJson, so Ring on the map card had nothing to derive addresses from and always reported "Could not compute this accessory's current address". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xeHfDLMuUeusX9PEgNEmY
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Google Find Hub as a second location network next to Apple's.
The main use is tags that advertise on both networks, such as DIY trackers (e.g. Everytag-style firmware) that send Apple Find My and Google Find Hub frames at the same time. Such a tag is one device in the app, and the location reports from both networks are merged into its position and history. Tags that are only on Google work too.
Google reports come from a small self-hosted service, googlefind-service (Docker, built on GoogleFindMyTools). The app only talks to that service; nothing Google-specific is signed in on the phone. Without it configured, nothing changes.
What it adds:
0xFEAAservice data. Their battery flags are encrypted, so only the signal is shown..keysfile (Macless Haystack / OpenHaystack format), including files with several keys for tags that rotate through them. They become ordinarycustom_rolling_key_accessorydevices, fetched through the Apple account like any self-made tag.There is no Room schema change. The Google-specific data (the linked tracker id) is kept in SharedPreferences, because FindMy.py rewrites the accessory JSON and drops unknown keys. New strings are in all locales.
Depends on #242 and #241. This branch contains both commits: the ring code needs
stopSound, and the map card and Nearby need the accessory JSON on the model. Once those are merged, the diff shrinks to the one feature commit.Verified: on a phone with a Google account that has two off-the-shelf Find Hub trackers and one DIY tag on both networks:
./gradlew testAllandadd_strings.py --checkpass. New JVM tests cover the FMDN ring command, report merging and.keysparsing.Not verified: