Tile Bluetooth tracker location polling service.
Polls the Tile cloud API via the pytile library to retrieve last-known locations for all Tile devices on the account. Stores a full history snapshot in data_tile_location every sync cycle.
Uses https://production.tile-api.com/api/v1 — the Tile production API. Life360 acquired Tile in 2022 and shut down the consumer app and tile.com website in January 2025, but the backend API remains operational for existing integrations and third-party libraries.
The pytile library authenticates with Tile email/password credentials and provides read-only access to device locations. Device management (add, delete, mark as lost) must be done through the Life360 app.
In config.yaml:
tile:
username: user@example.com
password: your_password
pytile — async Tile cloud API clientaiohttp — async HTTP (required by pytile)Install: pip install pytile
| Column | Type | Description |
|---|---|---|
| Guid | VARCHAR(64) | Primary key |
| Package | VARCHAR(255) | Package scope |
| TileUuid | VARCHAR(128) | Tile device UUID |
| TileName | VARCHAR(128) | Device name |
| TileKind | VARCHAR(64) | TILE, PHONE, etc. |
| TileArchetype | VARCHAR(64) | Device archetype |
| Lat | DECIMAL(10,7) | Latitude |
| Lng | DECIMAL(10,7) | Longitude |
| Altitude | DECIMAL(8,1) | Altitude (metres) |
| Accuracy | DECIMAL(8,1) | GPS accuracy (metres) |
| LastTs | BIGINT | Last seen timestamp (unix) |
| LostTs | BIGINT | Lost timestamp (unix) |
| IsLost | TINYINT(1) | 1 if marked lost |
| IsDead | TINYINT(1) | 1 if battery dead |
| Visible | TINYINT(1) | 1 if visible |
| CreateTime | DATETIME | Sync timestamp |
Each sync cycle inserts a new row per device, building a location history.
| Method | Description |
|---|---|
sync() |
Fetch all tiles and write to DB. Returns {status, count}. |
list_tiles() |
Return list of parsed tile dicts (no DB write). |
process(context) |
Workflow entry point. Context key command: sync or tiles. |
run_workflow_direct(guid, selector) |
Workflow node interface. TILE_SYNC → sync. |
# Show all tile last-known locations
python ObjServiceTile.py tiles
# Fetch and store to database
python ObjServiceTile.py sync
Add a def_scheduler entry to poll every 15 minutes:
TaskName: TILE_SYNC
Crontab: */15 * * * *
TriggerType: workflow
Workflow: TILE_SYNC
ObjServiceLife360.py — Life360 family tracking (broader device support)ObjServiceOwnTracks.py — Self-hosted location trackingObjServiceNetwork.py — Network device presence detection