equilibrium is a framework for creating distributed control systems.
It provides a several types of control system paradigms and is agnostic to the underlying hardware. The intention is to provide a framework that can be used in a variety of applications such as aquaponics/hydroponics, aquariums, homebrewing, bioreactors and more.
Example
This example creates 2 controllers:
- a grow-light turns on an output at 5:00AM and turns it off after 8 hours,
- a heater that turns on an output when the temperature is below 70 degrees.
Then a runtime is created which polls the controllers every second. The output of the controllers are messages which are sent to a message broker operating on localhost.
use ;
use ;
use ;
Features
Controller Types
TimedOutput
: turns on an output at a specific time and turns it off after a durationThreshold
: turns on an output when a threshold is metBidirectionalThreshold
: increases or decreases an output when a threshold is met
More controller types (i.e.: PID) will be added in the future.
Outputs
Currently, only binary output devices are supported.
Roadmap
- Add support for a more common message broker such as MQTT
- Add support for more types of controllers (i.e.: PID, etc.)
- Create examples for GPIO (i.e.: Atmel, RPi, ARM, RISC-V, etc.)
- Add support for more types of inputs (i.e.: analog, digital, etc.)
- Add support for more types of outputs (i.e.: PWM, digital, etc.)
- Simplify API by introducing macros