Python wrapper for controlling devices managed by HomeCom Easy APP.
Project description
homecom-alt
Python wrapper for controlling devices managed by HomeCom Easy APP.
How to use package
or
"""An example of using HomeCom alt package."""
import asyncio
import logging
from aiohttp import ClientConnectorError, ClientError, ClientSession
from homecom_alt import (
ApiError,
AuthFailedError,
ConnectionOptions,
InvalidSensorDataError,
HomeComAlt,
BHCDevice,
)
logging.basicConfig(level=logging.DEBUG)
USERNAME = "user"
PASSWORD = "password"
def print_status(data: BHCDevice):
print("firmware: {data.firmware}")
print("notifications: {data.notifications}")
for ref in data.stardard_functions:
normalized_id = ref["id"].split("/", 2)[-1]
match normalized_id:
case "operationMode":
print(f"operationMode current_value: {ref["value"]}, allowed_values: {ref["allowedValues"]}")
case "acControl":
print(f"acControl current_value: {ref["value"]}, allowed_values: {ref["allowedValues"]}")
case "fanSpeed":
print(f"fanSpeed current_value: {ref["value"]}, allowed_values: {ref["allowedValues"]}")
case "airFlowHorizontal":
print(f"airFlowHorizontal current_value: {ref["value"]}, allowed_values: {ref["allowedValues"]}")
case "airFlowVertical":
print(f"airFlowVertical current_value: {ref["value"]}, allowed_values: {ref["allowedValues"]}")
case "temperatureSetpoint":
print(f"temperatureSetpoint current_value: {ref["value"]}{ref["unitOfMeasure"]}")
print(f"temperatureSetpoint min_value: {ref["minValue"]} max_value: {ref["maxValue"]}")
case "roomTemperature":
print(f"roomTemperature current_value: {ref["value"]}{ref["unitOfMeasure"]}")
case _:
pass
for ref in data.advanced_functions:
normalized_id = ref["id"].split("/", 2)[-1]
match normalized_id:
case "airPurificationMode":
print(f"plasmacluster current_value: {ref["value"]}")
case "fullPowerMode":
print(f"boost current_value: {ref["value"]}")
case "ecoMode":
print(f"eco mode current_value: {ref["value"]}")
case "timers/on":
print(f"timer turn on current_value: {ref["value"]} {ref["unitOfMeasure"]}")
print(f"timer turn on min_value: {ref["minValue"]} max_value: {ref["maxValue"]}")
case "timers/off":
print(f"timer turn off current_value: {ref["value"]} {ref["unitOfMeasure"]}")
print(f"timer turn off min_value: {ref["minValue"]} max_value: {ref["maxValue"]}")
case _:
pass
for ref in data.switch_programs:
normalized_id = ref["id"].split("/", 2)[-1]
match normalized_id:
case "switchPrograms/enabled":
print(f"programs current_value: {ref["value"]}")
case "switchPrograms/activeProgram":
print(f"program current_value: {ref["value"]}, allowed_values: {ref["allowedValues"]}")
case _:
pass
async def main():
"""Run main function."""
options = ConnectionOptions(username=USERNAME, password=PASSWORD)
async with ClientSession() as websession:
bhc = await HomeComAlt.create(websession, options)
try:
data: dict[str, BHCDevice] = {}
device_ids: list[str] = []
# get devices synced with homecom easy
devices = await bhc.async_get_devices()
# get status for each device discovered
for device in await devices:
print(f"Device={device["deviceId"]}, type={device["deviceType"]}")
device_ids.append(device["deviceId"])
while True:
device_id = input(f"Enter the device you want to control: {', '.join(device_ids)}")
if device_id not in device_ids:
print("device_id not in the list of devices")
continue
data: BHCDevice = await bhc.async_update(device_id)
print_status(data)
break
loop = asyncio.new_event_loop()
loop.run_until_complete(main())
loop.close()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
homecom_alt-1.5.10.tar.gz
(32.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file homecom_alt-1.5.10.tar.gz.
File metadata
- Download URL: homecom_alt-1.5.10.tar.gz
- Upload date:
- Size: 32.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9ea61c73fad63a28a1c01c9d9ded99495b2bf80b1001bd34fa65b5869c048f2
|
|
| MD5 |
940ced406c72e380950b4cdf875bf126
|
|
| BLAKE2b-256 |
f552fd3cfe36cdb8b540a09324bedf58ec9149f6a956936500e0a0f2916e1996
|
File details
Details for the file homecom_alt-1.5.10-py3-none-any.whl.
File metadata
- Download URL: homecom_alt-1.5.10-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
acf6eee77afd1559a3db35c016d3f7c1bcca98db046b6c915bbb13a93b1293d6
|
|
| MD5 |
ef080689ecbe117328cdb73a92663e51
|
|
| BLAKE2b-256 |
7e732773b5eec2205bc0fa6e7343857b3c74fdeb7aa2f2126072d6b21fe3ff1d
|