# aircloudy
[](https://pypi.org/project/aircloudy)
[](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[](https://pypi.org/project/aircloudy)\n[](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"
}