Skip to main content

TimedOutput

Struct TimedOutput 

Source
pub struct TimedOutput<F>
where F: FnMut(bool),
{ /* 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>
where F: FnMut(bool),

Source

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.

Source

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.

Source

pub fn schedule_first<T>(self, time: T) -> Self
where T: Into<Option<DateTime<Utc>>>,

Schedule the first event

Trait Implementations§

Source§

impl<F> Controller for TimedOutput<F>
where F: FnMut(bool),

Source§

fn set_name(&mut self, name: String)

Set the name of the controller
Source§

fn get_name(&self) -> Option<String>

Get the name of the controller
Source§

fn poll(&mut self, time: DateTime<Utc>) -> Option<Message>

Poll the controller for events Read more
Source§

impl<F> Debug for TimedOutput<F>
where F: FnMut(bool) + Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for TimedOutput<fn(bool)>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more