Python asyncio implementation of Xiaomi Aqara Hub API
Project description
aiomihome
Asyncio version of https://github.com/Danielhiversen/PyXiaomiGateway
Description
The API only includes a thin layer with out proper handling of devices or sensors with seprate
Library consist of two classes
-
Service
Manage the multisocket interface to the xiaomi bridge and connecting to a gateway. Includes service for discovery of gateways -
Gateway
Handles the connection to the gateway
The bridge needs to be i local mode and key needs to be provided to communicate with the gateway
Usage
Create a new service object. The gateway config key is required to be able to communicate with the gateway. If discovery is used and only one gateway exist only key is needed, if several provide sid or host.
See example folder for runnable code.
Connect go gateway
Run auto discover:
gateways_config = [
{
"host": "10.0.4.104",
"sid": "7811dcb07917",
"port": 9898,
"key": key
}
]
service = XiaomiService(gateways_config=gateways_config)
# Start the mulitcast socket listner
await service.listen()
# Run the auto discover
gateways = await service.discover()
print("Number of gateways found: {}".format(len(gateways)))
# Get first gateway
gateway = gateways[0]
Directly connect to gateway:
service = XiaomiService()
# Start the mulitcast socket listner
await service.listen()
# Create a gatewate connetion
gateway = await service.add_gateway("10.0.4.104", 9898, "7811dcb07917", key)
Close conections
await service.close()
Listners
async def heartbeat_callback(data):
print("HEARTBEAT RECIVED", data)
async def device_callback(data):
print("Device data RECIVED", data)
gateway.heartbeat_callback = heartbeat_callback
gateway.device_callback = device_callback
Interact with the gateway
Print devices
print("Turn on light")
for device_type, devices in gateway.devices.items():
print(device_type, len(devices))
for device in devices:
print(" ", device['model'])
print(device)
for value_key, value in device['data'].items():
print(" ", value_key, value)
Set the gateway light
# Red
await gateway.set_color(255, 0, 0)
await asyncio.sleep(1)
# Green
await gateway.set_color(0, 255, 0)
await asyncio.sleep(1)
# Blue
await gateway.set_color(0, 0, 255)
await asyncio.sleep(1)
# Off
await gateway.turn_off_light()
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
File details
Details for the file aiomihome-1.0.4.tar.gz
.
File metadata
- Download URL: aiomihome-1.0.4.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c877cc9d52fb66a13bf7b3be34f0e7cad2cde4f6ddff918ef9be217e64023317 |
|
MD5 | 6f86a948828acdd0269c0c1b88a07c80 |
|
BLAKE2b-256 | 74f312116e5b3a3d4cc33f09da95a7421166a04c02077be83ecb7b1cc131c114 |