{"id":18854626,"url":"https://github.com/robertd502/lavviebotaio","last_synced_at":"2025-12-13T23:55:20.590Z","repository":{"id":52716881,"uuid":"357411848","full_name":"RobertD502/lavviebotaio","owner":"RobertD502","description":"Asynchronous Python library for the PurrSong API utilized by LavvieBot S litter boxes","archived":false,"fork":false,"pushed_at":"2025-06-24T18:45:49.000Z","size":138,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-06T20:17:30.047Z","etag":null,"topics":["api-wrapper","lavviebot","lavviebot-s","lavviescanner","lavvietag","purrsong","python3","python3-library"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RobertD502.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-04-13T03:24:14.000Z","updated_at":"2024-07-27T18:22:53.000Z","dependencies_parsed_at":"2024-02-06T01:24:46.030Z","dependency_job_id":"393ed99b-908f-4522-a89a-be57df2aa01e","html_url":"https://github.com/RobertD502/lavviebotaio","commit_stats":{"total_commits":55,"total_committers":1,"mean_commits":55.0,"dds":0.0,"last_synced_commit":"6b7faaf8547c26731188666a6f9ab683b98a8114"},"previous_names":["robertd502/python-lavviebot"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/RobertD502/lavviebotaio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertD502%2Flavviebotaio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertD502%2Flavviebotaio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertD502%2Flavviebotaio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertD502%2Flavviebotaio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RobertD502","download_url":"https://codeload.github.com/RobertD502/lavviebotaio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertD502%2Flavviebotaio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273218428,"owners_count":25065913,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-wrapper","lavviebot","lavviebot-s","lavviescanner","lavvietag","purrsong","python3","python3-library"],"created_at":"2024-11-08T03:49:15.518Z","updated_at":"2025-12-13T23:55:20.488Z","avatar_url":"https://github.com/RobertD502.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lavviebotaio\nAsynchronous Python library for the PurrSong API utilized by LavvieBot S litter boxes, LavvieScanners, and LavvieTags.\n\nThis 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.\n\n\n**The API is not published by PurrSong, so it may break without notice.**\n\n\n## Installation\n\n```\npip3 install lavviebotaio\n```\n\nThis package depdends on [aiohttp](https://docs.aiohttp.org/en/stable/), and requires Python 3.9 or greater.\n\n## Usage\n\n```python\nimport asyncio\nfrom lavviebot import LavviebotClient\nfrom aiohttp import ClientSession\n\nasync def main():\n    async with ClientSession() as session:\n    \n        # Create a client using PurrSong account email and password\n        client = LavviebotClient(\"email\", \"password\", session)\n\n        # Discover all devices associated with PurrSong account\n        devices = await client.async_discover_devices()\n        \n        # Discover all cats associated with account. Requires `location id` as an `int`.\n        cats = await client.async_discover_cats(123)\n        \n        # Get info pertaining to a particular litter box (state, usage, error log) using device_id integer\n        litter_box_status = await self.async_get_litter_box_status(device_id)\n        \n        # Get litter box usage log pertaining to a particular litter box using device_id integer\n        litter_box_log = await client.async_get_litter_box_cat_log(device_id)\n        \n        # Get weights, durations, and usage counts for \"Unknown\" cat using cat_id integer (cat_id for unknown cats is equal to the location_id)\n        unknown_cat_status = await client.async_get_unknown_status(cat_id)\n        \n        # Get weights, durations, and usage counts for a particular cat using cat_id integer\n        cat_status = await client.async_get_cat_status(cat_id)\n\n        # Get info about a particular LavvieScanner using device_id and device_type of \"lavvie_scanner\")\n        lavvie_scanner = await client.async_get_iot_device_status(device_id, \"lavvie_scanner\")\n\n        # Get info about a particular LavvieTag using device_id and device_type of \"lavvie_tag\")\n        lavvie_tag = await client.async_get_iot_device_status(device_id, \"lavvie_tag\")\n        \n        # Get all associated litter boxes, scanners, tags, and cats and store in a LavviebotData object\n        get_all = await client.async_get_data()\n\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertd502%2Flavviebotaio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobertd502%2Flavviebotaio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertd502%2Flavviebotaio/lists"}