Skip to main content

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

  1. Clone the repository:

    git clone https://github.com/emerose/quietcool.git
    cd quietcool
    
  2. Install the package:

    pip install .
    

Development Setup

  1. Clone the repository as above
  2. Install development dependencies:
    pip install -r requirements.txt
    
  3. 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):

  1. Command line argument: --id YOUR_API_ID
  2. Environment variable: QUIETCOOL=YOUR_API_ID
  3. Config files (first found is used):
    • ./.quietcool
    • ~/.quietcool
    • /etc/quietcool

2. Pairing

Before using the client, you need to pair it with your fan:

  1. Put your fan in pairing mode (using another device or the controller's "Pair" button)
  2. 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 fan
  • pair: 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quietcool-0.1.2.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quietcool-0.1.2-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

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

Hashes for quietcool-0.1.2.tar.gz
Algorithm Hash digest
SHA256 a647b039e9d96698d0bd6f6d7c291254a03c0e18871ce77d56737ec15dcf4752
MD5 77852116f779bbadab737522e4a946fc
BLAKE2b-256 ff45b73d08de508022fa8bd4b3d9a84621a0e062c0a8a5796a4490c8eaa4e516

See more details on using hashes here.

Provenance

The following attestation bundles were made for quietcool-0.1.2.tar.gz:

Publisher: python-publish.yml on emerose/quietcool

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for quietcool-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8b32ef52a419d476029164093c9d882913229044ef0b9b2f164ede2457fcc6aa
MD5 7c04fbf0e20198de22b8921b8b83ff88
BLAKE2b-256 f9ced7d74fad30ccab061aaea87fc462bbfd9495b12efc5e4083163db03d6ddb

See more details on using hashes here.

Provenance

The following attestation bundles were made for quietcool-0.1.2-py3-none-any.whl:

Publisher: python-publish.yml on emerose/quietcool

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page