pub struct TimedOutput<F>{ /* private fields */ }Expand description
Simple controller that turns on an output at a specific time and turns it off after a duration has passed.
This is used to repeat the same action every day at the same time.
§Potential Use Cases
- Controlling grow lights
- Regularly turning on an O2 pump for a fish tank or bioreactor
- Regularly dumping a sedimentation filter
- Controlling a feed motor for fish feed
§Example
In this example, the output will be actuated at 5:00AM and deactivated after 8 hours (1:00PM)
use chrono::{Duration, NaiveTime, Utc};
use equilibrium::controllers::{Controller, TimedOutput};
use equilibrium::Output;
let time = NaiveTime::from_hms_opt(5, 0, 0).unwrap();
let duration = Duration::hours(8);
let mut output = TimedOutput::new(
Output::default(),
time,
duration,
);
output.poll(Utc::now());Implementations§
Source§impl<F> TimedOutput<F>
impl<F> TimedOutput<F>
Sourcepub fn new(output: Output<F>, start_time: NaiveTime, duration: Duration) -> Self
pub fn new(output: Output<F>, start_time: NaiveTime, duration: Duration) -> Self
Create a new timed output with a scheduled the first event
This is the recommended API for instantiating new TimedOutputs.
Sourcepub fn new_without_scheduled(
output: Output<F>,
start_time: NaiveTime,
duration: Duration,
) -> Self
pub fn new_without_scheduled( output: Output<F>, start_time: NaiveTime, duration: Duration, ) -> Self
Create a new timed output
This does not schedule the first event and TimedOutput::schedule_first
should be used to schedule the first event. It is recommended to use the TimedOutput::new
method instead.
This method is only useful for testing purposes.
Trait Implementations§
Source§impl<F> Controller for TimedOutput<F>
impl<F> Controller for TimedOutput<F>
Source§impl<F> Debug for TimedOutput<F>
impl<F> Debug for TimedOutput<F>
Auto Trait Implementations§
impl<F> Freeze for TimedOutput<F>where
F: Freeze,
impl<F> RefUnwindSafe for TimedOutput<F>where
F: RefUnwindSafe,
impl<F> Send for TimedOutput<F>where
F: Send,
impl<F> Sync for TimedOutput<F>where
F: Sync,
impl<F> Unpin for TimedOutput<F>where
F: Unpin,
impl<F> UnsafeUnpin for TimedOutput<F>where
F: UnsafeUnpin,
impl<F> UnwindSafe for TimedOutput<F>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more