113 lines
3.9 KiB
Rust
113 lines
3.9 KiB
Rust
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct ConfigurationExport {
|
|
pub format_version: u32,
|
|
pub exported_at: DateTime<Utc>,
|
|
pub settings: RuntimeSettings,
|
|
pub devices: Vec<Device>,
|
|
pub zones: Vec<Zone>,
|
|
#[serde(default)]
|
|
pub groups: Vec<ClimateGroup>,
|
|
pub schedules: Vec<Schedule>,
|
|
pub automations: Vec<Automation>,
|
|
#[serde(default)]
|
|
pub flows: Vec<Flow>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct ControlPlanEvent {
|
|
pub at: DateTime<Utc>,
|
|
pub kind: String,
|
|
pub label: String,
|
|
pub preset: Option<String>,
|
|
pub target_temperature: Option<f64>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct ZoneControlPlan {
|
|
pub zone_id: String,
|
|
pub zone_name: String,
|
|
pub device_id: String,
|
|
pub device_name: String,
|
|
/// Configured per-zone enable switch. Group/master gates are reported separately.
|
|
pub enabled: bool,
|
|
/// True when the configured zone is eligible for thermostat control. Disabled group control does not block the zone.
|
|
pub effective_enabled: bool,
|
|
/// Effective mode currently used by the controller.
|
|
pub mode: String,
|
|
/// Configured zone mode before house-mode inheritance is resolved.
|
|
pub configured_mode: String,
|
|
pub inherit_house_mode: bool,
|
|
/// Profile resolved from a manual override or the active schedule.
|
|
pub preset: String,
|
|
/// Explicit per-zone profile override; None means Auto schedule.
|
|
pub preset_override: Option<String>,
|
|
pub current_temperature: Option<f64>,
|
|
pub target_temperature: Option<f64>,
|
|
pub device_setpoint: Option<f64>,
|
|
pub desired_power: bool,
|
|
pub desired_mode: String,
|
|
pub actual_power: Option<bool>,
|
|
pub actual_mode: Option<String>,
|
|
pub actual_setpoint: Option<f64>,
|
|
pub demand: bool,
|
|
pub control_source: String,
|
|
pub manual_override_until: Option<DateTime<Utc>>,
|
|
pub local_thermostat_power: Option<bool>,
|
|
pub local_thermostat_resume_at: Option<DateTime<Utc>>,
|
|
pub device_manual_override: bool,
|
|
pub device_manual_override_until: Option<DateTime<Utc>>,
|
|
pub control_owner: String,
|
|
pub control_command_source: String,
|
|
pub control_since: Option<DateTime<Utc>>,
|
|
pub resume_at: Option<DateTime<Utc>>,
|
|
pub control_reason: String,
|
|
pub blocked_reason: Option<String>,
|
|
pub lockout_until: Option<DateTime<Utc>>,
|
|
pub current_schedule_id: Option<String>,
|
|
pub current_schedule_name: Option<String>,
|
|
pub next_events: Vec<ControlPlanEvent>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct AutomationPlanRule {
|
|
pub id: String,
|
|
pub name: String,
|
|
pub enabled: bool,
|
|
pub trigger_kind: String,
|
|
pub trigger_device_id: Option<String>,
|
|
pub trigger_device_name: Option<String>,
|
|
pub threshold: Option<f64>,
|
|
pub at_time: Option<String>,
|
|
pub action_device_id: String,
|
|
pub action_device_name: String,
|
|
#[serde(default)]
|
|
pub action_group_id: Option<String>,
|
|
#[serde(default)]
|
|
pub action_group_name: Option<String>,
|
|
#[serde(default)]
|
|
pub action_preset: Option<String>,
|
|
pub action: DeviceCommand,
|
|
pub last_fired_at: Option<DateTime<Utc>>,
|
|
pub next_ready_at: Option<DateTime<Utc>>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct ControlPlan {
|
|
pub generated_at: DateTime<Utc>,
|
|
pub house_mode: String,
|
|
/// Uniform whole-house preset when every zone uses the same override; None for a mixed state.
|
|
pub house_preset: Option<String>,
|
|
/// Compatibility field. Global ON/OFF does not use a persistent master gate; this remains true in v0.9.4+.
|
|
pub house_power: bool,
|
|
pub outdoor_temperature: Option<f64>,
|
|
pub control_strategy: String,
|
|
pub night_mode_active: bool,
|
|
pub night_mode_start: String,
|
|
pub night_mode_end: String,
|
|
pub night_mode_max_fan_speed: u8,
|
|
pub next_events: Vec<ControlPlanEvent>,
|
|
pub zones: Vec<ZoneControlPlan>,
|
|
pub rules: Vec<AutomationPlanRule>,
|
|
}
|
|
|