Automate is a general purpose automatization library for Python. Its objective is to offer convenient and robust object-oriented programming framework for complex state machine systems. Automate can be used to design complex automation systems, yet it is easy to learn and fun to use. It was originally developed with home robotics/automatization projects in mind, but is quite general in nature and one could find applications from various fields that could take advantage of Automate. Automate can be embedded in other Python software as a component, which runs its operations in its own threads.
- Supported hardware:
state-saving
- Intelligent design:
- RPC and Websocket interfaces (provided by
automate-rpc
andautomate-webui
) to connect between other applications or other Automate systems. - Comprehensive and customizable Web User Interface via
automate-webui
- UML graphs can be drawn automaticlaly of the system (as can be seen in the examples of this documentation)
Let us consider following short Automate program as a first example:
hello_world.py
This simple example has two sensors hardware_switch
, web_switch
, actuator (lamp
) and a program
that contains logic what to do and when. Here, lamp
is switched on if either web_switch
or hardware_switch
has status True. ~automate.extensions.webui.webui.WebService
with default settings is enabled so that user can monitor system and set status of web_switch
. The following figure (generated via ~automate.extensions.webui.webui.WebService
interface) illustrates the system in UML graph:
Automate was originally developed in order to enable simple and robust way of programming home automatization with Raspberry Pi minicomputer, to obtain automatization and automatic monitoring of rather complex planted aquarium safety/controlling system.