greeclimate
Discover, connect and control Gree based minisplit systems
What it is and what it does
greeclimate is a fully async Python library for controlling Gree-branded mini-split HVAC systems (air conditioners and heat pumps) that are also compatible with the Gree+ mobile app. It handles network discovery, device binding with encryption key negotiation, and state management for properties like power, temperature, fan speed, and operating mode. The library uses netifaces for network interface detection and pycryptodome for the two-layer encryption scheme that Gree devices employ.
The package is designed for home automation integrations and has been tested on Proklima and Trane mini-split units. It provides async methods for scanning the network, binding to discovered devices, querying current state, and pushing configuration changes. The binding process is described as finnicky—devices only respond to binding requests immediately following a network scan, and re-binding may be necessary if the device key is lost.
Use it for:
- Integrate Gree mini-split systems into Home Assistant or other home automation platforms for centralized climate control.
- Build custom monitoring dashboards that query device state (temperature, mode, fan speed) over the network.
- Automate HVAC scheduling by setting power, target temperature, and operating mode via async Python scripts.
- Troubleshoot device connectivity issues using the built-in discovery and diagnostic tools.
- Control multiple Gree units concurrently in a single application using async/await patterns.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Async Python library for discovering, connecting to, and controlling Gree-based mini-split air conditioning and heat pump systems over the network.
Yes, if you own a Gree-compatible mini-split system and need programmatic control. The package is actively maintained, has low install friction, and provides a clean async API. The main gotcha is that device binding is finnicky and requires immediate re-scan if the device key is lost—test discovery and binding thoroughly before relying on it in production. GPLv3 licensing means any derivative work must remain open-source.
Install
greeclimate on PyPI
pip
pip install greeclimateuv
uv add greeclimatepoetry
poetry add greeclimateInstalling greeclimate
Before you install
Low install friction with only two runtime dependencies (netifaces and pycryptodome). Package is actively maintained with recent commits and supports current Python versions (3.10+).
License in practice
Licensed under GPLv3 (copyleft). Any derivative work or bundled distribution must also be open-source under compatible terms.
Quickstart
pip install greeclimate
from greeclimate.discovery import Discovery
from greeclimate.device import Device
discovery = Discovery()
for device_info in await discovery.scan(wait_for=5):
device = Device(device_info)
await device.bind()
Requires Python 3.10 or later. Binding to devices is finnicky and only works immediately after a network scan; devices must be on the same network and discoverable via UDP broadcast.
Verify before relying
- Whether all Gree+ app-compatible devices are actually supported or only specific models
- Exact encryption key negotiation details and whether re-binding is always required after power loss
- Whether the package handles concurrent connections to multiple devices reliably
Package facts
| License | not declared (copyleft) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — netifaces, pycryptodome |
| Maintenance | actively maintained — 64 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 79,672/month — #14,342 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: greeclimate-3.2.0-py3-none-any.whl
Tags
More Networking packages
h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
psutilpsutil retrieves real-time information about…
permissive · top 1,000 on PyPI
pyOpenSSLpyOpenSSL wraps OpenSSL's SSL/TLS functionality…
permissive · top 1,000 on PyPI
uvloopuvloop is a drop-in replacement for Python's…
permissive · top 1,000 on PyPI
execnetexecnet lets you spawn and communicate with…
permissive · top 1,000 on PyPI
pyzmqPyZMQ provides Python bindings for ZeroMQ…
permissive · top 1,000 on PyPI
python-izonePython library for controlling iZone air…
copyleft · top 15,000 on PyPI
advantage-airAsync Python wrapper for Advantage Air's MyAir…
permissive · top 15,000 on PyPI
aioairzone-cloudAsync Python library for controlling Airzone…
permissive · top 15,000 on PyPI
msmart-ngA Python library for discovering and…
permissive · top 15,000 on PyPI
py-ccm15Provides an async Python interface to…
permissive · top 15,000 on PyPI
AIOSomecomfortAsyncIO client for querying and controlling…
permissive · top 15,000 on PyPI
pysensiboProvides an asyncio-friendly Python API client…
permissive · top 15,000 on PyPI
nexiaAsync Python library for controlling Nexia…
permissive · top 15,000 on PyPI
pystiebeleltronProvides a Python API to communicate with…
permissive · top 15,000 on PyPI
airtouch4pyapiControls Airtouch 4 and 5 air conditioning…
permissive · top 15,000 on PyPI