Extending HOWTO
There are several different ways to extend EVA ICS functionality, each one is preferred for certain tasks.
Tips and tricks
put development: true in server field of config/<controller>/main registry key. This option automatically enables traceback logging and debug mode (don’t use on production!)
instead of e.g. eva uc server start, run eva uc server launch to output everything to the system console.
use debuggers and profilers. We use and recommend ipdb and ppTOP.
don’t be surprised that the system performance is much slower, when debug mode is enabled.
EVA ICS uses asyncio only for the internal code. All user scripts and extensions are executed in separate threads. So keep your code thread-safe.
Invent own bus connections only if there is no virtual bus provided.
I/O
Item scripts (Universal Controller) - exchange data with an equipment, quickly and dirty
PHI modules (Universal Controller) - exchange data with an equipment in a proper and fast way
Logic
Core scripts - tiny Python snippets to handle events, quickly and dirty
Logic control macros (Logic Manager) - tiny scripts to handle event logic or be executed on request
Macro extensions (Logic Manager) - extend functionality of logic macros to implement certain features
Plug-ins
Core plug-ins - applications and function libraries that run inside EVA ICS. This is the most advanced way to extend EVA ICS functionality: plug-ins can implement all of the above plus much and much more.
Extensions as packages
See Packages