Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
en:sw:02-apis:01-evok [2018/12/04 14:14]
tomas_knot ↷ Links adapted because of a move operation
en:sw:02-apis:01-evok [2020/03/10 08:48]
jan_kozak
Line 1: Line 1:
 ======%hide Evok ====== ======%hide Evok ======
 +~~NOTOC~~
 +
 {{ :​en:​sw:​evok_1_.png?​400&​nolink |}} {{ :​en:​sw:​evok_1_.png?​400&​nolink |}}
  
-The EVOK is our Apache-licensed open-source application programming interface (API), serving for 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 our Apache-licensed open-source application programming interface (API), serving for remote access to our PLC units. It is a simple software to make access to hardware as simple as possible without any extensive programming.
  
-The software can be downloaded via its [[https://​github.com/​UniPiTechnology/​evok|GitHub repository]]. Here, the user can also find documentation,​ installation instructions and a technical ​manu +The software can be downloaded via its [[https://​github.com/​UniPiTechnology/​evok|GitHub repository]]. Here, the user can also find documentation,​ installation instructions and a technical ​manual
-al+
  
 ==== Basic features ==== ==== Basic features ====
  
-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. +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. ​The resulting ​software is so easy to use, even an absolute beginner can use it. 
  
-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.+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.
  
 Support for [[en:​sw:​02-sdks:​02-modbus-tcp|TCP-Modbus]] interface and [[en:​sw:​02-sdks:​04-sysfs|SysFS]] is also included, along with a basic Wi-Fi functionality. Support for [[en:​sw:​02-sdks:​02-modbus-tcp|TCP-Modbus]] interface and [[en:​sw:​02-sdks:​04-sysfs|SysFS]] is also included, along with a basic Wi-Fi functionality.
Line 18: Line 19:
  
 ==== Protocols used ==== ==== Protocols used ====
-**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.+**REST** is a type of API design, which is based on endpoint operations ​under 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.+**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 protocolhowever, 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.+**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. **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.
Line 28: Line 29:
 **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. **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 protocol which uses JSON objects to remotely invoke scripting functions. This allows the integration of remote functions, without the need to create transport objects.+**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.
  
 ==== Full EVOK technical scheme ==== ==== Full EVOK technical scheme ====