https://github.com/robertd502/lavviebotaio
Asynchronous Python library for the PurrSong API utilized by LavvieBot S litter boxes
https://github.com/robertd502/lavviebotaio
api-wrapper lavviebot lavviebot-s lavviescanner lavvietag purrsong python3 python3-library
Last synced: 6 months ago
JSON representation
Asynchronous Python library for the PurrSong API utilized by LavvieBot S litter boxes
- Host: GitHub
- URL: https://github.com/robertd502/lavviebotaio
- Owner: RobertD502
- License: mit
- Created: 2021-04-13T03:24:14.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2025-06-24T18:45:49.000Z (12 months ago)
- Last Synced: 2025-07-06T20:17:30.047Z (11 months ago)
- Topics: api-wrapper, lavviebot, lavviebot-s, lavviescanner, lavvietag, purrsong, python3, python3-library
- Language: Python
- Homepage:
- Size: 135 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# Lavviebotaio
Asynchronous Python library for the PurrSong API utilized by LavvieBot S litter boxes, LavvieScanners, and LavvieTags.
This package provides an API client for the [PurrSong](https://purrsong.com/en/) API allowing you to fetch the status of Lavviebot S litter boxes, LavvieScanners, LavvieTags, and cats associated with a PurrSong account.
**The API is not published by PurrSong, so it may break without notice.**
## Installation
```
pip3 install lavviebotaio
```
This package depdends on [aiohttp](https://docs.aiohttp.org/en/stable/), and requires Python 3.9 or greater.
## Usage
```python
import asyncio
from lavviebot import LavviebotClient
from aiohttp import ClientSession
async def main():
async with ClientSession() as session:
# Create a client using PurrSong account email and password
client = LavviebotClient("email", "password", session)
# Discover all devices associated with PurrSong account
devices = await client.async_discover_devices()
# Discover all cats associated with account. Requires `location id` as an `int`.
cats = await client.async_discover_cats(123)
# Get info pertaining to a particular litter box (state, usage, error log) using device_id integer
litter_box_status = await self.async_get_litter_box_status(device_id)
# Get litter box usage log pertaining to a particular litter box using device_id integer
litter_box_log = await client.async_get_litter_box_cat_log(device_id)
# Get weights, durations, and usage counts for "Unknown" cat using cat_id integer (cat_id for unknown cats is equal to the location_id)
unknown_cat_status = await client.async_get_unknown_status(cat_id)
# Get weights, durations, and usage counts for a particular cat using cat_id integer
cat_status = await client.async_get_cat_status(cat_id)
# Get info about a particular LavvieScanner using device_id and device_type of "lavvie_scanner")
lavvie_scanner = await client.async_get_iot_device_status(device_id, "lavvie_scanner")
# Get info about a particular LavvieTag using device_id and device_type of "lavvie_tag")
lavvie_tag = await client.async_get_iot_device_status(device_id, "lavvie_tag")
# Get all associated litter boxes, scanners, tags, and cats and store in a LavviebotData object
get_all = await client.async_get_data()
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
```