Skip to main content

Python Elmax API client

Elmax Logo

Asynchronous Python API client for interacting with the Elmax Cloud services, via HTTP apis.

Release Build Status Testing Status Documentation

Installation

Use the package manager pip to install Python Elmax API client:

$ pip3 install elmax-api --user

or, to install it globally, use the following command

$ pip3 install elmax-api

Usage

import asyncio

from elmax_api.http import Elmax
from elmax_api.model.command import SwitchCommand

MY_USERNAME = 'TYPE_HERE_YOUR_ELMAX_EMAIL'
MY_PASSWORD = 'TYPE_HERE_YOUR_ELMAX_PASSWORD'


async def main():
    # Instantiate the Elmax API client
    client = Elmax(username=MY_USERNAME, password=MY_PASSWORD)

    # List panels for your user
    panels = await client.list_control_panels()
    print(f"Found {len(panels)} panels for user {client.get_authenticated_username()}")

    # Get online panels only
    online_panels = []
    for p in panels:
        status = 'ONLINE' if p.online else 'OFFLINE'
        print(f"+ {p.hash}: {status}")
        if p.online:
            online_panels.append(p)

    if len(online_panels) == 0:
        print("Sorry, no panel to work with. Exiting.")
        exit(0)

    # Fetch status of first panel
    p = online_panels[0]
    panel_status = await client.get_panel_status(control_panel_id=p.hash)

    # Print some zone status
    for z in panel_status.zones:
        print(f"Zone '{z.name}' open: {z.opened}")

    # Toggle some actuator
    actuator = panel_status.actuators[0]
    old_status = actuator.opened
    print(f"Actuator {actuator.name} was {'ON' if old_status else 'OFF'}")
    print(f"Switching {'OFF' if old_status else 'ON'} actuator {actuator.name}")
    await client.execute_command(endpoint_id=actuator.endpoint_id, command=SwitchCommand.TURN_ON if not old_status else SwitchCommand.TURN_OFF)

    print("Waiting a bit...")
    await asyncio.sleep(5)

    print("Reverting back original actuator status")
    await client.execute_command(endpoint_id=actuator.endpoint_id,
                                 command=SwitchCommand.TURN_ON if old_status else SwitchCommand.TURN_OFF)
    print("Done!")

if __name__ == '__main__':
    asyncio.run(main())

Documentation

Full API documentation is available on GitHub pages, here.

Release files for elmax-api 0.0.6.3

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

Source distribution (sdist)

Source distribution for elmax-api 0.0.6.3
File Size Uploaded
elmax_api-0.0.6.3.tar.gz 18.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for elmax-api 0.0.6.3
File Interpreter ABI Platform
elmax_api-0.0.6.3-py3-none-any.whl Python 3 none any Details

Total release size: 38.4 kB

Release files / elmax_api-0.0.6.3.tar.gz

Download URL elmax_api-0.0.6.3.tar.gz
Size 18.7 kB
Tags Source
SHA-256 checksum
How to use checksums
6260b75df232b34cbbbf7ff45448df81173c952178a7574b719a6f259255379a
BLAKE2b-256 checksum
How to use checksums
8299bdb46020d1454cd2afd99ebb60358178f2a9df88d5bcbbdb3b0ba96453c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release files / elmax_api-0.0.6.3-py3-none-any.whl

Download URL elmax_api-0.0.6.3-py3-none-any.whl
Size 19.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ffd52ac0f159e9734a5fcf4d2dd63f0aa9ec7703b163f78ab06611d18708c4bc
BLAKE2b-256 checksum
How to use checksums
b7252de284d03582071b36bf3da30b2e7fc23d4ff8706d5a79ffe49224a4ae14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20
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