{"id":15574583,"url":"https://github.com/runfalk/pybotvac","last_synced_at":"2025-05-12T21:06:44.121Z","repository":{"id":68823731,"uuid":"100827127","full_name":"runfalk/pybotvac","owner":"runfalk","description":"Unofficial pythonic API for Neato BotVac","archived":false,"fork":false,"pushed_at":"2017-08-20T00:22:10.000Z","size":6,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T03:35:36.189Z","etag":null,"topics":["neato","python","vacuum-cleaner"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/runfalk.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-19T23:34:46.000Z","updated_at":"2021-10-02T21:27:55.000Z","dependencies_parsed_at":"2023-04-29T13:00:31.097Z","dependency_job_id":null,"html_url":"https://github.com/runfalk/pybotvac","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runfalk%2Fpybotvac","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runfalk%2Fpybotvac/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runfalk%2Fpybotvac/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runfalk%2Fpybotvac/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/runfalk","download_url":"https://codeload.github.com/runfalk/pybotvac/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253823425,"owners_count":21969846,"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","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":["neato","python","vacuum-cleaner"],"created_at":"2024-10-02T18:19:34.600Z","updated_at":"2025-05-12T21:06:44.060Z","avatar_url":"https://github.com/runfalk.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"PyBotVac\n========\nUnofficial pythonic API for Neato BotVac. This API allows you to easily\ncontrol and communicate with your Neato BotVac vacuum cleaner. It uses the\nofficial API.\n\n\nRequirements\n------------\nIn order to use the library you need to register your application with Neato.\nLog into `\u003chttps://developers.neatorobotics.com/\u003e`_, click *Applications* and\ncreate a new application. If you're making a desktop application, use\n``https://localhost:443/`` as the redirect URI. You will also need both the\n*Client ID* and *Secret*.\n\n\nConnect to Beehive\n------------------\nBeehive is the REST API provided by Neato. It mostly allows account related\nqueries. It's main purpose is to access the list of robots with their secrets.\nOAuth2 is used to authenticate with Beehive.\n\nHere's an example of a simple console application to access the list of robots.\n\n.. code-block:: python\n\n   from pybotvac import Beehive\n   from pybotvac._compat import safe_input\n\n\n   # If you've previously obtained a token you can pass it here as a keyword\n   # argument. Then you can skip the fetch_token step\n   beehive = Beehive(\n       client_id=\"0000000000000000000000000000000000000000000000000000000000000000\",\n       client_secret=\"0000000000000000000000000000000000000000000000000000000000000000\",\n       redirect_uri=\"https://localhost:443/\",\n   )\n\n\n   # Generate the URL where the user must go to allow API access to the\n   # application\n   print(\"Goto the following URL\")\n   print()\n   print(\"    {}\".format(beehive.authorization_url()))\n   print()\n\n   # Fetch an OAuth2 token using the redirect URI from the authentication\n   # request\n   redirect_uri = safe_input(\"Response URL: \")\n   token = beehive.fetch_token(authorization_response=redirect_uri)\n   print(\"Token (save this to avoid re-authentication):\")\n   print(token)\n   print()\n\n   # Get a list of robots (includes serial number and secret for Nucleo)\n   print(beehive.get(\"/users/me/robots\").json())\n\n\nConnect to the robot using Nucleo\n---------------------------------\nThe robot has a persistent connection to Nucleo which is a REST API where one\ncan send commands directly to the robot using a serial number and secret\nobtained using Beehive.\n\n.. code-block:: python\n\n   from pybotvac import Nucleo, RobotRemote\n\n\n   # Create a default remote we can use to fetch one with more services enabled\n   default_remote = RobotRemote()\n\n   # Create a Nucleo query object\n   nucleo = Nucleo(\n       serial=\"00000000-000000000000\",\n       secret=\"00000000000000000000000000000000\",\n   )\n\n   # Obtain a list of available services from the current state\n   state = nucleo(remote.get_state())\n\n   # Create a new remote based on the available services\n   remote = RobotRemote(state[\"availableServices\"])\n\n   # Start cleaning\n   nucleo(remote.start_cleaning())\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frunfalk%2Fpybotvac","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frunfalk%2Fpybotvac","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frunfalk%2Fpybotvac/lists"}