A Python client for controlling QuietCool Wireless RF Control Kit fans via BLE
Project description
QuietCool Client
A Python client for controlling QuietCool Wireless RF Control Kit fans via Bluetooth Low Energy (BLE).
Overview
This client allows you to interact with QuietCool whole house fans that use the Wireless RF Control Kit. It provides functionality to:
- Pair with fans
- Get fan information and status
- Control fan settings
- Monitor temperature and humidity
- Manage presets
Installation
From PyPI
You can install the package directly from PyPI using pip:
pip install quietcool
From Source
-
Clone the repository:
git clone https://github.com/emerose/quietcool.git cd quietcool
-
Install the package:
pip install .
Development Setup
- Clone the repository as above
- Install development dependencies:
pip install -r requirements.txt
- Install package in editable mode:
pip install -e .
Prerequisites
- Python 3.10 or higher
- A QuietCool fan with Wireless RF Control Kit
- Bluetooth Low Energy (BLE) support on your device
- bleak - A GATT client software, used for Bluetooth Low Energy communication
Getting Started
1. API ID Setup
The client requires an API ID to authenticate with the fan. The ID is an
alphanumeric (hex?) string of the form a1b2c1d2a2b1c2d1, and is used to
identify / authenticate the client. You can generate your own and provide it in
several ways (checked in this order):
- Command line argument:
--id YOUR_API_ID - Environment variable:
QUIETCOOL=YOUR_API_ID - Config files (first found is used):
./.quietcool~/.quietcool/etc/quietcool
2. Pairing
Before using the client, you need to pair it with your fan:
- Put your fan in pairing mode (using another device or the controller's "Pair" button)
- Run:
quietcool pair
3. Basic Usage
Get fan information:
quietcool info
Example output:
{
"faninfo": {
"name": "sunroom fan",
"model": "7",
"serial_num": "RSE2008539"
},
"params": {
"mode": "Idle",
"fan_type": "THREE",
"temp_high": 120,
"temp_medium": 100,
"temp_low": 80,
"humidity_high": 90,
"humidity_low": 255,
"humidity_range": "LOW",
"hour": 1,
"minute": 0,
"time_range": "MEDIUM"
},
"version": {
"version": "IT-BLT-ATTICFAN_V2.6",
"protect_temp": 182,
"create_date": "2023.07.25",
"create_mode": "online",
"hw_version": "A"
},
"presets": [
{
"name": "Summer",
"temp_high": 120,
"temp_med": 100,
"temp_low": 80,
"humidity_off": 90,
"humidity_on": 255,
"humidity_speed": "LOW"
},
{
"name": "Winter",
"temp_high": 255,
"temp_med": 255,
"temp_low": 255,
"humidity_off": 255,
"humidity_on": 255,
"humidity_speed": "LOW"
}
],
"workstate": {
"mode": "Idle",
"range": "CLOSE",
"sensor_state": "OK",
"temperature": 71.3,
"humidity": 36
}
}
Command Line Options
usage:
quietcool [-h] [--id ID] [--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [command]
Commands:
info: Dumps detailed information about the connected fanpair: Pairs the client with a fan (fan must be in pairing mode)
Options:
--id ID: API ID string--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}: Set logging level (default: WARNING)-h, --help: Show help message
License
MIT License
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
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
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 quietcool-0.1.2.tar.gz.
File metadata
- Download URL: quietcool-0.1.2.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a647b039e9d96698d0bd6f6d7c291254a03c0e18871ce77d56737ec15dcf4752
|
|
| MD5 |
77852116f779bbadab737522e4a946fc
|
|
| BLAKE2b-256 |
ff45b73d08de508022fa8bd4b3d9a84621a0e062c0a8a5796a4490c8eaa4e516
|
Provenance
The following attestation bundles were made for quietcool-0.1.2.tar.gz:
Publisher:
python-publish.yml on emerose/quietcool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
quietcool-0.1.2.tar.gz -
Subject digest:
a647b039e9d96698d0bd6f6d7c291254a03c0e18871ce77d56737ec15dcf4752 - Sigstore transparency entry: 169387357
- Sigstore integration time:
-
Permalink:
emerose/quietcool@07e857d1827d76b390ed9e04cd98be3baa4fd0ba -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/emerose
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@07e857d1827d76b390ed9e04cd98be3baa4fd0ba -
Trigger Event:
release
-
Statement type:
File details
Details for the file quietcool-0.1.2-py3-none-any.whl.
File metadata
- Download URL: quietcool-0.1.2-py3-none-any.whl
- Upload date:
- Size: 10.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b32ef52a419d476029164093c9d882913229044ef0b9b2f164ede2457fcc6aa
|
|
| MD5 |
7c04fbf0e20198de22b8921b8b83ff88
|
|
| BLAKE2b-256 |
f9ced7d74fad30ccab061aaea87fc462bbfd9495b12efc5e4083163db03d6ddb
|
Provenance
The following attestation bundles were made for quietcool-0.1.2-py3-none-any.whl:
Publisher:
python-publish.yml on emerose/quietcool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
quietcool-0.1.2-py3-none-any.whl -
Subject digest:
8b32ef52a419d476029164093c9d882913229044ef0b9b2f164ede2457fcc6aa - Sigstore transparency entry: 169387359
- Sigstore integration time:
-
Permalink:
emerose/quietcool@07e857d1827d76b390ed9e04cd98be3baa4fd0ba -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/emerose
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@07e857d1827d76b390ed9e04cd98be3baa4fd0ba -
Trigger Event:
release
-
Statement type: