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 Both sides next revision
en:sw:02-apis:01-evok [2020/01/23 15:28]
avsetula
en:sw:02-apis:01-evok [2020/03/10 08:48]
jan_kozak
Line 4: Line 4:
 {{ :​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 20: 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 30: 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 ====