{"id":24484,"library":"pyworxcloud","title":"pyworxcloud","description":"Python library for interacting with the Positec/Landroid cloud API. Provides asynchronous control of Landroid robotic lawn mowers. Current version 6.3.6, supports Python 3.9+ with <4.0.","status":"active","version":"6.3.6","language":"python","source_language":"en","source_url":"https://github.com/mt-ai/pyworxcloud","tags":["landroid","mower","async","cloud"],"install":[{"cmd":"pip install pyworxcloud","lang":"bash","label":"pip"}],"dependencies":[],"imports":[{"symbol":"WorxCloud","correct":"from pyworxcloud import WorxCloud"},{"symbol":"const","correct":"from pyworxcloud import const"}],"quickstart":{"code":"import asyncio\nimport os\nfrom pyworxcloud import WorxCloud\n\nasync def main():\n    email = os.environ.get('EMAIL', '')\n    password = os.environ.get('PASSWORD', '')\n    async with WorxCloud(email, password) as cloud:\n        # List all mowers\n        for product in cloud.products:\n            print(f\"Mower: {product.name}, serial: {product.serial_number}\")\n\nasyncio.run(main())","lang":"python","description":"Initializes WorxCloud and lists mowers."},"warnings":[{"fix":"Use 'async with WorxCloud(...) as cloud' instead of WorxCloud(...) without async.","message":"WorxCloud is now an async context manager (async with). You must use async/await; synchronous usage is removed.","severity":"breaking","affected_versions":">=6.0.0"},{"fix":"WorxCloud(email, password, region='EU'). Common regions: 'EU', 'US', 'CN'.","message":"Region selection is automatic but may delay login. If you know your region, set it explicitly to avoid extra API calls.","severity":"gotcha","affected_versions":"all"},{"fix":"Use cloud.products instead of cloud.mowers.","message":"The 'mowers' attribute was renamed to 'products' to support non-mower devices (e.g., vacuums).","severity":"deprecated","affected_versions":">=6.0.0"}],"env_vars":null,"search_vec":"'3.9':24 '4.0':26 '6.3.6':21 'api':10 'async':29 'asynchron':12 'cloud':9,30 'control':13 'current':19 'interact':5 'landroid':15,27 'lawn':17 'librari':3 'mower':18,28 'positec/landroid':8 'provid':11 'python':2,23 'pyworxcloud':1 'robot':16 'support':22 'version':20","created_at":"2026-05-01T08:13:19.921796+00:00","updated_at":"2026-05-01T08:13:19.921796+00:00","problems":[{"fix":"Use 'await main()' if already in an event loop, or nest with 'asyncio.get_event_loop().run_until_complete(main())'.","cause":"Running asyncio.run() inside an event loop (e.g., in Jupyter or IPython).","error":"RuntimeError: asyncio.run() cannot be called from a running event loop"},{"fix":"Replace cloud.mowers with cloud.products.","cause":"Upgrading to v6.x where 'mowers' was renamed to 'products'.","error":"AttributeError: 'WorxCloud' object has no attribute 'mowers'"},{"fix":"URL-encode password or switch region: WorxCloud(email, password, region='EU'). Also ensure you use the exact email for the Positec account.","cause":"Password uses special characters incorrectly encoded, or region mismatch.","error":"Invalid credentials: HTTP 403"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"6.4.1","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/mtrab/pyworxcloud","docs":"https://github.com/mtrab/pyworxcloud","changelog":null,"pypi":"https://pypi.org/project/pyworxcloud/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["http-networking","aws"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-29","last_verified":"2026-06-29","next_check":"2026-07-29","install_tag":null}}