pyElectra
Python library to control Electra Smart air conditioners.
It is the client library behind the electrasmart
Home Assistant integration.
Install
pip install pyElectra
Requires Python 3.11 or newer.
Usage
import asyncio
import aiohttp
from electrasmart.api import ElectraAPI, ElectraApiError
from electrasmart.api.utils import generate_imei
from electrasmart.device.const import OperationMode
async def main() -> None:
session = aiohttp.ClientSession(
connector=aiohttp.TCPConnector(ssl=False),
timeout=aiohttp.ClientTimeout(total=10),
)
# 1. Register your phone number. The IMEI identifies this "device" to
# Electra, so generate it once and store it.
api = ElectraAPI(session)
imei = generate_imei()
await api.generate_new_token(phone_number="0521234567", imei=imei)
# 2. Confirm the OTP that was sent by SMS.
resp = await api.validate_one_time_password(
otp="123456", imei=imei, phone_number="0521234567"
)
token = resp["data"]["token"]
# 3. Connect with the token and enumerate devices. The token is long-lived,
# so steps 1-2 only need to happen once.
api = ElectraAPI(session, imei=imei, token=token)
await api.fetch_devices()
for ac in api.devices:
print(ac.name, ac.get_temperature(), ac.get_sensor_temperature())
ac.turn_on()
ac.set_mode(OperationMode.MODE_COOL)
ac.set_temperature(22)
ac.set_fan_speed(OperationMode.FAN_SPEED_HIGH)
await api.set_state(ac) # push the new state to the A/C
asyncio.run(main())
Network failures and API-level errors raise ElectraApiError.
Changelog
See CHANGELOG.md. Notable in 1.2.5:
- The
KeyError: 'deviceToken'setup crash on device records that omit that field. - Current temperature reported as the raw ×256 left-shifted telemetry value (5,632 °C instead of 22 °C).
Development
pip install -e . pytest ruff mypy
pytest # tests
ruff format --check . # formatting
ruff check . # lint
mypy --config-file mypy.ini src/electrasmart
CI runs lint, type checks and the test suite on Python 3.11, 3.12 and 3.13.
License
Apache-2.0
Metadata
Release files for pyElectra 1.2.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyelectra-1.2.6.tar.gz | 14.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyelectra-1.2.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.0 kB
Release files / pyelectra-1.2.6.tar.gz
| Download URL | pyelectra-1.2.6.tar.gz |
|---|---|
| Size | 14.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
65ef049ae8d2ac37f8d6400be6010ab36a91cddc246bb9be386c7cc848ea7474
|
|
BLAKE2b-256 checksum How to use checksums |
eee3d0d765279e17e76e805008bfb947f039e4f8c7adbf666babd2f6baed1350
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logRelease files / pyelectra-1.2.6-py3-none-any.whl
| Download URL | pyelectra-1.2.6-py3-none-any.whl |
|---|---|
| Size | 12.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
538de73cdca3f20a8cafa01504b8de0749c9c8c63ea8e95c6a8fd6f25e025f92
|
|
BLAKE2b-256 checksum How to use checksums |
06e2eb1c4c5480bec302ac83e716c33d346b1790269da6dee3c67dee561772f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency log