Skip to content

afwolfe/pebble-apple-find-my

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pebble-apple-find-my

An Apple "Find My" client for the Pebble smartwatch and accompanying server to interface with iCloud through pyicloud.

Status

The watchapp can login to the API server and get an access token in order to list your devices and send a request to find a particular device.

Server

The server/ folder implements a REST API in Python for initiating "Find My" requests using picklepete/pyicloud.

Client

The watchapp/ folder contains the source for the Pebble app. The PebbleKit JS component communicates with the server and sends the device information to the Pebble.

Installation

Server

  1. Use pipenv to install the dependencies
    $ cd server
    $ pip install pipenv
    $ pipenv install
  2. Open a pipenv shell and configure your iCloud account for 2FA, see the pyicloud documentation for more details.
    • It is recommended that you save your password/2FA in the keyring using the icloud command.
    • This will make server startup seamless without the need for interaction
    $ pipenv shell
    $ icloud [email protected]
    ICloud Password for [email protected]:
    Save password in keyring? (y/N)
  3. Create a .env file in the server folder and set the variables. See server/.env.example for values
    • If you don't specify APPLE_PASSWORD, pyicloud will attempt to use the keyring
  4. Start the server from the pipenv shell with python main.py OR explicitly run it through pipenv with:
    $ pipenv run python main.py

Client

  1. Build and install the watchapp using the Pebble SDK
  2. Make sure your server is running
  3. Configure your server URL, and username/password to match the API user and password you set for the server.
  4. Launch the watchapp and select a device to trigger a Find My alert on it.

Roadmap

  • List devices on watchapp
  • Trigger "Find My" alert from watchapp
  • Additional information on watchapp
    • Show request success/failure on Pebble
    • Icons for device class
    • Battery level and status
    • Location name using reverse geocoding API
  • Add endpoints to login/save iCloud credentials without pyicloud's icloud CLI.
  • Additional endpoint to set "Lost Mode"
  • Server authentication
  • Gevent WSGI server
  • Clay configuration

Acknowledgements