{"id":24029,"library":"meross-iot","title":"Meross IoT Library","description":"A simple Python library to control Meross smart devices, including smart plugs (MSS110, MSS210, MSS310, MSS310H, MSS425E power strip) and other devices with limited functionality. Current version 0.4.10.4, requires Python >=3.8. Released approximately monthly.","status":"active","version":"0.4.10.4","language":"python","source_language":"en","source_url":"https://github.com/albertogeniola/MerossIot","tags":["meross","iot","smart-plug","home-automation","asyncio"],"install":[{"cmd":"pip install meross-iot","lang":"bash","label":"Install meross-iot"}],"dependencies":[],"imports":[{"note":"Old API path changed; use meross_iot.model.device for descriptors.","wrong":"from meross_iot.device import MerossDeviceDescriptor","symbol":"MerossDeviceDescriptor","correct":"from meross_iot.model.device import MerossDeviceDescriptor"},{"note":"Common mistake; client class moved to meross_iot.cloud.client.","wrong":"from meross_iot.client import MerossCloudClient","symbol":"MerossCloudClient","correct":"from meross_iot.cloud.client import MerossCloudClient"}],"quickstart":{"code":"import asyncio\nfrom meross_iot.cloud.client import MerossCloudClient\nfrom meross_iot.model.http import HttpApiConfig\n\nasync def main():\n    email = os.environ.get('MEROSS_EMAIL', '')\n    password = os.environ.get('MEROSS_PASSWORD', '')\n    client = MerossCloudClient(http=HttpApiConfig(email=email, password=password))\n    await client.async_http_init()\n    devices = await client.async_get_device_list()\n    for d in devices:\n        print(d.name, d.uuid)\n    await client.async_http_deinit()\n\nif __name__ == '__main__':\n    asyncio.run(main())","lang":"python","description":"Initialize client, fetch device list."},"warnings":[{"fix":"Wrap all async calls in asyncio.run() or run inside a running event loop.","message":"asyncio event loop must be explicitly managed; calling async methods without running the loop will raise RuntimeError.","severity":"gotcha","affected_versions":"all"},{"fix":"Use MerossCloudClient from meross_iot.cloud.client and HttpApiConfig for credentials.","message":"Major API restructuring between 0.3.x and 0.4.x; many classes and imports changed. Old code using MerossClient from meross_iot.client will break.","severity":"breaking","affected_versions":">=0.4.0"},{"fix":"Always await client.async_http_init() before listing devices or sending commands.","message":"Device control requires calling async_http_init() before any API call; forgetting leads to 'HTTP not initialized' errors.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run pip install meross-iot","cause":"Library not installed or installed under a different name.","error":"ModuleNotFoundError: No module named 'meross_iot'"},{"fix":"Use from meross_iot.cloud.client import MerossCloudClient","cause":"Import path changed in 0.4.x; old import pattern used.","error":"AttributeError: module 'meross_iot' has no attribute 'client'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}