Contents
EVA ICS v4
System documentation
Quick start
Few words from the authors
Installation
The task
Commons
Connecting the equipment
Creating items
Fieldbus connection
Defining logic
Rules
Logic macros
Building Human-Machine Interface
Creating users and ACLs
The same but with deployment
Installation
Supported operating systems
Recommended for production setups
Tested and fully compatible
Preparing the system
Installing
Basic install
Installer arguments
Post-install configuration
Startup
Configuring/rebuilding Python venv
Updating
Local nodes
Remote nodes
Running under a restricted user
Node replication
Single-level clusters
Setting up a primary node
Setting up a secondary node
Connecting nodes
Multi-level clusters
Setting up a top node
Setting up the middle node
Connecting nodes
Migration to V4
Why migrate to EVA ICS v4
Migration
V3 nodes in V4 cluster
V3 and V4 nodes on the same machine
Logic
Item states
AAA
Python macros
Deployment
Item scripts
UDP API
Cloud Manager UI
Installation
Windows 10/11+
Linux (Ubuntu 20.04/22.04)
Other operating systems
Operating manual
Connecting to a node
Common operations
Actions
Broker
Items
Log
Services
Secondary points
What is new
4.0.1-stable
4.0.0-stable
4.0.0 (2022-10-05)
Common
Platform architecture
Basics
Service types
Common types
Service names
Primary external services
Additional external services
Service management
Create
Manage
Destroy / undeploy / purge
Advanced configuration
Local clustering and secondary points
Basics
Architecture
Configuration
Moving services to secondary points
Updating
Uploading files via deployment
Configuration
Configuration files
eva_config
watchdog
Configuration registry keys
eva/config/core
eva/config/bus
eva/config/registry
eva/config/logs
eva/config/python-venv
Troubleshooting
Registry database
Technology
Reasons
Maintenance
Bus cheat-sheet
Structure
Authentication, authorization and accounting
Basics
Structure
Access control list
API key
User
Session token
Items
Item types
sensor
unit
lvar
lmacro
Creating and managing items
Item states
Common item properties
OID
meta
enabled
logic
connected
node
Command-line tools
eva-shell
Installing/updating
EVA Cloud Manager CLI
Bus CLI
Registry management
Command-line tools
Python VENV management
IaC and deployment
Deployment file
AAA
Uploading files
Items
Macros
Services
Extra commands
Deployment via CLI
Deploying
Undeploying
Advanced configuration
High-load environments
Tuning EVA ICS
Hardware
Understanding timeouts
Call timeouts
The schema
Configuring the timeouts
Client timeout
Local replication pub/sub timeout
Bus call timeout
Troubleshooting
Creating dumps
Plain
Encrypted
Support requests
Community support
Security
Functionality
Native packages
Supported distributions
OpenSSL versions
Switching to native
Universal packages
OpenSSL versions
FIPS 140
Connecting untrusted remote nodes
EVA ICS Enterprise
General terms and conditions
Enterprise services
Installation
Active Directory authentication
Zero-failure replication
HMI Kiosk manager
EVA JS Framework WASM extension
Installation
Licensing
Limitations
PSRT Enterprise
Mission-critical projects
The core and services
The core
Configuration
EAPI methods
action
action.kill
action.list
action.result
action.terminate
action.toggle
core.shutdown
item.announce
item.create
item.deploy
item.destroy
item.disable
item.enable
item.get_config
item.list
item.state
item.summary
item.undeploy
log.get
log.purge
lvar.clear
lvar.decr
lvar.incr
lvar.reset
lvar.set
lvar.toggle
node.get
node.list
run
save
spoint.list
svc.deploy
svc.get
svc.get_params
svc.list
svc.purge
svc.restart
svc.undeploy
test
update
1-Wire (OWFS) controller
Setup
EAPI methods
action
kill
terminate
w1.get
w1.info
w1.scan
w1.set
Active directory auth service
Setup
EAPI methods
auth.user
cache.delete
cache.purge
Preparing related services
Active Directory configuration
Usage
Authentication
ACL prefixes
Default ACL service
Setup
EAPI methods
acl.deploy
acl.destroy
acl.export
acl.format
acl.get_config
acl.list
acl.undeploy
Ethernet/IP PLC controller gateway
Setup
EAPI methods
action
kill
terminate
var.get
var.set
File manager service
Setup
EAPI methods
file.get
file.put
file.unlink
sh
HMI kiosk manager
Creating/managing kiosks
Creating a kiosk connection
Using one-time accounts for authentication
Listing kiosk states
Destroying kiosk connection
More functions
Kiosks and IaC-deployment
Setup
EAPI methods
kiosk.alert
kiosk.deploy
kiosk.destroy
kiosk.dev_close
kiosk.dev_open
kiosk.display
kiosk.eval
kiosk.get_config
kiosk.info
kiosk.list
kiosk.login
kiosk.logout
kiosk.navigate
kiosk.reboot
kiosk.reload
kiosk.test
kiosk.undeploy
kiosk.zoom
HMI service
Setup
EAPI methods
api_log.get
authenticate
i18n.cache_purge
session.broadcast.reload
session.broadcast.restart
session.destroy
session.list
tpl.reload
ws.stats
HTTP API
Basics
action
action.kill
action.result
action.terminate
action.toggle
api_log.get
bus::<TARGET_SVC>::<METHOD>
item.check_access
item.state
item.state_history
item.state_log
log.get
login
logout
lvar.clear
lvar.decr
lvar.incr
lvar.reset
lvar.set
lvar.toggle
run
session.list_neighbors
session.set_readonly
set_password
test
x::<TARGET_SVC>::<METHOD>
Web socket methods
bye
ping
subscribe.log
subscribe.state
Events
InfluxDB state history
Setup
EAPI methods
state_history
state_log
Retention policies
Item state expiration service
Setup
Item state file writer (JSON/CSV)
Setup
EAPI methods
flush
rotate
Legacy (V3) replication service
Limitations
Protocol and configuration
Items
rpvt
Installing/updating
Setup
EAPI methods
node.list
node.reload
Local user/key authentication service
Setup
EAPI methods
auth.key
auth.user
key.deploy
key.destroy
key.export
key.get
key.get_config
key.list
key.regenerate
key.undeploy
password.hash
user.create_one_time
user.deploy
user.destroy
user.export
user.get_config
user.list
user.set_password
user.undeploy
Logic manager
Functionality
Rules
Cycles
Jobs
Setup
EAPI methods
action
cycle.get
cycle.list
cycle.reset
cycle.start
cycle.stop
job.get
job.list
kill
rule.get
rule.list
terminate
Mailer service
Setup
EAPI methods
send
Mirror service
Updating mirror files on the source node
Configuring mirror on target nodes
Setup
Modbus master controller
Setup
EAPI methods
action
kill
reg.get
reg.set
terminate
Modbus slave service
Setup
EAPI methods
MB
save
OTP 2nd-Factor authentication service
Setup
EAPI methods
otp.check
otp.destroy
Python macros controller
Installing/updating
Setup
EAPI methods
run
Replication service
Pub/sub security
Replicating untrusted nodes
Setup
EAPI methods
bus::<SVC_ID>::<METHOD>
node.append
node.deploy
node.export
node.get
node.get_config
node.list
node.mtest
node.reload
node.remove
node.test
node.undeploy
SNMP/UDP trap handler
SNMP Traps
Processing
Supported SNMP data types
Native traps
Updates
Actions
Encrypted/compressed traps
Setup
SQL databases state history
Setup
EAPI methods
state_history
state_log
Script runner controller
Commons
Update scripts
Action scripts
Current unit states
Setup
EAPI methods
action
kill
terminate
update
Shared lock service
Setup
EAPI methods
list
lock
status
unlock
Text-to-speech service
Installing/updating
Setup
EAPI methods
say
TwinCAT ADS bridge
Setup
EAPI methods
ping
read
su_read
su_write
su_write_read
write
write_read
TwinCAT ADS controller
Setup
EAPI methods
action
kill
terminate
var.get
var.set
var.set_bulk
Virtual controller
Setup
EAPI methods
action
get
list
set
Zero-failure replication service
Service roles
Collector
Replicator
Standalone
Recommendations
Untrusted nodes and zero-failure replication
Setup
EAPI methods
client.start
disable
enable
mailbox.delete_block
mailbox.fill
mailbox.get_block
mailbox.list_blocks
mailbox.rotate
process_dir
status
Interface development (HMI apps)
UI development
Basics
Web applications
Authentication
The model
Handling file uploads
Serving private data (PVT)
Loading files from PVT Server
Serving private data from EVA ICS Registry
Serving remote resources (RPVT)
Local network resources
Remote network resources
Serving structured data
Format conversion
Multi-language
Usage
Generating
Locale cache
Serving structured data from EVA ICS Registry
HMI file uploads
File upload form
How does it work
Errors
Additional form parameters
Processing macro
Security and file upload limits
Server Templates
Working with server templates
Template files
Template variables
Front-end server for HMI service
Example with NGINX
Mobile clients
Android
EVA ICS Control Center client
Building own client
Authentication
Apple iOS and other mobile platforms
Two-factor OTP authentication
System setup
Services
Excluding user accounts from OTP
Resetting OTP for a user account
User authentication
API
Authenticator programs
HMI application example
Automation
Inverted states
Pulling data
Actions
Logic manager
Functionality
Rules
Cycles
Jobs
Setup
EAPI methods
action
cycle.get
cycle.list
cycle.reset
cycle.start
cycle.stop
job.get
job.list
kill
rule.get
rule.list
terminate
Opener robots
Hardware schemas
AC circuit
RDC circuit
Software configuration
Python Logic Macros
Executing macros
Common principles of macros operation
System macros
On startup
On shutdown
Macros and security
Macros built-ins
Variables
Built-in functions
General functions
date - date/time
decrement_shared - decrements value of the shared variable
exit - finishes macro execution
get_directory - gets path to EVA ICS directory
increment_shared - increments value of the shared variable
instant - system monotonic timer value
ls - lists files in directory
mail - sends email message
ping - pings a remote host
rpc_call - performs a bus RPC call
run - executes another lmacro
set_shared - sets value of the shared variable
sha256sum - calculates SHA256 sum
shared - gets value of the shared variable
sleep - sleep(seconds)
system - execute the command in a subshell
time - current time in seconds since Epoch
Item functions
state - gets item state
status - gets item status
value - gets item value
LVar functions
clear - clears lvar status
decrement - decrements lvar value
increment - increments lvar value
is_expired - checks is lvar (timer) or item state expired/error
reset - resets lvar status
set - sets lvar value
toggle - toggles lvar status
Unit control
action - executes unit control action
action_toggle - executes an action to toggle unit status
is_busy - checks is the unit busy
kill - kills unit actions
result - gets action status
start - executes an action to a unit
stop - executes an action to stop a unit
terminate - terminates action execution
Locking functions
lock - acquires a lock
unlock - releases a lock
Logging
debug - log debug message
info - log info message
warning - log warning message
error - log error message
critical - log critical message
Software Development Kit (SDK)
Bindings and libraries
Rust
Python
EAPI commons
Calling EAPI methods
Type specifications
Error codes
EAPI Basics
Metadata format
Method info structure
Example
Communications
The core
ACL services
Core events
Raw events
Replication events
Actions
Logs
Auth
Security model and call ACLs
Initial payload
Controller service requirements
Events
Unit actions
Macros actions
Rust SDK examples
A simple service in Rust
The task
Creating a project
Preparing the system
Service code
Service template
Extending HMI with X calls in Rust
X call basics
Service example
Service template
API call example
Python SDK examples
A simple service in Python
SDK Installation
The task
Preparing the system
Service code
Service template
Extending HMI with X calls in Python
X call basics
Service example
Service template
API call example
Pub/Sub RPC and data replication
Common
Events
Tests
Announce/discovery/node state
Bulk events
RPC
Requests
Replies
Encryption
License
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
2. Grant of Copyright License.
3. Grant of Patent License.
4. Redistribution.
5. Submission of Contributions.
6. Trademarks.
7. Disclaimer of Warranty.
8. Limitation of Liability.
9. Accepting Warranty or Additional Liability.
Common Clause 1
EVA ICS v3
System Documentation
Installation
Officially supported platforms
Recommended for production setups
Tested and fully compatible
System Requirements
Using installer
Automatic and unattended
Customized
Manual installation
Preparing the system
Configuring MQTT broker
Cloud service provider as MQTT broker
Downloading and extracting EVA ICS distribution
Customizing Python virtual environment
Installing
Unicode
Updating
Using EVA Shell
Using system shell
With a pre-downloaded tarball
Intermediate versions
Moving to another folder
Setting up additional features
Watchdog
How to assign IDs to items
Cloud setup
Configuring LM and SFA as primary
Configuring UC and LM PLC as secondaries
Cloud manager
Cloud updates
Log file customization
Using NGINX as a frontend for SFA interface
External authentication
Using HTTP basic auth for EVA ICS authentication
Serving local mirror
Installing
Configuring mirror
Configuring secondary nodes
Removing
What's new
3.4.2 (2021-12-20)
Common
LM PLC
3.4.1 (2021-09-06)
Common
3.4.0 (2021-07-07)
Common
UC
LM PLC
SFA
Removed and deprecated
3.3.2 (2021-03-01)
Common
UC
LM PLC
SFA
3.3.1 (2020-08-26)
Common
UC
LM PLC
SFA
3.3.0 (2020-02-05)
Common
UC
LM
3.2.5 (2019-10-03)
Common
LM PLC
Cloud manager
3.2.4 (2019-07-30)
Common
UC
LM PLC
SFA
3.2.3 (2019-06-24)
Common
UC
LM PLC
SFA
3.2.2 (2019-05-21)
UC
LM PLC
SFA
3.2.1 (2019-04-16)
Common
3.2.0 (2019-04-02)
Common
UC
LM PLC
SFA
Deprecated (will be removed in 3.3.0)
3.1.1 (2018-10-22)
Common
UC
LM PLC
SFA
3.1.0 (2018-09-01)
Core
UC
LM PLC
SFA
API Client
Common
3.0.2 (2018-06-23)
Emergency interfaces
Core
UC
LM PLC
SFA
Common
3.0.1 (2018-02-21)
Core
UC
LM PLC
3.0.0 (2017-10-19)
Quick start
Installation
Task
Connecting the equipment
Defining logic
Building a very simple Human-Machine Interface
Security
General recommendations
Network design
Should I run it as root?
API recommendations
X-Real-IP HTTP header
Universal Controller API keys
Logic Manager API keys
SCADA Final Aggregator interfaces
Common API security recommendations
Developer mode
Registry database
Technology
Reasons
Configuration
Maintenance
Structure
SDK
Notification system
Event structure
Event subjects
state - item state change event
action - unit and macro action events
log - logged event
server - server events
Configuring the notification endpoints
Basic Configuration
Subscribing the notifier to events
MQTT (mqtt)
MQTT and state notifications
MQTT and action notifications
MQTT and log notifications
Setting up MQTT SSL
Setting up MQTT QoS
Use MQTT for updating item states
MQTT and unit actions
MQTT and bulk events
IoT Cloud setup
PSRT
UDP notifiers (LURP)
UDP frame format
DB Notifiers
RDBMS (SQLite, MySQL, PosgreSQL)
TimescaleDB
InfluxDB
Prometheus
3rd party Clouds
Google Cloud Platform IoT Core
File notifiers
HTTP Notifiers
JSON
NDJSON
JSON RPC
Basic authentication
Bulk (buffered) notifications
Notifier frame counters
Switching Pub/sub notifiers
Switching notifier type
Switching controller notifier path on primary nodes
Data pullers
Configuration
Execution
Data exchange
Basics
Health check
Data output
Logging
State reporting
Environment variables
Pulr
Command line interfaces
EVA command line apps
EVA shell
Universal Controller
Logic Manager
SCADA Final Aggregator
Registry management
Other
Device control apps
TCP/IP controlled relays
1-Wire (direct access via GPIO)
Authentication
API keys
Default and custom API keys
API key properties and ACL
Users
Combined ACLs
IaC and deployment
Deployment configuration file
Controllers
Items
Macros
Logical rules
Scheduled jobs
Cycles
How to deploy configuration
Deployment via CLI
Deployment during installation
Complex deployments
Devices
FAQ
Is this a “smart home”?
Is this IoT?
If the system is free and open, what is your interest?
Is EVA ICS complicated and difficult to learn?
Is it reliable?
How about security?
What programming languages can I use to write scripts and macros?
What if I have zero experience in programming?
What automation is all about? What are automation components?
Is EVA ICS IEC 61131-3 compliant?
Where is the interface? I want a web interface!
Why EVA ICS has 3 different APIs?
High-load environments
Tuning EVA ICS
Hardware
Benchmarks
Crash-free setup
Inventory configuration
Users and API keys
Item states
Logs
Suicide timeouts
Always exec
EVA ICS container
Permanent volumes
Configuration variables
Prepare / setup scripts
Updating
Enterprise extensions
EVA JS Framework WASM extension
Installation
Licensing
Limitations
PSRT Enterprise
Components
Universal Controller
UC POLL DELAY
config/uc/main registry key
Custom variables
Action queues
Startup and shutdown
Logic Manager
config/lm/main registry key
Custom variables
Connecting UC controllers
Macro execution queues
Startup and shutdown
SCADA Final Aggregator
config/sfa/main registry key
Custom variables
Connecting UC and LM PLC controllers
Interface
Startup and shutdown
Control and monitoring items
Common item parameters
Item layout
Unit
Status of the unit state
Value of the unit state
Units in EVA hive
Unit parameters
Sensor
Sensors in EVA hive
Sensor parameters
Validation of state value
Logic variable
LVars in EVA hive
Examples using LVars
LVar parameters
Simple logic
Multi-updates
Multi-updates in EVA hive
Multiupdate parameters
Device
Device example
Device limitations
Defaults
UC EI
Logging in
Navigation
System information
Units
Sensors
Log viewer
Disabling the interface
LM EI
Logging in
Navigation
System information
Logic variables
Macros
Decision rules
Log viewer
Disabling the interface
Equipment management
Cloud Manager
Dashboard
Controller management
Drivers
Structure
Logical to physical interfaces (LPI)
basic LPI
sensor LPI
ssp LPI
esensor LPI
multistep LPI
Loading driver with the chosen LPI
Physical interfaces (PHI)
Universal PHIs
Physical events
Drivers and multi updates
Testing PHIs and additional PHI commands
Item scripts
Item actions
Passive updates of item state
Multiupdate scripts
Commands
Modbus
Defining Modbus virtual port
Testing Modbus virtual port
Deleting Modbus virtual port
Generic Modbus drivers
Modbus slave
OWFS (1-Wire)
Setup
Automatic setup
Manual setup
Defining OWFS bus
Scanning OWFS for devices
Deleting OWFS bus
SNMP
Collecting and sending data
Connecting equipment with drivers
Universal processing
SNMP traps
Virtual items
Virtual drivers
Logic control
Logic control macros
Executing macros
Debugging macros
Macros configuration
Common principles of macros operation
System macros
On startup
On shutdown
Macros and security
Macros built-ins
Variables
Extending macros functionality
General functions
alias - create object alias
cmd - execute a remote system command
date - date/time
decrement_shared - decrement value of the shared variable
exit - finish macro execution
get_directory - get path to EVA ICS directory
increment_shared - increment value of the shared variable
ls - list files in directory
mail - send email message
open_newest - open newest file by mask
open_oldest - open oldest file by mask
ping - ping remote host
run - execute another macro
set_shared - set value of the shared variable
sha256sum - calculate SHA256 sum
shared - get value of the shared variable
sleep - pause operations
system - execute the command in a subshell
time - current time in seconds since Epoch
Item functions
history - get item state history
lvar_status - get lvar status
lvar_value - get lvar value
sensor_status - get sensor status
sensor_value - get sensor value
state - get item state
status - get item status
unit_nstatus - get unit nstatus
unit_nvalue - get unit nvalue
unit_status - get unit status
unit_value - get unit value
value - get item value
LVar functions
clear - reset lvar value
decrement - decrement lvar value
expires - set lvar expiration time
increment - increment lvar value
is_expired - is lvar (timer) expired
reset - reset lvar value
set - set lvar value
toggle - toggle lvar value
Unit control
action - unit control action
action_toggle - toggle unit status
is_busy - is unit busy
kill - kill unit actions
q_clean - clean action queue of unit
result - get action status
start - start unit
stop - stop unit
terminate - terminate action execution
Rule management
set_rule_prop - set rule prop
Scheduled job management
set_job_prop - set job prop
Devices
deploy_device - deploy device items from template
undeploy_device - undeploy device items config from template
update_device - update device items config from template
Logic cycles
get_cycle_info - get cycle information
is_cycle_running - get cycle running status
list_cycle_props - list cycle props
reset_cycle_stats - reset cycle stats
set_cycle_prop - set cycle prop
start_cycle - start cycle
stop_cycle - stop cycle
Locking functions
lock - acquire lock
unlock - release lock
Logging
debug - put debug message to log file
info - put info message to log file
warning - put warning message to log file
error - put error message to log file
critical - put critical message to log file
Decision-making matrix
Event analysis algorithms
Rule creation
Rule configuration
Tips for rule configuration
Scheduled jobs
Job creation
Job configuration
Job schedule interval
Logic cycles
Cycle creation
Cycle configuration
on_error macro
Performance
Cycles vs jobs
Interface development
UI basics
Development
Custom error pages
UI Favicon
SFA Templates
Template files
Template variables
Template functions
groups
state
api_call
get_aci
import_module
SFA PVT
Loading files from PVT Server
Receiving the file list
Receiving the newest and the oldest file
Image Processing
Disabling cache
Serving private data from EVA ICS Registry
Remote content
Serving structured data
Format conversion
Multi-language
Usage
Generating
Locale cache
Serving structured data from EVA ICS Registry
HMI file uploads
File upload form
How does it work
Errors
Additional form parameters
Processing macro
Security and file upload limits
API session tokens
Usage
Expiration
Read-only mode
Supervisors
API locks
Broadcast messages
CLI
Active Directory support
Automatic setup
Manual setup
System setup
EVA ICS controller configuration
Configuring multiple domains
Active Directory configuration
Usage
Authentication
Key prefixes
Mobile clients
Android
EVA ICS Control Center client
Building own client
Authentication
Apple iOS and other mobile platforms
Integrations
AKCP
Equipment supported
Setup
Performance tuning
Arduino
Receiving commands from EVA ICS
Sending data to EVA ICS UC
Setup EVA ICS UC
Setup Arduino
Amazon Web Services
AWS IoT as MQTT broker
During installation
After installation
Amazon Polly TTS
CCTV Cameras
Uploaded images
Image in local network
Image in 3rd party network
Image from password-protected camera
Video streams
Denkovi
Equipment supported
Relay setup
smartDEN IP-32IN setup
Performance tuning
Energenie EG-PM2-LAN
Setup
Ethernet/IP
Drivers
Logic
Setup
Automatic setup
Manual setup
Creating tag lists
Configuring
Elastic (ELK)
Prepare EVA ICS
Configure ELK
Google Cloud Platform
Google Cloud IoT Core
Google Cloud TTS
Grafana
Data
Controls
Custom UI
HMI Block UI
Custom resources
Philips Hue
Setup
LoRaWAN
Requirements
Hardware
Network server
Nanoleaf
Setup
Node-Red
Configuring EVA ICS
Collecting events in Node-Red
Processing events
Defining control templates
Controlling equipment
Deploying
Roboger
Servers supported
Setup
Preparing system
Preparing LM extension
Loading LM extension
Using in macros
Raspberry Pi
Hardware recommendations
Installation
GPIO
Sonoff
Setup
Text-to-Speech
Configure audio hardware
Obtain cloud provider key
Create TTS configuration
Install TTSBroker Python module
Load tts macro extension
Use loaded function
Combine with macro
UniPi
Hardware recommendations
Installation
Local
Remote
1-Wire
Inputs/outputs
UPnP
EVA ICS controllers
Notes
Request example
Response
3rd-party equipment
Xiaomi Yeelight
Setup
API
Common methods
API basics
JSON RPC
Direct API
General functions
test - test API/key and get system info
save - save database and runtime configuration
check_item_access - check access to the particular item
clear_lang_cache - Clear language cache
cmd - execute a remote system command
install_pkg - install a package
list_plugins - get list of loaded core plugins
set_debug - switch debugging mode
shutdown_core - shutdown the controller
login - log in and get authentication token
logout - log out and purge the authentication token
set_token_readonly - Set token read-only
get_neighbor_clients - Get neighbor clients
CVARs
get_cvar - get the value of user-defined variable
set_cvar - set the value of user-defined variable
Locking functions
get_lock - get lock status
lock - acquire lock
unlock - release lock
Logging
log - put message to log file
log_debug - put debug message to log file
log_info - put info message to log file
log_warning - put warning message to log file
log_error - put error message to log file
log_critical - put critical message to log file
log_get - get records from the controller log
log_rotate - rotate log file
api_log_get - get API call log
API keys
create_key - create API key
destroy_key - delete API key
list_key_props - list API key permissions
list_keys - list API keys
regenerate_key - regenerate API key
set_key_prop - set API key permissions
User accounts
create_user - create user account
destroy_user - delete user account
get_user - get user account info
list_users - list user accounts
set_user_key - assign API key to user
set_user_password - set user password
list_tokens - List active session tokens
drop_tokens - Drop session token(s)
Notifier management
disable_notifier - disable notifier
enable_notifier - enable notifier
get_notifier - get notifier configuration
list_notifiers - list notifiers
restart_notifier - restart notifier
File management
file_put - put file to runtime folder
file_set_exec - set file exec permission
file_get - get file contents from runtime folder
file_unlink - delete file from runtime folder
Core scripts
list_corescript_mqtt_topics - List MQTT topics core scripts react on
reload_corescripts - Reload core scripts if some was added or deleted
subscribe_corescripts_mqtt - Subscribe core scripts to MQTT topic
unsubscribe_corescripts_mqtt - Unsubscribe core scripts from MQTT topic
Registry management
registry_safe_purge - Safely purge registry database
UC API
API basics
JSON RPC
Direct API
Item functions
action - unit control action
action_toggle - toggle unit status
disable_actions - disable unit actions
enable_actions - enable unit actions
groups - get item group list
kill - kill unit actions
q_clean - clean action queue of unit
result - get action status
start_item_maintenance - start item maintenance mode
state - get item state
state_history - get item state history
state_log - get item state log
stop_item_maintenance - stop item maintenance mode
terminate - terminate action execution
update - update the status and value of the item
Item management
list - list items
create - create new item
create_mu - create multi-update
create_sensor - create new sensor
create_unit - create new unit
destroy - delete item or group
get_config - get item configuration
list_props - list item properties
save_config - save item configuration
set_prop - set item property
clone - clone item
clone_group - clone group
1-Wire bus via OWFS
create_owfs_bus - create OWFS bus
destroy_owfs_bus - delete OWFS bus
get_owfs_bus - get OWFS bus configuration
list_owfs_buses - list OWFS buses
scan_owfs_bus - scan OWFS bus
test_owfs_bus - test OWFS bus
Modbus ports
create_modbus_port - create virtual Modbus port
destroy_modbus_port - delete virtual Modbus port
get_modbus_port - get virtual Modbus port configuration
list_modbus_ports - list virtual Modbus ports
read_modbus_port - read Modbus register(s) from remote slave
test_modbus_port - test virtual Modbus port
write_modbus_port - write Modbus register(s) to remote slave
get_modbus_slave_data - get Modbus slave data
Physical interfaces (PHIs)
exec_phi - execute additional PHI commands
get_phi - get loaded PHI information
get_phi_ports - get list of PHI ports
list_phi - list loaded PHIs
list_phi_mods - get list of available PHI modules
load_phi - load PHI module
modhelp_phi - get PHI usage help
modinfo_phi - get PHI module info
phi_discover - discover installed equipment supported by PHI module
push_phi_state - push state to PHI module
put_phi_mod - upload PHI module
set_phi_prop - set PHI configuration property
test_phi - test PHI
unlink_phi_mod - delete PHI module file
unload_phi - unload PHI
LPI and drivers
assign_driver - assign driver to item
get_driver - get loaded driver information
list_drivers - list loaded drivers
list_lpi_mods - get list of available LPI modules
load_driver - load a driver
modhelp_lpi - get LPI usage help
modinfo_lpi - get LPI module info
set_driver_prop - set driver (LPI) configuration property
unload_driver - unload driver
Data pullers
create_datapuller - create data puller
destroy_datapuller - destroy data puller
get_datapuller - Get data puller
list_datapullers - List data pullers
restart_datapuller - Restart data puller
start_datapuller - Start data puller
stop_datapuller - Stop data puller
Devices
deploy_device - deploy device items from template
list_device_tpl - list device templates
undeploy_device - delete device items
update_device - update device items
UC RESTful API
RESTful API basics
Requests
Responses
Long API calls
General functions
test API/key and get system info
save database and runtime configuration
Clear language cache
check access to the particular item
execute a remote system command
get list of loaded core plugins
install a package
shutdown the controller
switch debugging mode
log in and get authentication token
log out and purge the authentication token
Set token read-only
Get neighbor clients
Item functions
clean action queue of unit
disable unit actions
enable unit actions
get action status
get item group list
get item state
get item state history
get item state log
kill unit actions
start item maintenance mode
stop item maintenance mode
terminate action execution
toggle unit status
unit control action
update the status and value of the item
Item management
list items
create multi-update
create new sensor
create new unit
get item configuration
list item properties
save item configuration
set item property
clone group
clone item
1-Wire bus via OWFS
create OWFS bus
delete OWFS bus
get OWFS bus configuration
list OWFS buses
scan OWFS bus
test OWFS bus
Modbus ports
create virtual Modbus port
delete virtual Modbus port
get virtual Modbus port configuration
list virtual Modbus ports
read Modbus register(s) from remote slave
test virtual Modbus port
write Modbus register(s) to remote slave
get Modbus slave data
Physical interfaces (PHIs)
delete PHI module file
discover installed equipment supported by PHI module
execute additional PHI commands
get PHI module info
get PHI usage help
get list of PHI ports
get list of available PHI modules
get loaded PHI information
list loaded PHIs
load PHI module
push state to PHI module
set PHI configuration property
test PHI
unload PHI
upload PHI module
LPI and drivers
assign driver to item
get LPI module info
get LPI usage help
get list of available LPI modules
get loaded driver information
list loaded drivers
load a driver
set driver (LPI) configuration property
unload driver
Data pullers
Get data puller
List data pullers
Restart data puller
Start data puller
Stop data puller
create data puller
destroy data puller
Devices
delete device items
deploy device items from template
list device templates
update device items
CVARs
get the value of user-defined variable
set the value of user-defined variable
Locking functions
acquire lock
get lock status
release lock
Logging
put message to log file
put debug message to log file
put info message to log file
put warning message to log file
put error message to log file
put critical message to log file
get records from the controller log
rotate log file
get API call log
API keys
create API key
delete API key
list API key permissions
list API keys
regenerate API key
set API key permissions
User accounts
assign API key to user
create user account
delete user account
get user account info
list user accounts
set user password
List active session tokens
Drop session token(s)
Notifier management
disable notifier
enable notifier
get notifier configuration
list notifiers
restart notifier
File management
put file to runtime folder
set file exec permission
delete file from runtime folder
get file contents from runtime folder
Core scripts
List MQTT topics core scripts react on
Reload core scripts if some was added or deleted
Subscribe core scripts to MQTT topic
Unsubscribe core scripts from MQTT topic
Registry management
Safely purge registry database
UC UDP API
Basics
Batch commands
Encryption and authentication
Custom packets
LM API
API basics
JSON RPC
Direct API
LVar functions
clear - clear lvar state
decrement - decrement lvar value
groups - get item group list
increment - increment lvar value
reset - reset lvar state
set - set lvar state
state - get lvar state
state_history - get item state history
state_log - get item state log
toggle - toggle lvar state
LVar management
list - list lvars
create - alias for create_lvar
create_lvar - create lvar
destroy - alias for destroy_lvar
destroy_lvar - delete lvar
get_config - get lvar configuration
list_props - list lvar properties
save_config - save lvar configuration
set_prop - set lvar property
Decision matrix rules
create_rule - create new rule
destroy_rule - delete rule
get_rule - get rule information
list_rule_props - list rule properties
list_rules - get rules list
set_rule_prop - set rule parameters
Logic cycles
create_cycle - create new cycle
destroy_cycle - delete cycle
get_cycle - get cycle information
groups_cycle - get cycle groups list
list_cycle_props - get cycle configuration properties
list_cycles - get cycle list
reset_cycle_stats - reset cycle statistic
set_cycle_prop - set cycle property
start_cycle - start cycle
stop_cycle - stop cycle
Logic macros
create_macro - create new macro
destroy_macro - delete macro
get_macro - get macro information
groups_macro - get macro groups list
list_macro_props - get macro configuration properties
list_macros - get macro list
result - macro execution result
run - execute macro
set_macro_prop - set macro configuration property
Macro extensions
get_ext - get loaded extension information
list_ext - get list of available macro extensions
list_ext_mods - get list of available extension modules
load_ext - load extension module
modhelp_ext - get extension usage help
modinfo_ext - get extension module info
set_ext_prop - set extension configuration property
unload_ext - unload macro extension
Remote controllers
append_controller - connect remote UC via HTTP
disable_controller - disable connected controller
enable_controller - enable connected controller
get_controller - get connected controller information
list_controller_props - get controller connection parameters
list_controllers - get controllers list
list_remote - get a list of items from connected UCs
reload_controller - reload controller
remove_controller - disconnect controller
set_controller_prop - set controller connection parameters
test_controller - test connection to remote controller
upnp_rescan_controllers - rescan controllers via UPnP
Scheduled jobs
create_job - create new job
destroy_job - delete job
get_job - get job information
list_job_props - list job properties
list_jobs - get jobs list
set_job_prop - set job parameters
LM RESTful API
RESTful API basics
Requests
Responses
Long API calls
General functions
test API/key and get system info
save database and runtime configuration
Clear language cache
check access to the particular item
execute a remote system command
get list of loaded core plugins
install a package
shutdown the controller
switch debugging mode
log in and get authentication token
log out and purge the authentication token
Set token read-only
Get neighbor clients
LVar functions
clear lvar state
decrement lvar value
get item group list
get item state history
get item state log
get lvar state
increment lvar value
reset lvar state
set lvar state
toggle lvar state
LVar management
list lvars
create lvar
delete lvar
get lvar configuration
list lvar properties
save lvar configuration
set lvar property
Decision matrix rules
create new rule
delete rule
get rule information
get rules list
list rule properties
set rule parameters
Logic cycles
create new cycle
delete cycle
get cycle configuration properties
get cycle groups list
get cycle information
get cycle list
reset cycle statistic
set cycle property
start cycle
stop cycle
Logic macros
create new macro
delete macro
execute macro
get macro configuration properties
get macro groups list
get macro information
get macro list
macro execution result
set macro configuration property
Macro extensions
get extension module info
get extension usage help
get list of available extension modules
get list of available macro extensions
get loaded extension information
load extension module
set extension configuration property
unload macro extension
Remote controllers
connect remote UC via HTTP
disable connected controller
disconnect controller
enable connected controller
get a list of items from connected UCs
get connected controller information
get controller connection parameters
get controllers list
reload controller
rescan controllers via UPnP
set controller connection parameters
test connection to remote controller
Scheduled jobs
create new job
delete job
get job information
get jobs list
list job properties
set job parameters
CVARs
get the value of user-defined variable
set the value of user-defined variable
Locking functions
acquire lock
get lock status
release lock
Logging
put message to log file
put debug message to log file
put info message to log file
put warning message to log file
put error message to log file
put critical message to log file
get records from the controller log
rotate log file
get API call log
API keys
create API key
delete API key
list API key permissions
list API keys
regenerate API key
set API key permissions
User accounts
assign API key to user
create user account
delete user account
get user account info
list user accounts
set user password
List active session tokens
Drop session token(s)
Notifier management
disable notifier
enable notifier
get notifier configuration
list notifiers
restart notifier
File management
put file to runtime folder
set file exec permission
delete file from runtime folder
get file contents from runtime folder
Core scripts
List MQTT topics core scripts react on
Reload core scripts if some was added or deleted
Subscribe core scripts to MQTT topic
Unsubscribe core scripts from MQTT topic
Registry management
Safely purge registry database
SFA API
API basics
JSON RPC
Direct API
Item functions
action - create unit control action
action_toggle - toggle unit status
disable_actions - disable unit actions
enable_actions - enable unit actions
groups - get item group list
kill - kill unit actions
q_clean - clean action queue of unit
result - get action status or macro run result
state - get item state
state_history - get item state history
state_log - get item state log
terminate - terminate action execution
clear - clear lvar state
decrement - decrement lvar value
increment - increment lvar value
reset - reset lvar state
set - set lvar state
toggle - clear lvar state
Logic cycles
get_cycle - get cycle information
groups_cycle - get cycle groups list
list_cycles - get cycle list
Logic macros
groups_macro - get macro groups list
list_macros - get macro list
run - execute macro
Supervisor functions
supervisor_lock - set supervisor API lock
supervisor_unlock - clear supervisor API lock
supervisor_message - send broadcast message
Remote controllers
append_controller - connect remote controller via HTTP
disable_controller - disable connected controller
enable_controller - enable connected controller
get_controller - get connected controller information
list_controller_props - get controller connection parameters
list_controllers - get controllers list
list_remote - get a list of items from connected controllers
matest_controller - test management API connection to remote controller
reload_controller - reload controller
remove_controller - disconnect controller
set_controller_prop - set controller connection parameters
test_controller - test connection to remote controller
upnp_rescan_controllers - rescan controllers via UPnP
Connected clients
notify_restart - notify connected clients about server restart
reload_clients - ask connected clients to reload
SFA RESTful API
RESTful API basics
Requests
Responses
Long API calls
General functions
test API/key and get system info
save database and runtime configuration
Clear language cache
check access to the particular item
execute a remote system command
get list of loaded core plugins
install a package
shutdown the controller
switch debugging mode
log in and get authentication token
log out and purge the authentication token
Set token read-only
Get neighbor clients
Item functions
clean action queue of unit
create unit control action
disable unit actions
enable unit actions
get action status or macro run result
get item group list
get item state
get item state history
get item state log
kill unit actions
terminate action execution
toggle unit status
clear lvar state
clear lvar state
decrement lvar value
increment lvar value
reset lvar state
set lvar state
Logic cycles
get cycle groups list
get cycle information
get cycle list
Logic macros
execute macro
get macro groups list
get macro list
Supervisor functions
set supervisor API lock
clear supervisor API lock
send broadcast message
Remote controllers
connect remote controller via HTTP
disable connected controller
disconnect controller
enable connected controller
get a list of items from connected controllers
get connected controller information
get controller connection parameters
get controllers list
reload controller
rescan controllers via UPnP
set controller connection parameters
test connection to remote controller
test management API connection to remote controller
Connected clients
ask connected clients to reload
notify connected clients about server restart
CVARs
get the value of user-defined variable
set the value of user-defined variable
Locking functions
acquire lock
get lock status
release lock
Logging
put message to log file
put debug message to log file
put info message to log file
put warning message to log file
put error message to log file
put critical message to log file
get records from the controller log
rotate log file
get API call log
API keys
create API key
delete API key
list API key permissions
list API keys
regenerate API key
set API key permissions
User accounts
assign API key to user
create user account
delete user account
get user account info
list user accounts
set user password
List active session tokens
Drop session token(s)
Notifier management
disable notifier
enable notifier
get notifier configuration
list notifiers
restart notifier
File management
put file to runtime folder
set file exec permission
delete file from runtime folder
get file contents from runtime folder
Core scripts
List MQTT topics core scripts react on
Reload core scripts if some was added or deleted
Subscribe core scripts to MQTT topic
Unsubscribe core scripts from MQTT topic
Registry management
Safely purge registry database
API Clients
EVA JS Framework
API client for Python
API classes for Python
API initialization
API function call
API result codes
JSON RPC API client
Installing
Usage example
API result codes
Extension development
Extending HOWTO
Tips and tricks
I/O
Logic
Plug-ins
Extensions as packages
Core scripts
What are EVA ICS core scripts
What are core scripts for
Core script globals and functions
Core script events
State event
API event
RPC event
Periodic event
MQTT event
System event
Setting up packages
Logging
Creating and managing core script files
Code examples
Physical interfaces for drivers
Required variables in a header
PHI info
PHI system info
PHI help
Classes and modules
Constructor
Primary methods
Parent methods
Optional methods
get_phi_ports
discover
Config validation
Working with unit values
Handling timeouts
Handling events
Incoming events
State push
SNMP traps
Schedule updates
Working with I2C/SMBus
Working with Modbus
Working with Ethernet/IP
Working with Modbus slave memory space
Working with 1-Wire via OWFS
Working with SNMP
Performing get/set calls
SNMP MIBs
Working with MQTT
Working with UDP API
Discovering SSDP hardware
Shared namespaces
Asynchronous I/O
Exceptions
Testing
DriverAPI resources
Logic macro extensions
Loading macro extension
Extension functions
Included extensions
Developing your own extension
Required variables in a header
Configuration variable
Exported functions
Classes and modules
Constructor
Persistent data
Exceptions
Config validation
Testing
Core plug-ins
Guide by example
Resources
Packages
Package format
Setting up packages
Setup file format
Keeping setup core script after install
Installing additional Python modules
Manipulating with configuration files
Advanced development
Framework development HOWTO
Sessions
API calls
Web socket sessions
Item events
Log events
Special server events
Web socket heartbeat
Global heartbeat
Item state replication
Basics
State event handling
Processing of item states
Actions
Timers
PHIs
EVA ICS v3 Troubleshooting Knowledge Base
KB00001: SFA or LM PLC with secondaries connected keeps restarting
Problem
Solution
KB00002: Install / venv rebuild fails on Ubuntu 18.04 LTS / Debian 10 / RHEL 8
Problem
Solution
KB00003: OWFS feature setup fails on RedHat Enterprise Linux 8/Centos 8
Problem
Solution
KB00004: Wrong items deployed on a secondary UC or LM PLC node
Problem
Solution
Items can be filtered by group
Item can not be filtered by group
KB00005: Timeouts during long API calls, API calls are repeated multiple times
Problem
Solution
KB00006: Install fails on Fedora 33
Problem
Solution
KB00007: InfluxDB data frames / charts begin with zero or null values
Problem
Solution
KB00008: Customizing EVA ICS updates
Problem
Solution
Customizing the mirror
Forcing “eva update” to download and install specified version
Manually applying the update
KB00009: Difference between “-s” and “-u” Cloud deploy options
Problem
Solution
KB00010: Item states are not synchronized in real-time via MQTT
Problem
Solution
Step 1
Step 2
Step 3
KB00011: Renaming EVA ICS nodes
Problem
Solution
EVA ICS 3.4.0 and above
EVA ICS 3.3.2 and below
KB00012: Running EVA ICS under restricted users
Problem
Solution
Detailed step-by-step guide
Automated solution
Starting EVA ICS during the system startup
KB00013: Stop EVA ICS when Registry DB is not accessible
Problem
Solution
KB00014: Unable to start update after a one failed
Problem
Solution
KB00015: A component fails to start after crash / unsuccessful upgrade etc.
Problem
Solution
KB00016: Active directory feature setup fails on Debian 11
Problem
Solution
KB00017: Dealing with startup timeouts on high-loaded nodes
Problem
Solution
KB00018: Preventing accidental shutdowns
Problem
Solution
EVA ICS v3 License
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
2. Grant of Copyright License.
3. Grant of Patent License.
4. Redistribution.
5. Submission of Contributions.
6. Trademarks.
7. Disclaimer of Warranty.
8. Limitation of Liability.
9. Accepting Warranty or Additional Liability.
Common Clause 1
HMI Block UI
Installation
Installing UI App
EVA ICS v4
Package (EVA ICS v3, 3.3.2+)
Creating UI pages
Dashboard page
Global variables
title
url
default-login
motd
info-level
buttons
Simple button
Button with menu
Button with a slider
data
cameras
control-blocks
data-blocks
layout
layout-compact
Actions
Action types
action_params
Simple page
Sensors page
Global variables
main-page
charts
Single-item chart
Multiple-item chart
Chart with multiple timeframes
Multiple items and multiple timeframes
Legend
layout
Chart options
Navigation
Overriding and embedding
$eva.hmi.after_draw
$eva.hmi.error
$eva.hmi.format_camera_src
$eva.hmi.format_chart_config
$eva.hmi.prepare_layout
$eva.hmi.top_bar
Overriding logo
Embedding
Icons (default theme)
Data icons
State icons
Special state icons
circle
music
star
JavaScript Framework for EVA ICS
Installation
For web browsers
For Node.js
Examples
Initialization
Configuration
Watching states and performing API calls
Calling API methods
Bulk API calls
Setting intervals
Handling events
Class variables
API and Authentication
Item processing, special
Read-only
Framework functions
Server custom variables (EVA ICS v3)
QR code for evaHI-based apps
QR code for OTP
Multi-page interfaces, external authentication
Primary page
Secondary pages
Authentication with front-end server
PSRT - industrial Pub/Sub for WAN
PSRT server and clients
Source code
Installation (free version)
Building from source
Configuration files
Troubleshooting
Authentication
Statistical data
Overview (web interface / API)
Most active topics
UDP encryption
Enterprise version
PSRT clusters
Cluster nodes
Node configuration
Usage
PSRT protocol specifications
Common
Control socket
Greetings
Subscribe
Unsubscribe
Publish
Publish if subscribed (replicate)
Bye
Data socket
Greetings
Keep-alive pings
Message push
Bye
UDP
Plain
Encrypted
Security
Functionality
Native packages
Supported distributions
OpenSSL versions
Universal packages
OpenSSL versions
FIPS 140
BUS/RT - IPC bus
IPC documentation
Bindings
Inter-process communication
Client registration
Broadcasts
Topics
QoS
Security and reliability model
Rust crate features
Performance tips
Broker
Broker API
Stand-alone broker server
Embedded broker
Security model
Protocol specifications
Greetings
Outgoing frames
Pings (keep-alive frames)
Incoming frames
Acknowledgements
Messages
Topic publications
RPC layer specifications
Payload bytes
Requests
Responses
Error codes
RPC Cursors
When to use cursors
Technical background
Server example
Client example
Secondary clients and blocking RPC
Event handlers and RPC
The problem
Solutions
Secondary clients
Creating secondary clients in Rust
Internal
IPC
Handling frames
Creating secondary clients in other languages
Commons
Sharing terminal sessions
Setup
Automatic
Manual
Usage
Security
Issues
The Trademarks
The Trademark Supervisors
Usage Conditions
Common conditions
Direct usage
Indirect usage
Correct examples
Incorrect examples
Fair usage
BMA InfoSys
EVA ICS v4
Software Development Kit (SDK)
Rust SDK examples
Rust SDK examples
A simple service in Rust
Extending HMI with X calls in Rust
Read the Docs
v: actual
Versions
actual
Downloads
html
On Read the Docs
Project Home
Builds