A Python CLI tool for monitoring and managing HVAC device settings using the Kumo cloud API
Project description
HVAC Stability
A Python CLI tool for monitoring and managing HVAC device settings using the Kumo cloud API. This tool helps ensure your HVAC devices are following their scheduled setpoints and can automatically fix discrepancies.
Features
- Device Discovery: Automatically discover and list all HVAC devices
- Schedule Monitoring: Check if devices are following their programmed schedules
- Bulk Operations: Check or fix settings across all devices at once
- Temperature Conversion: Support for both Fahrenheit and Celsius
- Detailed Reporting: Clear status reports with critical vs minor issues
- Automated Fixes: Automatically adjust device settings to match schedules
Installation
Use uv and uvx:
uvx hvac-stability --help
Quick Start
1. Login and Setup
# Login to Kumo cloud service
uvx hvac-stability login
# List all discovered devices
uvx hvac-stability list --verbose
2. Check Device Status
# Check all devices at once
uvx hvac-stability check-device-settings all
# Check a specific device
uvx hvac-stability check-device-settings "Device Name"
# Check with exit codes for automation
uvx hvac-stability check-device-settings all --exit-code
3. Fix Issues
# Fix all devices that are out of sync
uvx hvac-stability fix-device-settings all
# Fix a specific device
uvx hvac-stability fix-device-settings "Device Name"
# Preview changes without applying them
uvx hvac-stability fix-device-settings all --dry-run
Example Usage
Checking All Devices
$ uvx hvac-stability check-device-settings all
Checking all 5 device(s)...
(1/5) Checking Living Room (ABC123)
⚠️ Living Room has 1 minor issue(s) (no critical problems)
(2/5) Checking Office (DEF456)
✅ Office is in sync!
(3/5) Checking Bedroom 1 (GHI789)
✅ Bedroom 1 is in sync!
(4/5) Checking Bedroom 2 (JKL012)
🔥 Bedroom 2 has 1 critical issue(s)!
• Cool Setpoint: 68.0°F → 74.3°F
(5/5) Checking Master Suite (MNO345)
✅ Master Suite is in sync!
Summary:
• Total devices checked: 5
• Devices in sync: 3
• Devices with critical issues: 1
• Devices with minor issues: 1
🔥 1 device(s) need immediate attention!
Fixing Issues
$ uvx hvac-stability fix-device-settings "Bedroom 2"
Processing Bedroom 2 (JKL012)
Changes needed for Bedroom 2:
• Cool Setpoint: 68.0°F → 74.3°F
Applying 1 change(s) to Bedroom 2...
✅ Applied 1 change(s) to Bedroom 2
Summary:
• Total devices processed: 1
• Devices fixed: 1
• Devices already in sync: 0
✅ Successfully processed 1 device(s)!
Detailed Single Device Check
$ uvx hvac-stability check-device-settings "Bedroom 2"
Checking Settings for Bedroom 2 (JKL012)
Settings Comparison
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┓
┃ Setting ┃ Current ┃ Expected ┃ Status ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━┩
│ Heat Setpoint │ 68.0°F │ 68.0°F │ ✅ OK │
│ Cool Setpoint │ 74.3°F │ 74.3°F │ ✅ OK │
│ Mode │ autoHeat │ auto │ ✅ OK │
│ Fan Speed │ auto │ auto │ ✅ OK │
│ Vane Direction │ auto │ auto │ ✅ OK │
└─────────────────┴──────────────┴──────────────┴────────┘
Checked at: 2025-08-03 12:33:12
✅ Bedroom 2 is in sync!
Commands
Core Commands
login- Authenticate with the Kumo cloud servicelist- Display all discovered devicescheck-device-settings- Check if devices match their schedulesfix-device-settings- Automatically fix out-of-sync devices
Device Management
store-device-ip- Store local IP addresses for faster communicationshow-schedule- Display device scheduling information
Configuration
The tool uses environment variables and local configuration files:
- Credentials: Stored securely in
~/.local/var/hvac_stability/.credentials - Device Data: Cached in
~/.local/var/hvac_stability/devices.json - Temperature Unit: Set via
KUMO_TEMPERATURE_UNIT(F or C)
Environment Variables
export KUMO_AUTH_USERNAME="your_username"
export KUMO_AUTH_PASSWORD="your_password"
export KUMO_TEMPERATURE_UNIT="F" # or "C"
export KUMO_DATA_PATH="~/.local/var/hvac_stability/"
Issue Types
The tool categorizes issues into two types:
🔥 Critical Issues
- Temperature setpoints that don't match the schedule
- These require immediate attention and can affect comfort/efficiency
⚠️ Minor Issues
- Mode variations (auto/autoCool/autoHeat differences)
- Fan speed or vane direction discrepancies
- These are typically normal HVAC behavior and less concerning
Exit Codes
When using --exit-code flag:
0- All devices in sync or only minor issues1- Critical issues found or errors occurred
This makes the tool suitable for automation and monitoring scripts.
Development
Project Structure
src/hvac_stability/cli.py- Main CLI application- Uses
typerfor command-line interface - Uses
pykumofor Kumo cloud API integration - Uses
richfor enhanced terminal output
Building and Testing
# Install development dependencies
uv sync
# Check code syntax
uv run python -m py_compile src/hvac_stability/cli.py
# Run the application
uv run hvac-stability --help
Troubleshooting
Authentication Issues
- Verify credentials with
hvac-stability login - Check that your Kumo account has access to the devices
Device Communication
- Use
store-device-ipto cache local IP addresses for faster access - Some devices may require schedule setup in the Kumo app first
Schedule Issues
- Ensure devices have active schedules configured
- Check that schedule events are set to "active" and "in use"
License
This project is for personal HVAC management and monitoring.
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 hvac_stability-0.1.1.tar.gz.
File metadata
- Download URL: hvac_stability-0.1.1.tar.gz
- Upload date:
- Size: 32.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec70852cc46cf9a0eeb9d95b811ac9f2a8fca3c64111915de90e88fade7e0845
|
|
| MD5 |
6a09587caa70474176c7b93b7a6f7177
|
|
| BLAKE2b-256 |
abec43dc8f096ccd0dcea701230a1d268ac659a3a5eb595bd3c8f6a5ace682ce
|
Provenance
The following attestation bundles were made for hvac_stability-0.1.1.tar.gz:
Publisher:
pypi-package.yml on offbyone/kumo-hvac-management
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hvac_stability-0.1.1.tar.gz -
Subject digest:
ec70852cc46cf9a0eeb9d95b811ac9f2a8fca3c64111915de90e88fade7e0845 - Sigstore transparency entry: 346655300
- Sigstore integration time:
-
Permalink:
offbyone/kumo-hvac-management@c50913bd047f09e3c1ad9e7542b18e52fea87311 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/offbyone
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-package.yml@c50913bd047f09e3c1ad9e7542b18e52fea87311 -
Trigger Event:
release
-
Statement type:
File details
Details for the file hvac_stability-0.1.1-py3-none-any.whl.
File metadata
- Download URL: hvac_stability-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c931a5d05ed055fca049eeac1b8bcc1e7702e273712485be75a570ed08e64913
|
|
| MD5 |
566272251555e77e8df2155962c434bf
|
|
| BLAKE2b-256 |
ae030f609535b46c03b6b930a02888f16be24f78145864cd7af5cc706f71194f
|
Provenance
The following attestation bundles were made for hvac_stability-0.1.1-py3-none-any.whl:
Publisher:
pypi-package.yml on offbyone/kumo-hvac-management
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hvac_stability-0.1.1-py3-none-any.whl -
Subject digest:
c931a5d05ed055fca049eeac1b8bcc1e7702e273712485be75a570ed08e64913 - Sigstore transparency entry: 346655302
- Sigstore integration time:
-
Permalink:
offbyone/kumo-hvac-management@c50913bd047f09e3c1ad9e7542b18e52fea87311 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/offbyone
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-package.yml@c50913bd047f09e3c1ad9e7542b18e52fea87311 -
Trigger Event:
release
-
Statement type: