fan_control/
fan_control.rs1use logicline::{Rack, action};
2
3fn main() {
4 let mut state = Rack::new().with_recording_enabled();
5 let mut processor = state.processor();
6
7 let mut fan = false;
9
10 let temperature = 31.0;
12
13 processor
14 .line("fan_on", temperature)
16 .then(action!("temp_high", |t| (t > 30.0).then_some(())))
17 .then(action!("fan_on", |()| {
18 fan = true;
19 Some(())
20 }));
21 processor
22 .line("fan_off", temperature)
24 .then(action!("temp_low", |t| (t < 25.0).then_some(())))
25 .then(action!("fan_off", |()| {
26 fan = false;
27 Some(())
28 }));
29
30 state.ingress(&mut processor);
31 println!("{}", state);
32
33 println!("{}", serde_json::to_string_pretty(&state).unwrap());
34}