MyTotalConnectComfort Rust Client
An async Rust client library for the International Honeywell Evohome heating system, provided by Resideo (who licensed the Honeywell brand).
Note: This library is designed for the international Evohome system accessible via
international.clientmytcc.com. North American systems may require different endpoints.
Features
- Async/Await - Built on tokio for high-performance async I/O
- Type-Safe - Strongly typed models with serde
- Error Handling - Comprehensive error types with thiserror
- Session Management - Automatic cookie-based authentication
- All Endpoints - Complete API coverage
- Zero Unsafe - 100% safe Rust code
Installation
Add this to your Cargo.toml:
[]
= "0.1"
= { = "1", = ["full"] }
CLI Usage
The project includes a binary evohome_rs for controlling your heating system from the command line. Please refer to the CLI Documentation.
Basic Commands
# Login (saves session to ~/.config/evohome_rs/session.json)
# List locations
# Monitor all zones
# Logout (clears session)
Authentication
You can authenticate interactively, use secure storage, or set environment variables:
-
Secure Storage (Recommended)
-
Environment Variables
EVOHOME_USER(orEVOHOME_EMAIL): Your email addressEVOHOME_PASSWORD: Your password
Temperature Control
# Set temperature for a specific zone
# Boost all zones
# Enable Eco mode
# Enable Vacation mode
# Reset all zones to follow schedule
Please refer to the CLI Documentation.
Documentation
- User Guide - Comprehensive usage guide
- Architecture - Design and implementation details
- Development - Contributing and development guide
- API Documentation - Full API docs
Developing with this library
use Client;
async
Usage Examples
Authentication
use ;
let mut client = new;
match client.login.await
List Locations and Zones
let locations = client.get_locations.await?;
for location in locations
Set Temperature (Permanent)
client.set_zone_temperature.await?;
Set Temperature (Temporary)
// Set temperature for 2 hours
client.set_zone_temperature.await?;
Find Zone by Name
let zone = client.get_zone_by_name.await?;
println!;
Concurrent Operations
use try_join;
let = try_join!?;
println!;
println!;
API Reference
Client
new()- Create a new clientlogin(email, password)- Authenticateget_locations()- Get all locationsget_location(id)- Get location detailsget_location_system(id)- Get zones and system statusget_account_info()- Get user account infoset_zone_temperature(...)- Set zone temperatureget_zone(location_id, zone_id)- Get specific zoneget_zone_by_name(location_id, name)- Find zone by name
Data Models
Zone- Heating zone with temperature and statusLocation- Home location with zonesUserInfo- User account informationGateway- Gateway device information
Error Types
Error::Authentication- Login or session errorsError::Api- API returned an errorError::ZoneNotFound- Zone not foundError::LocationNotFound- Location not foundError::Http- HTTP request failedError::Json- JSON parsing failed
Examples
See the examples/ directory for complete working examples:
basic_usage.rs- Basic authentication and operationsasync_example.rs- Concurrent operations with tokio
Run examples with:
Development
Setup
Testing
Code Quality
Publishing
Build and Test
Publish to crates.io
# Dry run
# Publish
License
This project is licensed under the MIT License - see the LICENSE file for details.
Disclaimer
This is an unofficial library and is not affiliated with, endorsed by, or connected to Honeywell International, Resideo Technologies, or any of their subsidiaries.
About the Evohome System: The Evohome heating control system is provided by Resideo Technologies, Inc., who licensed the Honeywell brand from Honeywell International Inc. This library interfaces with the international version of the MyTotalConnectComfort service.
Use this library at your own risk.
Support
For a full list of commands, API details, and Rust library usage, please refer to the main Rust README.md or the API Documentation.
Acknowledgments
- Built with Rust, tokio, reqwest, and serde
- Inspired by the need for home automation and energy efficiency