{"id":21438,"library":"home-connect-async","title":"Home Connect Async","description":"Async Python SDK for the BSH Home Connect API, providing access to home appliances like ovens, dishwashers, and washing machines. Current version 0.8.5, active development, monthly releases.","status":"active","version":"0.8.5","language":"python","source_language":"en","source_url":"https://github.com/ekutner/home-connect-async","tags":["async","home-connect","BSH","appliance","SDK"],"install":[{"cmd":"pip install home-connect-async","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Async HTTP client for API calls and SSE","package":"aiohttp","optional":false}],"imports":[{"note":"Correct package name is home_connect_api, not homeconnect","wrong":"from homeconnect import HomeConnectAPI","symbol":"HomeConnectAPI","correct":"from home_connect_api import HomeConnectAPI"}],"quickstart":{"code":"import asyncio\nimport os\nfrom home_connect_api import HomeConnectAPI\n\nasync def main():\n    api = HomeConnectAPI(\n        client_id=os.environ.get('HC_CLIENT_ID', ''),\n        client_secret=os.environ.get('HC_CLIENT_SECRET', '')\n    )\n    appliances = await api.get_appliances()\n    for appliance in appliances:\n        print(f\"Appliance: {appliance.name}\")\n\nif __name__ == \"__main__\":\n    asyncio.run(main())","lang":"python","description":"Initialize the API with OAuth credentials and list appliances."},"warnings":[{"fix":"Replace `appliance.settings` with `await appliance.get_settings()`.","message":"The `settings` property on HomeAppliance may be deprecated; use `get_settings()` method instead.","severity":"deprecated","affected_versions":">=0.7.0"},{"fix":"Ensure you call `api.start_events()` and run the loop with asyncio.run() or similar.","message":"SSE events must be processed in an async loop; failing to start the event loop will cause no events to be received.","severity":"gotcha","affected_versions":"all"},{"fix":"Implement token refresh logic using the `refresh_token` property and `refresh_access_token()` method.","message":"OAuth tokens expire and are not auto-refreshed. You must handle token refresh yourself.","severity":"gotcha","affected_versions":"all"},{"fix":"If you used `api.health_monitor`, instantiate `HealthMonitor(api)` instead.","message":"In version 0.8.0, health monitoring was refactored; `HealthMonitor` now requires explicit instance creation.","severity":"breaking","affected_versions":">=0.8.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use: from home_connect_api import HomeConnectAPI","cause":"Incorrect import path: using 'home_connect_api' as module but not importing class correctly.","error":"AttributeError: module 'home_connect_api' has no attribute 'HomeConnectAPI'"},{"fix":"Ensure methods like get_appliances() are awaited: await api.get_appliances()","cause":"Trying to await the class constructor or non-async method.","error":"TypeError: object HomeConnectAPI can't be used in 'await' expression"},{"fix":"Re-authenticate: provide valid client_id and client_secret, and refresh the token.","cause":"Expired or invalid OAuth token, or missing client credentials.","error":"aiohttp.client_exceptions.ClientResponseError: 401, message='Unauthorized'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}