--- id: pyswitchbot version: "2.4.1" license: MIT license_treatment: permissive maintenance: active --- # PySwitchbot — A library to communicate with Switchbot License: permissive · Maintenance: active · Downloads: 85.3K/mo ## What it is and what it does pySwitchbot is an async Python library for discovering and controlling Switchbot IoT devices via Bluetooth Low Energy. It handles device discovery, authentication (including encrypted communication for locks), and command execution for devices like smart locks and motorized curtains. The library wraps aiohttp, bleak, bleak-retry-connector, cryptography, and pyOpenSSL in an async-first API suitable for home automation integrations. The package is in alpha status but actively maintained, with recent releases and steady development. It requires Python 3.11+ and supports Python 3.12, 3.13, and 3.14. Lock control requires retrieving encryption keys from the Switchbot account API (a one-time setup step), while other devices typically work with simpler discovery and command patterns. Use it for: - Automate smart lock unlock/lock operations in a home automation system by retrieving encryption keys once and reusing them. - Discover and control motorized curtains programmatically based on time, sensors, or user input. - Build a multi-device Switchbot controller that discovers all nearby devices and exposes them to a home automation platform. - Integrate Switchbot devices into an async Python application without blocking on BLE communication. - Retrieve device status and data from Switchbot devices on demand. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Async Python library to discover and control Switchbot IoT devices over Bluetooth Low Energy. Yes, if you own Switchbot devices and want to control them from Python. The library is actively maintained, has low install friction, and uses standard async patterns. It is in alpha status, so expect occasional API changes; check the repository for any breaking changes before upgrading. No known security vulnerabilities as of the latest scan. ## Install pip install pyswitchbot uv add pyswitchbot poetry add pyswitchbot ## Installing PySwitchbot Before you install: Low friction install with a pure-Python wheel. Active maintenance with a recent release (7 days old) and steady commit history. Depends on aiohttp, bleak, bleak-retry-connector, cryptography, and pyOpenSSL—all standard async and security libraries. License in practice: MIT license is permissive; you can use, modify, and distribute this package with minimal restrictions, including in commercial projects. Quickstart: pip install pyswitchbot import asyncio from pyswitchbot.discovery import GetSwitchbotDevices async def main(): devices = await GetSwitchbotDevices().discover() print(devices) asyncio.run(main()) Requires Python 3.11 or later; Bluetooth hardware and Switchbot devices in range required to discover and control. Verify before relying: - Whether all Switchbot device types beyond locks and curtains are supported. - Whether the library works on all operating systems or has platform-specific limitations. - Performance and reliability characteristics when controlling multiple devices concurrently. ## Package facts - License: MIT (permissive) - Python support: supports_current - Install friction: low - Maintenance: active - Downloads: 85.3K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags switchbot ble control library, smart lock automation python, iot device discovery bluetooth, home automation switchbot, async ble device control, switchbot lock unlock api, home-automation, ble-bluetooth, async-io [View on SkillFed](https://skillfed.io/packages/pyswitchbot) · [View on PyPI](https://pypi.org/project/pyswitchbot/)