crownstone-uart
What it is and what it does
Crownstone UART is an official Python library for communicating with Crownstone smart home devices through a USB serial connection. It wraps the crownstone-core library and pyserial to provide an asyncio-based interface for discovering, switching, and monitoring Crownstone smart plugs and relays. The library uses the Crownstone USB adapter as a bridge to communicate with the mesh network of Crownstone devices.
The package is designed for home automation scenarios where you need programmatic control over Crownstone hardware—discovering device IDs, switching outlets on and off, and reading power consumption data. It requires Python 3.7 or higher and relies on platform-specific USB drivers (SiliconLabs on macOS, standard serial access on Linux and Windows). The library is dormant as of 2022, so compatibility with recent Crownstone firmware or Python versions beyond 3.7 is not guaranteed.
Use it for:
- Discover and list all Crownstone devices on your network to obtain their IDs for automation.
- Remotely switch Crownstone smart plugs on and off from a Python application.
- Monitor real-time power consumption data from connected Crownstone devices.
- Build home automation workflows that integrate Crownstone hardware with other Python-based systems.
- Debug or test Crownstone mesh network communication via direct USB serial access.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Python library for controlling Crownstone smart home devices via USB serial connection, requiring a Crownstone USB adapter.
Yes, if you own Crownstone hardware and need direct USB control from Python. The low install friction and absence of known vulnerabilities make it safe to try. However, the dormant maintenance status (last release 2022-11-03) and unclear license metadata are significant concerns—verify license compliance and test compatibility with your specific Crownstone firmware version before committing to production use.
Install
crownstone-uart on PyPI
pip
pip install crownstone-uartuv
uv add crownstone-uartpoetry
poetry add crownstone-uartInstalling crownstone-uart
Before you install
Low install friction with a pure-Python wheel, but the package is dormant—last release was 2022-11-03, over 1380 days ago. No recent maintenance activity despite an active repository.
License in practice
License treatment is unclear; the description excerpt states MIT but the metadata does not confirm it. Verify the actual license before relying on this package in a commercial or restricted context.
Quickstart
pip install crownstone-uart
from crownstone_uart import CrownstoneUart
crownstone = CrownstoneUart(port='/dev/ttyUSB0')
crownstone.start()
Requires a physical Crownstone USB adapter and Python 3.7 or higher. On Linux, user must be in the dialout group (or uucp on Arch) to access the serial port without root. On macOS, requires SiliconLabs USB-to-UART driver.
Verify before relying
- Whether the MIT license claim in the description is authoritative or whether the package is actually unlicensed.
- Whether the library remains compatible with current Crownstone firmware versions and USB adapter hardware.
- Whether the dormant status reflects stable maturity or abandoned development.
Package facts
| License | not declared (unclear) |
| Python support | supports the current Python release (>=3.7) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — crownstone-core, pyserial |
| Maintenance | dormant — 1,380 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 73,630/month — #14,960 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: crownstone_uart-2.7.0-py3-none-any.whl
Tags
More Networking packages
h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
psutilpsutil retrieves real-time information about…
permissive · top 1,000 on PyPI
pyOpenSSLpyOpenSSL wraps OpenSSL's SSL/TLS functionality…
permissive · top 1,000 on PyPI
uvloopuvloop is a drop-in replacement for Python's…
permissive · top 1,000 on PyPI
execnetexecnet lets you spawn and communicate with…
permissive · top 1,000 on PyPI
pyzmqPyZMQ provides Python bindings for ZeroMQ…
permissive · top 1,000 on PyPI
zigpy-xbeeEnables zigpy to communicate with XBee-based…
copyleft · top 15,000 on PyPI
uart-devicesProvides a Python interface to interact with…
permissive · top 15,000 on PyPI
brainstemProvides Python bindings to control and…
unclear · top 15,000 on PyPI
zigpy-zigateProvides a Python 3 driver for ZiGate Zigbee…
copyleft · top 15,000 on PyPI
binho-host-adapterControls Binho Multi-Protocol USB Host Adapters…
permissive · top 15,000 on PyPI
zigpy-znpAdds support for Texas Instruments ZNP Zigbee…
copyleft · top 15,000 on PyPI
meross-iotA Python library for controlling Meross IoT…
permissive · top 15,000 on PyPI
pyftdiPyFtdi provides a pure-Python user-space driver…
permissive · top 15,000 on PyPI
pydevicetreeParses, queries, and modifies Devicetree Source…
permissive · top 15,000 on PyPI
smpclientImplements the transport layer for the Simple…
permissive · top 15,000 on PyPI