aircloudy


Nameaircloudy JSON
Version 0.1.11 PyPI version JSON
download
home_pagehttps://github.com/ylemoigne/aircloudy
SummaryA library to pilot hitachi aircloud AC
upload_time2024-12-06 08:35:37
maintainerNone
docs_urlNone
authorYann Le Moigne
requires_python<4.0,>=3.11
licenseNone
keywords aircloud spx-wfg
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # aircloudy

[![PyPI - Version](https://img.shields.io/pypi/v/aircloudy.svg)](https://pypi.org/project/aircloudy)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/aircloudy.svg)](https://pypi.org/project/aircloudy)

Aircloudy is an unofficial python library that allow management of RAC (Room Air Conditioner) compatible with Hitachi Air Cloud.

This project IS NOT endorsed by Hitachi and is distributed as-is without warranty.

-----

**Table of Contents**

- [Installation](#installation)
- [Usage](#usage)
- [License](#license)
- [Development](#development)

## Installation

```console
pip install aircloudy
```

## Usage

```python
from __future__ import annotations
import asyncio
from aircloudy import HitachiAirCloud, InteriorUnit, compute_interior_unit_diff_description


def print_changes(dict: dict[int, tuple[InteriorUnit|None, InteriorUnit|None]]) -> None:
    for (id, change) in dict.items():
        print(f"Change on interior unit {id}: "+compute_interior_unit_diff_description(change[0], change[1]))

async def main() -> None:
    async with HitachiAirCloud("your@email.com", "top_secret") as ac:
        ac.on_change = print_changes

        unit_bureau = next((iu for iu in ac.interior_units if iu.name == "Bureau"), None)
        if unit_bureau is None:
            raise Exception("No unit named `Bureau`")

        await ac.set(unit_bureau.id, "ON")
        await ac.set(unit_bureau.id, requested_temperature=21, fan_speed="LV3")

        await asyncio.sleep(30)


asyncio.run(main())
```

## License

`aircloudy` is distributed under modified HL3 license. See `LICENSE.txt`.

## Development

```shell
poetry run task lint
```

```shell
poetry run task check
```

```shell
poetry run task test
```

```shell
poetry run task coverage
```

```shell
poetry --build publish
```

## Notes

Not read/used field from notification :
```
iduFrostWashStatus: IduFrostWashStatus
        active: bool
        priority: int
        astUpdatedA: int
        subCategory = None
        errorCode = None
specialOperationStatus: SpecialOperationStatus
        active: bool
        priority: int
        lastUpdatedAt: int
        subCategory = None
        errorCode = None
errorStatus: ErrorStatus
        active: bool
        priority: int
        lastUpdatedAt: int
        subCategory: str
        errorCode = None
cloudId: str
opt4: int
holidayModeStatus: HolidayModeStatus
        active: bool
        priority: int
        lastUpdatedAt: int
        subCategory = None
        errorCode = None
SysType: int
```

Not read/used field from API:
```
userId: str
iduFrostWash: bool
specialOperation: bool
criticalError: bool
zoneId: str
```
            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/ylemoigne/aircloudy",
    "name": "aircloudy",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": null,
    "keywords": "aircloud, SPX-WFG",
    "author": "Yann Le Moigne",
    "author_email": "ylemoigne@javatic.fr",
    "download_url": "https://files.pythonhosted.org/packages/bc/9d/7ee73d8b20d2882e47bce29ed469e346ddf14079914a5b93ae06bbe114af/aircloudy-0.1.11.tar.gz",
    "platform": null,
    "description": "# aircloudy\n\n[![PyPI - Version](https://img.shields.io/pypi/v/aircloudy.svg)](https://pypi.org/project/aircloudy)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/aircloudy.svg)](https://pypi.org/project/aircloudy)\n\nAircloudy is an unofficial python library that allow management of RAC (Room Air Conditioner) compatible with Hitachi Air Cloud.\n\nThis project IS NOT endorsed by Hitachi and is distributed as-is without warranty.\n\n-----\n\n**Table of Contents**\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [License](#license)\n- [Development](#development)\n\n## Installation\n\n```console\npip install aircloudy\n```\n\n## Usage\n\n```python\nfrom __future__ import annotations\nimport asyncio\nfrom aircloudy import HitachiAirCloud, InteriorUnit, compute_interior_unit_diff_description\n\n\ndef print_changes(dict: dict[int, tuple[InteriorUnit|None, InteriorUnit|None]]) -> None:\n    for (id, change) in dict.items():\n        print(f\"Change on interior unit {id}: \"+compute_interior_unit_diff_description(change[0], change[1]))\n\nasync def main() -> None:\n    async with HitachiAirCloud(\"your@email.com\", \"top_secret\") as ac:\n        ac.on_change = print_changes\n\n        unit_bureau = next((iu for iu in ac.interior_units if iu.name == \"Bureau\"), None)\n        if unit_bureau is None:\n            raise Exception(\"No unit named `Bureau`\")\n\n        await ac.set(unit_bureau.id, \"ON\")\n        await ac.set(unit_bureau.id, requested_temperature=21, fan_speed=\"LV3\")\n\n        await asyncio.sleep(30)\n\n\nasyncio.run(main())\n```\n\n## License\n\n`aircloudy` is distributed under modified HL3 license. See `LICENSE.txt`.\n\n## Development\n\n```shell\npoetry run task lint\n```\n\n```shell\npoetry run task check\n```\n\n```shell\npoetry run task test\n```\n\n```shell\npoetry run task coverage\n```\n\n```shell\npoetry --build publish\n```\n\n## Notes\n\nNot read/used field from notification :\n```\niduFrostWashStatus: IduFrostWashStatus\n        active: bool\n        priority: int\n        astUpdatedA: int\n        subCategory = None\n        errorCode = None\nspecialOperationStatus: SpecialOperationStatus\n        active: bool\n        priority: int\n        lastUpdatedAt: int\n        subCategory = None\n        errorCode = None\nerrorStatus: ErrorStatus\n        active: bool\n        priority: int\n        lastUpdatedAt: int\n        subCategory: str\n        errorCode = None\ncloudId: str\nopt4: int\nholidayModeStatus: HolidayModeStatus\n        active: bool\n        priority: int\n        lastUpdatedAt: int\n        subCategory = None\n        errorCode = None\nSysType: int\n```\n\nNot read/used field from API:\n```\nuserId: str\niduFrostWash: bool\nspecialOperation: bool\ncriticalError: bool\nzoneId: str\n```",
    "bugtrack_url": null,
    "license": null,
    "summary": "A library to pilot hitachi aircloud AC",
    "version": "0.1.11",
    "project_urls": {
        "Homepage": "https://github.com/ylemoigne/aircloudy",
        "Repository": "https://github.com/ylemoigne/aircloudy"
    },
    "split_keywords": [
        "aircloud",
        " spx-wfg"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f860b815a647db0cd9042fa02870662379fa6d52d6b8cab19fe016fbe2939827",
                "md5": "d9d491264fc9db4a0e4c75dbb4fd4881",
                "sha256": "daf6b90d7724ad38a1ef67a1d80ef190f237a98402bb4580c7bf049ed5d360e1"
            },
            "downloads": -1,
            "filename": "aircloudy-0.1.11-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d9d491264fc9db4a0e4c75dbb4fd4881",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 30659,
            "upload_time": "2024-12-06T08:35:35",
            "upload_time_iso_8601": "2024-12-06T08:35:35.928960Z",
            "url": "https://files.pythonhosted.org/packages/f8/60/b815a647db0cd9042fa02870662379fa6d52d6b8cab19fe016fbe2939827/aircloudy-0.1.11-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bc9d7ee73d8b20d2882e47bce29ed469e346ddf14079914a5b93ae06bbe114af",
                "md5": "250ec23df02a2be7fdbe4d43944825f3",
                "sha256": "c00e7014ce09f4f13cf7f3d0937080366d25b74dc49ba98cae530d80c825f11a"
            },
            "downloads": -1,
            "filename": "aircloudy-0.1.11.tar.gz",
            "has_sig": false,
            "md5_digest": "250ec23df02a2be7fdbe4d43944825f3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 55594,
            "upload_time": "2024-12-06T08:35:37",
            "upload_time_iso_8601": "2024-12-06T08:35:37.062055Z",
            "url": "https://files.pythonhosted.org/packages/bc/9d/7ee73d8b20d2882e47bce29ed469e346ddf14079914a5b93ae06bbe114af/aircloudy-0.1.11.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-06 08:35:37",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ylemoigne",
    "github_project": "aircloudy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "aircloudy"
}
        
Elapsed time: 0.37321s