{"id":27288,"library":"pymammotion","title":"PyMammotion","description":"A Python library for controlling Mammotion robotic lawn mowers (Luba, Yuka) over local network. Version 0.7.87 requires Python >=3.14. Provides async device discovery, message parsing, and command sending. Development is active, but the API is still evolving.","status":"active","version":"0.7.87","language":"python","source_language":"en","source_url":"https://github.com/mammotion-oss/pymammotion","tags":["mammotion","robotic-mower","luba","yuka","iot","async"],"install":[{"cmd":"pip install pymammotion","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Binary protocol parsing","package":"construct","optional":false},{"reason":"Async HTTP communication","package":"aiohttp","optional":false},{"reason":"Encryption/decryption of device commands","package":"cryptography","optional":false}],"imports":[{"wrong":"from pymammotion.discovery import MammotionDiscovery","symbol":"MammotionDiscovery","correct":"from pymammotion import MammotionDiscovery"}],"quickstart":{"code":"import asyncio\nfrom pymammotion.discovery import MammotionDiscovery\n\nasync def main():\n    discovery = MammotionDiscovery()\n    devices = await discovery.discover()\n    for device in devices:\n        print(f\"Found: {device.name}\")\n\nasyncio.run(main())","lang":"python","description":"Discover Mammotion devices on the local network."},"warnings":[{"fix":"Update imports to use the new submodules: from pymammotion.discovery import MammotionDiscovery, etc.","message":"Before version 0.7.0, the main class was `Mammotion` directly from `pymammotion`. It has been replaced by separate `MammotionDiscovery`, `MammotionDevice`, etc. Old code importing `from pymammotion import Mammotion` will break.","severity":"breaking","affected_versions":"<0.7.0"},{"fix":"Replace `from pymammotion.mower import ...` with `from pymammotion.device import ...`.","message":"The `mower` module is deprecated in favor of `device`. Using `from pymammotion.mower import ...` will still work but prints a deprecation warning.","severity":"deprecated","affected_versions":">=0.6.0 <0.8.0"},{"fix":"Run discovery on the same LAN. Use static IP configuration if cross-subnet is needed.","message":"Discovery uses UDP broadcast and may not work across subnets or VPNs. Ensure your device is on the same network segment.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'0.7.87':17 '3.14':20 'activ':32 'api':35 'async':22,46 'command':28 'control':6 'develop':30 'devic':23 'discoveri':24 'evolv':38 'iot':45 'lawn':9 'librari':4 'local':14 'luba':11,43 'mammot':7,39 'messag':25 'mower':10,42 'network':15 'pars':26 'provid':21 'pymammot':1 'python':3,19 'requir':18 'robot':8,41 'robotic-mow':40 'send':29 'still':37 'version':16 'yuka':12,44","created_at":"2026-05-01T17:45:29.316042+00:00","updated_at":"2026-05-01T17:45:29.316042+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\n  File \"/tmp/tmpzoxw6xvq/venv/lib/python3.12/site-packages/pymammotion/__init__.py\", line 14, in <module>\n    from pymammotion.bluetooth.ble import MammotionBLE\n  File \"/tmp/tmpzoxw6xvq/venv/lib/python3.12/site-packages/pymamm"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":null,"github":null,"docs":null,"changelog":null,"pypi":"https://pypi.org/project/pymammotion/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["communication"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}