elmax-api


Nameelmax-api JSON
Version 0.0.5 PyPI version JSON
download
home_pagehttps://github.com/albertogeniola/elmax-api
SummaryAsynchronous API Library to work with Elmax devices
upload_time2023-10-08 17:24:31
maintainer
docs_urlNone
authorAlberto Geniola
requires_python>=3.7
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Python Elmax API client

![Elmax Logo](docs/elmax-logo.png?raw=true "Elmax Logo")

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

![Release Build Status](https://github.com/albertogeniola/elmax-api/workflows/Release/badge.svg?branch=main)
![Testing Status](https://github.com/albertogeniola/elmax-api/workflows/Testing/badge.svg?branch=main)
![Documentation](https://github.com/albertogeniola/elmax-api/workflows/Publish%20Documentation/badge.svg?branch=main)

## Installation

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

```bash
$ pip3 install elmax-api --user
```

or, to install it globally, use the following command

```bash
$ pip3 install elmax-api
```

## Usage

```python
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](https://albertogeniola.github.io/elmax-api/).

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/albertogeniola/elmax-api",
    "name": "elmax-api",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "",
    "author": "Alberto Geniola",
    "author_email": "albertogeniola@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/a1/4e/8c357213cf83a0deaa52afec73c463165566e1c47fd442b29d0820aacf12/elmax_api-0.0.5.tar.gz",
    "platform": null,
    "description": "# Python Elmax API client\n\n![Elmax Logo](docs/elmax-logo.png?raw=true \"Elmax Logo\")\n\nAsynchronous Python API client for interacting with the Elmax Cloud services, via HTTP apis.\n\n![Release Build Status](https://github.com/albertogeniola/elmax-api/workflows/Release/badge.svg?branch=main)\n![Testing Status](https://github.com/albertogeniola/elmax-api/workflows/Testing/badge.svg?branch=main)\n![Documentation](https://github.com/albertogeniola/elmax-api/workflows/Publish%20Documentation/badge.svg?branch=main)\n\n## Installation\n\nUse the package manager pip to install Python Elmax API client:\n\n```bash\n$ pip3 install elmax-api --user\n```\n\nor, to install it globally, use the following command\n\n```bash\n$ pip3 install elmax-api\n```\n\n## Usage\n\n```python\nimport asyncio\n\nfrom elmax_api.http import Elmax\nfrom elmax_api.model.command import SwitchCommand\n\nMY_USERNAME = 'TYPE_HERE_YOUR_ELMAX_EMAIL'\nMY_PASSWORD = 'TYPE_HERE_YOUR_ELMAX_PASSWORD'\n\n\nasync def main():\n    # Instantiate the Elmax API client\n    client = Elmax(username=MY_USERNAME, password=MY_PASSWORD)\n\n    # List panels for your user\n    panels = await client.list_control_panels()\n    print(f\"Found {len(panels)} panels for user {client.get_authenticated_username()}\")\n\n    # Get online panels only\n    online_panels = []\n    for p in panels:\n        status = 'ONLINE' if p.online else 'OFFLINE'\n        print(f\"+ {p.hash}: {status}\")\n        if p.online:\n            online_panels.append(p)\n\n    if len(online_panels) == 0:\n        print(\"Sorry, no panel to work with. Exiting.\")\n        exit(0)\n\n    # Fetch status of first panel\n    p = online_panels[0]\n    panel_status = await client.get_panel_status(control_panel_id=p.hash)\n\n    # Print some zone status\n    for z in panel_status.zones:\n        print(f\"Zone '{z.name}' open: {z.opened}\")\n\n    # Toggle some actuator\n    actuator = panel_status.actuators[0]\n    old_status = actuator.opened\n    print(f\"Actuator {actuator.name} was {'ON' if old_status else 'OFF'}\")\n    print(f\"Switching {'OFF' if old_status else 'ON'} actuator {actuator.name}\")\n    await client.execute_command(endpoint_id=actuator.endpoint_id, command=SwitchCommand.TURN_ON if not old_status else SwitchCommand.TURN_OFF)\n\n    print(\"Waiting a bit...\")\n    await asyncio.sleep(5)\n\n    print(\"Reverting back original actuator status\")\n    await client.execute_command(endpoint_id=actuator.endpoint_id,\n                                 command=SwitchCommand.TURN_ON if old_status else SwitchCommand.TURN_OFF)\n    print(\"Done!\")\n\nif __name__ == '__main__':\n    asyncio.run(main())\n```\n\n## Documentation\nFull API documentation is available on GitHub pages, [here](https://albertogeniola.github.io/elmax-api/).\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Asynchronous API Library to work with Elmax devices",
    "version": "0.0.5",
    "project_urls": {
        "Documentation": "https://github.com/albertogeniola/elmax-api",
        "Homepage": "https://github.com/albertogeniola/elmax-api",
        "Source": "https://github.com/albertogeniola/elmax-api",
        "Tracker": "https://github.com/albertogeniola/elmax-api"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bed1eb59d0d1b8c9d08ec82c6b2b8562081ace2c472ad603ce1c83dc578cfa52",
                "md5": "0a476747a751800cd8f792169f7af64c",
                "sha256": "40ed5a900c0a1a1da842e586d0b57240e163d442794e276eda4bc5e2e785a3d9"
            },
            "downloads": -1,
            "filename": "elmax_api-0.0.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0a476747a751800cd8f792169f7af64c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 18658,
            "upload_time": "2023-10-08T17:24:29",
            "upload_time_iso_8601": "2023-10-08T17:24:29.864501Z",
            "url": "https://files.pythonhosted.org/packages/be/d1/eb59d0d1b8c9d08ec82c6b2b8562081ace2c472ad603ce1c83dc578cfa52/elmax_api-0.0.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a14e8c357213cf83a0deaa52afec73c463165566e1c47fd442b29d0820aacf12",
                "md5": "a0374ca5302eabe00825a47ec52f9ceb",
                "sha256": "1934c60ba85f5b3aabc71eb6a0dae540b285afa1b8c441d58211cd7b13c1f09f"
            },
            "downloads": -1,
            "filename": "elmax_api-0.0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "a0374ca5302eabe00825a47ec52f9ceb",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 17853,
            "upload_time": "2023-10-08T17:24:31",
            "upload_time_iso_8601": "2023-10-08T17:24:31.742038Z",
            "url": "https://files.pythonhosted.org/packages/a1/4e/8c357213cf83a0deaa52afec73c463165566e1c47fd442b29d0820aacf12/elmax_api-0.0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-08 17:24:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "albertogeniola",
    "github_project": "elmax-api",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "elmax-api"
}
        
Elapsed time: 0.12206s