Skip to main content

aioayla-lan

Async local control of Ayla Networks IoT modules over Ayla LAN mode: no cloud after a one-time LAN key fetch.

The module is the HTTP client. You register with it, it dials back to your callback address, performs a key exchange, then fetches commands and pushes property values. This library handles the registration heartbeat, the session crypto, the command queue and the callback endpoints, as framework-agnostic handlers you mount on any HTTP server under /local_lan/.

Values are passed through uninterpreted. What a property means is up to the caller.

Behaviour worth knowing

  • Return the status AylaLanServer.handle gives you. It answers 206 Partial Content while commands are queued, which makes the module fetch the next one at once instead of waiting for another notify. A queue of 50 reads drains in about 2 s.
  • Writes are acknowledged. await device.async_set_property(name, value, base_type) returns once the module acks, about a second after it collects the write. It raises WriteRejectedError when no ack comes (modules drop unknown names and out-of-range values silently) and WriteExpiredError when the module does not collect the write within 30 s. set_property queues without waiting.
  • Read back after a write. Modules do not reliably echo what they were sent, nor what a write changed elsewhere.
  • One command per payload. A module may ignore a batched cmds array and re-key.
  • Queue semantics. Writes go before reads. A newer write to a queued name replaces it, and a repeated read is asked once.
  • Session. Heartbeat every 10 s, a third of the module's keep_alive. One failed heartbeat does not drop the session; 30 s without contact does. A module that accepts notifies but stops dialling back for 30 s is registered afresh, which makes it key-exchange again.
  • One LAN client at a time, and no cloud client writing refresh. A cloud-side refresh makes some modules push their whole catalogue for minutes, during which they collect no commands.
  • Expect malformed requests on the callback port. Some firmware leaks its cloud echo onto the LAN socket; the server rejecting it loses the ack of the write before it, though the write was applied.

Status: pre-alpha, tested against Fujitsu General (FGLair) air conditioners only.

Release files for aioayla-lan 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aioayla-lan 0.1.0
File Size Uploaded
aioayla_lan-0.1.0.tar.gz 30.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aioayla-lan 0.1.0
File Interpreter ABI Platform
aioayla_lan-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 50.4 kB

Release files / aioayla_lan-0.1.0.tar.gz

Download URL aioayla_lan-0.1.0.tar.gz
Size 30.8 kB
Tags Source
SHA-256 checksum
How to use checksums
36a5d32b0634a508b72f02bb3226099c825a10d6aa411fa286a39b7965386778
BLAKE2b-256 checksum
How to use checksums
1f9cbe325d44be8ad39a2310afbc6d8e369581fa622922b0a83af843adc0b6ad
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 Sep 26, 2026.

Transparency log

Release files / aioayla_lan-0.1.0-py3-none-any.whl

Download URL aioayla_lan-0.1.0-py3-none-any.whl
Size 19.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0613b4930762eaa84dbda308684407eda595b7fe2c2e4bb9eebd0e9e59473674
BLAKE2b-256 checksum
How to use checksums
c25996e0fff17bea0b6fbacbeac5e03faab2a1e6af0e53dc2caaa5603031e617
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 Sep 26, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

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