Record relays state

This commit is contained in:
2024-09-17 22:31:51 +02:00
parent 368eb13089
commit 565db05fb0
8 changed files with 165 additions and 19 deletions

@ -6,6 +6,7 @@ use prettytable::{row, Table};
use crate::constants;
use crate::devices::device::{Device, DeviceId, DeviceRelay, DeviceRelayID};
use crate::energy::consumption::EnergyConsumption;
use crate::energy::relay_state_history::RelayStateHistory;
use crate::utils::time_utils::time_secs;
#[derive(Default)]
@ -320,4 +321,18 @@ impl EnergyEngine {
self.print_summary(curr_consumption, devices);
}
/// Save relays state to disk
pub fn persist_relays_state(&mut self, devices: &[Device]) -> anyhow::Result<()> {
// Save all relays state
for d in devices {
for r in &d.relays {
let mut file = RelayStateHistory::open(r.id, time_secs())?;
file.set_state(time_secs(), self.relay_state(r.id).is_on())?;
file.save()?;
}
}
Ok(())
}
}