Asynchronous Python client for the Fressnapf Tracker GPS API
Project description
fressnapftracker
Asynchronous Python client for the Fressnapf Tracker GPS API
Installation
uv add fressnapftracker
Usage
Authentication Flow
If you don't have credentials yet, you can use the authentication flow:
import asyncio
from fressnapftracker import AuthClient
async def main() -> None:
"""Show example of authentication flow."""
async with AuthClient() as auth:
# Step 1: Request SMS code
# Phone number should be in E.164 format (e.g., +49123456789)
sms_response = await auth.request_sms_code("+49123456789")
user_id = sms_response.id
print(f"User ID: {user_id}")
# Step 2: Verify with SMS code (you'll receive this via SMS)
sms_code = input("Enter SMS code: ")
verify_response = await auth.verify_phone_number(user_id, sms_code)
access_token = verify_response.user_token.access_token
print(f"Access token: {access_token}")
# Step 3: Get list of devices
devices = await auth.get_devices(user_id, access_token)
for device in devices:
print(f"Device: {device.serialnumber} - Token: {device.token}")
if __name__ == "__main__":
asyncio.run(main())
Getting Tracker Data
import asyncio
from fressnapftracker import ApiClient
async def main() -> None:
"""Show example of getting tracker data."""
async with ApiClient(
serial_number="<YOUR_SERIAL_NUMBER>",
device_token="<YOUR_DEVICE_TOKEN>",
) as api:
tracker = await api.get_tracker()
print(f"Pet name: {tracker.name}")
print(f"Battery: {tracker.battery}%")
if tracker.position:
print(f"Location: {tracker.position.lat}, {tracker.position.lng}")
if __name__ == "__main__":
asyncio.run(main())
Controlling the Tracker
import asyncio
from fressnapftracker import ApiClient
async def main() -> None:
"""Show example of controlling the tracker."""
async with ApiClient(
serial_number="<YOUR_SERIAL_NUMBER>",
device_token="<YOUR_DEVICE_TOKEN>",
) as api:
# Set LED brightness (0-100)
await api.set_led_brightness(75)
# Enable/disable deep sleep mode
await api.set_deep_sleep(True)
if __name__ == "__main__":
asyncio.run(main())
API Reference
AuthClient
Client for handling authentication with the Fressnapf Tracker API.
Constructor Parameters
request_timeout(int, optional): Request timeout in seconds (default: 10)client(httpx.AsyncClient, optional): Custom httpx client to useuser_agent(str, optional): Custom user agent string
Methods
request_sms_code(phone_number: str, locale: str = "en")->SmsCodeResponse: Request SMS verification codeverify_phone_number(user_id: int, sms_code: int)->PhoneVerificationResponse: Verify phone with code received via SMSget_devices(user_id: int, user_access_token: str)->list[Device]: Get list of devices
ApiClient
Client for interacting with the Fressnapf Tracker device API.
Constructor Parameters
serial_number(str): The serial number of your tracker device (required)device_token(str): The device token for API authentication (required)request_timeout(int, optional): Request timeout in seconds (default: 10)client(httpx.AsyncClient, optional): Custom httpx client to useuser_agent(str, optional): Custom user agent string
Methods
get_tracker()->Tracker: Get current tracker dataset_led_brightness(brightness: int): Set LED brightness (0-100)set_deep_sleep(enabled: bool): Enable/disable deep sleep mode
Models
Tracker
name: Pet/device namebattery: Battery percentagecharging: Whether the device is chargingposition: Position data (lat, lng, accuracy)tracker_settings: Device settings and featuresled_brightness: LED brightness settingsdeep_sleep: Deep sleep settings
Device
serialnumber: Device serial numbername: Device namedevice_token: Device token for API callsauth_token: Auth token for API calls
Exceptions
FressnapfTrackerError: Base exceptionFressnapfTrackerConnectionError: Connection/timeout errorsFressnapfTrackerAuthenticationError: Authentication errorsFressnapfTrackerInvalidTokenError: Invalid auth tokenFressnapfTrackerInvalidDeviceTokenError: Invalid device tokenFressnapfTrackerInvalidSerialNumberError: Invalid serial number
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fressnapftracker-0.1.1.tar.gz.
File metadata
- Download URL: fressnapftracker-0.1.1.tar.gz
- Upload date:
- Size: 45.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b9566bdcc11441a03f6e96d029d6fc53460a45edbfa7c1b47610749c3ab5dad
|
|
| MD5 |
7aafa50ae745ebe1b16f0243368b03ec
|
|
| BLAKE2b-256 |
fce176f9cabf511981843b2f298c43950be6c1bb68ea3da05c00de4b1d792f96
|
File details
Details for the file fressnapftracker-0.1.1-py3-none-any.whl.
File metadata
- Download URL: fressnapftracker-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f46ecf9a3c0582fca1518d53439bb5aeb3648f6126952d98c59640cd37bb38c3
|
|
| MD5 |
3cea29fb598d880c78be7d1e17fb8252
|
|
| BLAKE2b-256 |
2b4dcfaed9beed97cde3a28acb963683325ddf09ac2bdcb071706fbb213b883d
|