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.handlegives 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 raisesWriteRejectedErrorwhen no ack comes (modules drop unknown names and out-of-range values silently) andWriteExpiredErrorwhen the module does not collect the write within 30 s.set_propertyqueues 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
cmdsarray 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-siderefreshmakes 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)
| File | Size | Uploaded | |
|---|---|---|---|
| aioayla_lan-0.1.0.tar.gz | 30.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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