Rename active_schedule to override_schedule and add EmgauwaNow
This commit is contained in:
parent
bf3192ec65
commit
8244a1d837
4 changed files with 228 additions and 151 deletions
|
|
@ -3,9 +3,10 @@ use std::time::{Duration, Instant};
|
|||
|
||||
use actix::{Actor, Context, Handler, Message};
|
||||
use emgauwa_common::constants;
|
||||
use emgauwa_common::db::DbSchedule;
|
||||
use emgauwa_common::errors::EmgauwaError;
|
||||
use emgauwa_common::models::Controller;
|
||||
use emgauwa_common::types::RelayStates;
|
||||
use emgauwa_common::types::{RelayStates, Weekday};
|
||||
use futures::executor::block_on;
|
||||
use sqlx::{Pool, Sqlite};
|
||||
use tokio::sync::Notify;
|
||||
|
|
@ -30,6 +31,14 @@ pub struct RelayPulse {
|
|||
pub duration: Option<u32>,
|
||||
}
|
||||
|
||||
#[derive(Message)]
|
||||
#[rtype(result = "Result<(), EmgauwaError>")]
|
||||
pub struct RelayOverrideSchedule {
|
||||
pub relay_number: i64,
|
||||
pub schedule: Option<DbSchedule>,
|
||||
pub weekday: Weekday,
|
||||
}
|
||||
|
||||
#[derive(Message)]
|
||||
#[rtype(result = "Controller")]
|
||||
pub struct GetThis {}
|
||||
|
|
@ -105,7 +114,7 @@ impl Handler<UpdateRelayStates> for AppState {
|
|||
.iter_mut()
|
||||
.zip(msg.relay_states.iter())
|
||||
.for_each(|(driver, state)| {
|
||||
if let Err(e) = driver.set(state.unwrap_or(false)) {
|
||||
if let Err(e) = driver.set(state.is_on.unwrap_or(false)) {
|
||||
log::error!("Error setting relay: {}", e);
|
||||
}
|
||||
});
|
||||
|
|
@ -148,6 +157,35 @@ impl Handler<RelayPulse> for AppState {
|
|||
}
|
||||
}
|
||||
|
||||
impl Handler<RelayOverrideSchedule> for AppState {
|
||||
type Result = Result<(), EmgauwaError>;
|
||||
|
||||
fn handle(&mut self, msg: RelayOverrideSchedule, _ctx: &mut Self::Context) -> Self::Result {
|
||||
let relay_num = msg.relay_number;
|
||||
let schedule = msg.schedule;
|
||||
let weekday = msg.weekday;
|
||||
|
||||
let relay = self
|
||||
.this
|
||||
.relays
|
||||
.iter_mut()
|
||||
.find(|r| r.r.number == relay_num)
|
||||
.ok_or(EmgauwaError::Other(String::from("Relay not found")))?;
|
||||
|
||||
log::debug!(
|
||||
"Overriding schedule for relay {} to '{}' on day {}",
|
||||
relay_num,
|
||||
schedule.as_ref().map_or("NONE", |s| &s.name),
|
||||
weekday
|
||||
);
|
||||
|
||||
relay.override_schedule = Some(schedule);
|
||||
relay.override_schedule_weekday = weekday;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl Handler<GetThis> for AppState {
|
||||
type Result = Controller;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue