EVOK

Software documentation

EVOK is a free basic control software for UniPi.

What is the EVOK 2.0?

The EVOK is our Apache-licensed open-source application programming interface (API), serving for a remote access to our PLC units. It is a simple software to make the access to hardware as simple as possible without any extensive programming. The EVOK is equipped with six protocols (or unified methods) serving as a replacement of the need to write custom code - that means the user can use almost any programming language. The API itself then serves as a layer between the hardware and the EVOK web-based control interface. Resulting software is so easy to use, even an absolute beginner can use it.

Simplified EVOK scheme

Protocols used

As mentioned above, EVOK contains six separate protocols, which should run on the vast majority of available hardware and software. They are the following:

  • REST WebForms
  • Bulk JSON
  • REST JSON
  • SOAP
  • WebSocket
  • JSON-RPC

REST is a type of API design, which is based on endpoint operations in accordance with the HTTP specification. The WebForm interface provides native web-based access to our API, based on the same communication principle as plain HTML forms.

Bulk JSON protocol is designed to send a series of commands at once, achieving much lower latency than using separate TCP connections. Without the use of this protocol, sending e.g. 20 commands -each with 25 millisecond latency- would take up to 0.5 s. That would make the device unsuitable for use in time-critical applications, such as for lighting switches. With the bulk protocol however, the user can send a large series of commands such as this, with total latency (for the example given) not exceeding 30 milliseconds.

REST JSON is very similar to REST WebForms. The difference is that it uses the JSON (JavaScript Object Notation) file format, which transmits attribute-value pairs, along with array certain array data types, in the form of JavaScripts data objects. This makes is much easier to process in JavaScript.

SOAP (Simple Object Access Protocol) is a protocol based on XML, which utilises a pre-defined access interface called WSDL, making it simpler to parse and allowing easier integration of EVOK into existing systems.

WebSocket is a independent communication protocol, which allows creating a full-duplex (i.e. two-way, simultaneous data transfer) communication over a standard TCP connection. It can be used in machine-to-user as well as machine-to-machine applications.

JSON-RPC is a designation for protocol which uses JSON objects to remotely invoke scripting functions. This allows the integration of remote functions, without the need to create transport objects.

Functionality

EVOK gives the user an option to control basic operations via a simple web interface, such as switching I/O modules, monitoring the system state, carrying out measurements etc. For more complex operations (such as specific system / behaviour programming), the user has to use a suitable external application. Such an application would then use EVOK as a communication layer between the I/O modules and itself.

Included is a support for a TCP-Modbus interface. All the user needs to do is to create a custom Modbus map, as described in our online documentation. EVOK will then provide a comfortable, easy-to-use programming environment for accessing it, with an option to use JavaScript, which is easy to use even with basic programming skills.

Alongside the above EVOK includes basic Wi-Fi functionality. It can be used to provide a wireless access point (default APN: UNIPICONFIG, default password: "UniPi.technology"). Included is also Ethernet-internet bridge support.

User interface

Here, you can find a showcase of a typical EVOK user interface. This particular interface was written in JavaScript, but any other programming language can be used to create a custom interface. The official documentation (link provided below) also offers the option to generate sample code and detailed description of all I/O modules. Worth mentioning is also the fact, the documentation is verified, eg. the user can rely on EVOK executing only commands included in the code.

The interface is set to port 88 by default (eg. in a state ported directly from the SD card), the user can change it afterwards. After the startup, the interface is invoked with Inputs, Outputs, System and Configuration tabs accessible.

System tab

Here, the user can see all necessary information about the unit itself. Visible is the device name, serial number and RS485 serial port settings. This tab also contains a WatchDog firmware function setting tool. This function monitors a communication between firmware processors and the unit's CPU and if no communication is transmitted in a given time period, the function automatically restarts the device and reverts all settings back to default. WatchDog thus serves as a backup in case of hardware malfunction or software issues.

Configuration tab

Here, the user has the option to change I/O modules names or to adjust their settings. Parity of serial ports can be switched here, along with setting up analog input/output modes - analog inputs can measure voltage or current, while analog outputs of the 1st group support resistance measurement.

Displayed is also a number of devices - with this feature, the user can check if all control unit components are connected and operational. The number represents all I/O groups, with their number differing across the model range - eg. S-series has one I/O group, M-series has two groups  and L-series has three.

Configuration menu also allows the user to set custom LED diodes. Each Neuron unit is equipped with four "free" LED diodes (labelled as X1 through X4), which can be used as custom state indicators.

Any settings changes have to be saved via Save current state to flash button - otherwise, changes are lost when tabs are switched.

Outputs  tab allows to switch individual outputs and LED indicator and to set voltage or current range for analog outputs. Inputs tab then serves for displaying the state of input modules and the impulse counter status.

Full EVOK scheme

Links