14/11/2017 EVOK 2.0 is our Apache-licensed open-source application programming interface (API), which serves to provide remote access to our PLC units.
It is a software which lets you access our hardware as easily as possible, without extensive programming work. EVOK is equipped with six protocols (or methods for accessing it), which replace the need to write much custom code – and also mean that the user can employ almost any programming language. The API itself then serves as a layer between the hardware and EVOK-based control interface. The API is designed to be easy to use, even for a relative beginner.
What’s under the hood?
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 it 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 an 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 the protocol which uses JSON objects to remotely invoke scripting functions. This allows the integration of remote functions, without the need to create transport objects.
What can EVOK do for you?
As far as practical use is concerned, EVOK allows you to directly control all of our I/O modules along with all of their settings. The API also gives access to firmware settings for the control units itself, namely DirectSwitch functionality, digital input counters, PWM functionality, etc. Included is also support for configuration of behaviour on boot – e.g. it is possible to set the default state of I/O modules to "ON" value.
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.
We have also included 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.
Thanks to our simple web interface EVOK provides easy access to configuration of our Neuron units and their I/O functionality. Thanks to the wide range of supported programming languages, each user can create their own web interface as they desire.
In our online GitHub repository, you can find download links, installation instructions, technical manuals and other necessary information. We also provide a fully interactive online documentation interface, which is divided into tabs containing a description of the individual commands, their use and a simple example response. You might also find useful our "Try it out" option, allowing you to create a snippet of code in any of the numbers of available programming languages, which (with a few minor edits) you can then simply paste into your program.
Try it for yourself and see how easy EVOK is to work with!
For more info, check our product article about EVOK