Display relays status
This commit is contained in:
@ -360,3 +360,34 @@ impl Handler<GetDevicesState> for EnergyActor {
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(serde::Serialize)]
|
||||
pub struct ResRelayState {
|
||||
pub id: DeviceRelayID,
|
||||
on: bool,
|
||||
r#for: usize,
|
||||
}
|
||||
|
||||
/// Get the state of all relays
|
||||
#[derive(Message)]
|
||||
#[rtype(result = "Vec<ResRelayState>")]
|
||||
pub struct GetAllRelaysState;
|
||||
|
||||
impl Handler<GetAllRelaysState> for EnergyActor {
|
||||
type Result = Vec<ResRelayState>;
|
||||
|
||||
fn handle(&mut self, _msg: GetAllRelaysState, _ctx: &mut Context<Self>) -> Self::Result {
|
||||
let mut list = vec![];
|
||||
|
||||
for d in &self.devices.relays_list() {
|
||||
let state = self.engine.relay_state(d.id);
|
||||
list.push(ResRelayState {
|
||||
id: d.id,
|
||||
on: state.is_on(),
|
||||
r#for: state.state_for(),
|
||||
})
|
||||
}
|
||||
|
||||
list
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user