Skip to main content

pyElectra

PyPI PyPI - Downloads Python

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)

Source distribution for pyElectra 1.2.6
File Size Uploaded
pyelectra-1.2.6.tar.gz 14.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyElectra 1.2.6
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

1.2.6 This release

2 release files

1.2.5

2 release files

1.2.4

1 release file

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

2 release files

1.1.0

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page