Skip to main content

rointe_core/
lib.rs

1//! # rointe-core
2//!
3//! Rust SDK for controlling [Rointe](https://www.rointe.com/) WiFi-enabled
4//! radiators via the Firebase Realtime Database REST API.
5//!
6//! This crate handles authentication, device discovery, state queries, and
7//! control commands. It is derived from protocol knowledge documented in
8//! [rointe-sdk](https://github.com/tggm/rointe-sdk) by Tiago Matias (MIT).
9//!
10//! ## Quick start
11//!
12//! ```no_run
13//! use rointe_core::{RointeClient, Preset};
14//!
15//! #[tokio::main]
16//! async fn main() -> rointe_core::Result<()> {
17//!     let client = RointeClient::new("user@example.com", "password").await?;
18//!
19//!     // Discover all installations and devices
20//!     let installations = client.get_installations().await?;
21//!     for inst in &installations {
22//!         let ids = client.discover_devices(&inst.id).await?;
23//!         for id in ids {
24//!             let device = client.get_device(&id).await?;
25//!             println!("{}: {:.1}°C", device.data.name, device.data.temp);
26//!         }
27//!     }
28//!
29//!     Ok(())
30//! }
31//! ```
32//!
33//! ## Features
34//!
35//! - **Authentication** — email/password login with automatic token refresh
36//!   ([`auth::FirebaseAuth`])
37//! - **Device discovery** — recursively enumerate installations and zones
38//!   ([`RointeClient::get_installations`], [`RointeClient::discover_devices`])
39//! - **State reads** — fetch full device state ([`RointeClient::get_device`])
40//! - **Control** — set temperature, presets, and HVAC mode
41//!   ([`RointeClient::set_temperature`], [`RointeClient::set_preset`],
42//!   [`RointeClient::set_mode`])
43//! - **Energy stats** — query hourly consumption data
44//!   ([`RointeClient::get_energy_stats`])
45
46pub mod auth;
47pub mod client;
48pub mod error;
49pub mod firebase;
50pub mod models;
51
52// Convenient top-level re-exports
53pub use client::RointeClient;
54pub use error::{Result, RointeError};
55pub use models::{
56    device::{DeviceData, FirmwareInfo, RointeDevice},
57    energy::EnergyConsumptionData,
58    enums::{DeviceMode, DeviceStatus, HvacMode, Preset, RointeProduct, ScheduleMode},
59    installation::{Installation, Zone},
60};